Programming Languages - Al Akhawayn University

CSC 3315
Languages & Compilers
Hamid Harroud
School of Science and Engineering, Akhawayn University
[email protected]
http://www.aui.ma/Personal/~H.Harroud/csc3315/
CSC3315 (Spring 2009)
1
Programming Languages: Evaluation

Expressiveness





Recursion,
Backtracking,
Sorting,
Etc
Appropriateness to domain






Scientific (numerical) computing,
Business applications,
Artificial intelligence,
Systems programming,
Web software,
Etc.
2
Programming Languages: Evaluation

High-level goals for code





Easily readable
Easily writable
Maintainable
Efficient
Goals for languages





Simplicity
Uniformity (orthogonality)
Modularity
Clean syntax
Efficient implementation model
3
Programming Languages: Evaluation

Costs affected by programming language choice


Execution speed (& space)
Development time




Program writing
Compilation, testing, debugging
Training
Maintenance

Program reading
4
Von Neumann Machine
CSC5346 (Spring 2008)
5
Programming Languages: Evolution
FORTRAN 1954-58 John Backus (IBM)
 Domain: Numerical computation
 Features:






Implementation model:



Arithmetic expressions (evaluated using stack)
Statements
Bounded arrays
Iterative control structures
Subroutines (no recursion; call-by-reference)
Fixed run-time storage requirements
Optimization of numerical computations
Still used: FORTRAN IV, FORTRAN 77, FORTRAN90
6
Programming Languages: Evolution
ALGOL 60 1957-60 (Backus, McCarthy, Naur…)


Domain: Numerical computation
Features:










Carefully defined by “report”
Syntax defined with BNF
Block structure (stack-based implementation)
Recursive subroutines
Explicit type declarations
Scope rules and dynamic lifetimes
Relational & boolean expressions
Call-by-value & call-by-name
Dynamic Array Bounds
Very influential on later languages.
7
Programming Languages: Evolution
Cobol 1959-61 Committee
 Domain: Business data processing
 Features:




Separate data description
Record data structures
File description/ manipulation
Early standardization
8
Programming Languages: Evolution
Ada 1977-83
 Domain: Everything, but especially embedded systems.
 Features:




Focus on reliability, safety.
Real-time control and multiprocessing.
Programming support environments.
Ada95 added object-oriented features.
9
Programming Languages: Evolution
Pascal 1971- NiklausWirth
 Domain: General-purpose programming, education.



Simplicity of language and implementation
Rich type definition facility
Structured programming methodology
Modula-2 1979-81



Modules for abstraction
Systems programming facilities
Procedure types
10
Programming Languages: Evolution
C 1972-74 Dennis Ritchie (Bell Labs)
 Domain: Systems Programming,
 Implementation language for UNIX kernel and utilities



Rich set of operators
Easy machine access
Very successful; widely used in engineering and education
Standardized as ANSI C
C++ 1980- Bjarne Stroustrup





Extended version of C.
Direct support for abstract data types
Object-oriented programming
Large and very complex language
11
Programming Languages: Evolution
Java 1995- Arnold & Gosling (Sun)
 Domain: Internet applet programming; as C++.




Cut-down, cleaned-up version of C++.
Automatic heap storage management (garbage collection).
Type-safety and runtime memory security.
Portable runtime environment (Java Virtual Machine).
LISP 1959-60 John McCarthy (MIT)
 Domain: Artificial intelligence; symbolic computing




List processing
“First-class” functions
Extremely simple program syntax;
Dynamic typing
12
Programming Languages: Evolution



The syntax of a language determines how programs are built
based on elements such as key words, identifiers, numbers,
…etc
A syntactically correct program may not perform correctly,
A formal syntax is a system which describes the exact
structure of programs



It includes the BNF grammars and syntactic diagrams (graphs).
With a language, we can have an infinite number of
programs, but the syntax of each program should be verified
in a finite time.
A grammar allows a finite description for infinite languages.
13