course no-101319 programming languages theory & practice first semester 2008 - 2009 ittihad...
TRANSCRIPT
Course No-101319Programming Languages Theory & Practice
First Semester 2008 - 2009
ITTIHAD UNIVERSITY Computer Science DepartmentInstructor: Dr. Rafiqul Zaman Khan , Ph.D
First Semester 2008 - 2009
ITTIHAD UNIVERSITY Computer Science DepartmentInstructor: Dr. Rafiqul Zaman Khan , Ph.D
Handout-2 Preliminaries
Reasons to study concepts of PLs
• Increased capacity to express programming concepts
• Improved background for choosing appropriate languages
• Increased ability to learn new languages• Understanding the significance of
implementation• Increased ability to design new languages• Overall advancement of computing
Programming Domains
• Scientific applications
• Business applications
• Artificial intelligence
• Systems programming
• Scripting languages
• Special purpose languages
Programming Language Definition
• Language Syntax– Grammar and punctuation.– Superset of legal languages.
• Language Semantics– What the syntax means.– Restricts syntactically correct programs.
Programming Paradigms
• Imperative – Program = Algorithms + Data
• Functional– Program = Function o Function
• Object-Oriented– Program = Objects + Messages
• Logic– Program = Facts + Rules
• Special-purpose
Imperative Programming
• Oldest style of Programming
• Algorithm is expressed as a sequence of instructions, e.g. assignment, looping, …
• For example, assembly, Fortran, Algol, Pascal, and C.
Example in C
• Finding the greatest common divisor between two elements#include<stdio.h> void main() { int x,y; printf("enter any two numbers"); scanf("%d %d",&x,&y); if(x<0)x=-x; if(y<0)y=-y; while(x!=y) x>y?(x=x-y):(y=y-x); printf("gcd of the numbers is %d",x); }
Functional Programming
• Comes from traditional Mathematics.• Description of computation is based on the
evaluation of functions or the application of functions to known values.
• No notion of variables or assignment to variables!
• Loops are replaced by recursion!• For example Lisp, Scheme, ML, Haskell.
Example in Scheme
• Finding the greatest common divisor between two elements
(define (gcd u v) (if (= v 0) u (gcd v (remainder u v))))
Object Oriented Programming
• Based on class and inheritance
• Instead of applying global functions to variables, “methods” associated with instances are invoked (message passing)
• For example, C++, Java, Smalltalk, …
Example in C++
• // gcd.cpp - long integer greatest common divisor
• class BadGcdArgumentsException{ };
• long gcd(long a,long b) // Euclidean algorithm - returns 0 // if a and b are both 0. • { long r; // First make sure everything is >= 0. • if(a < 0) a = -a; • if(b < 0) b = -b; • // If both arguments are 0, throw an exception. • if(a == 0 && b == 0) • throw BadGcdArgumentsException(); • // Otherwise the gcd of 0 and x is x. • if(a == 0) return(b); if(b == 0) return(a); • // Keep dividing until we get a zero remainder. The last • // nonzero remainder is the gcd. • while(b > 0) {• r = a % b; • a = b; • b = r; • } • return(a); • } • #include<stdio.h>• void main()• {• int x,y,r;• printf("Please Input two numbers : ");• scanf("%d %d",&x,&y);• r=gcd(x,y);• printf("gcd = %d\n",r);• }
• Please Input two numbers : 4 5• gcd = 1• Press any key to continue
• Finding the greatest common divisor between two elements
Logic Programming
• Like functional programming, but through formal logic.
• A program is a set of predicates, i.e. rules governing the problem.
• Either the truthfulness of a given formula or the deduction of new formulae results from running a logic program.
• For example, prolog.
Example in Prolog
• Finding the greatest common divisor between two elements
gcd(U,V,U) :- V=0.gcd(U,V,X) :- V>0, Y is U mod V, gcd(V,Y,X).
Special-Purpose Languages
• Shell, Awk, Perl, Python– System administration– Program configuration
• Postscript, Tex, RTF– Text and document setting
• HTML, XML– Markup Language
Example in Perl• Make up one pdf file from separate postscript files.
# This script takes as input the desired output filename (without the extension) and the # number of input files. It is assumed that the input filenames are of the form 1.ps 2.ps ... # 99.ps and so on and so forth. It then combines all postscript files into one file with a .ps # extension. Finally, it will generate the pdf version of the postscript file.
$Docs_Dir = 'C:\\Program Files\\ScannerU\\';$OutputFile = $ARGV[0];$NumOfInputs = $ARGV[1];
$FileList = "";for ($i = 1; $i <= $NumOfInputs; $i = $i + 1) { $FileList = $FileList . $i . ".ps ";}chdir($Docs_Dir);system("gswin32c -dNOPAUSE -sDEVICE=pswrite -dBATCH -sOutputFile=" . $OutputFile . ".ps " . $FileList);system("ps2pdf -r720 " . $OutputFile . ".ps " . $OutputFile . ".pdf ");
Language Evaluation Criteria• Readability
– The most important criteria– Factors
• Overall simplicity– Too many features is bad– Multiplicity of features is bad
• Orthogonality– Makes the language easy to learn and read– Meaning is context independent
• Control statements• Data type and structures• Syntax considerations
• Writability– Factors
• Simplicity and orthogonality• Support for abstraction• Expressivity
Language Evaluation Criteria (cont.)• Reliability
– Factors• Type checking• Exception handling• Aliasing• Readability and writability
• Cost– Categories
• Programmer training• Software creation• Compilation• Execution• Compiler cost• Poor reliability• Maintenance
• Others: portability, generality, well-definedness
Layered View of a Computer
Implementation Methods
• Compilation• Interpretation• Hybrid Implementation Systems
Compilation
• Translate high-level program to machine code
• Slow translation• Fast execution
Interpretation
• No translation• Slow execution• Usually found in
functional and logic-based programming languages.
Hybrid Implementation Systems
• Small translation cost• Medium execution speed
Programming Environments• The collection of tools used in software
development
• UNIX– An old operating system and tool collection
• Borland JBuilder– A PC environment for Java
• Smalltalk– A language processor/environment
• Microsoft Visual C++– A large, complex visual environment