Handout-2_PLTP - Dr. Rafiqul Zaman Khan

Download Report

Transcript Handout-2_PLTP - Dr. Rafiqul Zaman Khan

Course No-101319
Programming Languages Theory & Practice
First Semester 2008 - 2009
ITTIHAD UNIVERSITY
Computer Science Department
Instructor: 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++
• Finding the greatest common divisor between two elements
•
// gcd.cpp - long integer greatest common divisor
•
class BadGcdArgumentsException{ };
•
long gcd(long a,long b) // Euclidean algorithm - returns 0
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);
}
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
// if a and b are
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 logicbased 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