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
© Copyright 2026 Paperzz