Structure of Programming Languages Prof Dr Mostafa Abdel
Structure of Programming Languages Prof. Dr. Mostafa Abdel Aziem Mostafa Senior Lecturer http: //www. geocities. com/prof. Mostafa ISBN 0 -321 -19362 -8
Module information … 1 - Introduction&preliminaries 2 - Describing Syntax and Semantics 3 - Lexical and syntax analysis. 4 - Names, binding, type checking, and Scopes 5 - Data Types. 6 -Expressions and Assignment Statements. 7 - Statement- Level control Structures. 8 - Subprograms. 9 - Implementing Subprograms. ISBN 0 -321 -19362 -8
Teaching Team • Prof. Dr. Mostafa Abdel Aziem mostafa • • different elbakary 2004@yahoo. comfrom handout • Office hours: sun 10: 30 - 12: 30 Teaching assistant Mr. Mohamed Saleh Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 3
Module Structure Lectures Tutorials Assignments & Quizzes Help channels Examination Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 4
~12 lectures (Mon 10: 30 -12: 00) 15 tutorials (1 hr per week) 4 Assignments & 1 or 2 Quizzes 15% of final mark) A written examination (40% of final mark) Office hours, email, appointment (by email) Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 5
Concepts of Programming Languages. Sixth Edition, 2004 Robert W. Sebesta Additional Reading Principle of Programming Languages http: //www. mhhe. com/engcs/compsci/tucker/ Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 6
Chapter 1 Preliminaries ISBN 0 -321 -19362 -8
Chapter 1 Topics • • Motivation Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language Design Trade-Offs Implementation Methods Programming Environments Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 8
Motivation: Why Study Programming Languages? • Increased ability to express ideas • Improved background for choosing appropriate languages • Greater ability to learn new languages • Understand significance of implementation • Ability to design new languages • Overall advancement of computing Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 9
What makes programming languages an interesting subject? The amazing variety There are very many, very different languages A list that used to be posted occasionally on comp. lang. misc had over 2800 published languages in 1999. Often grouped into four families: { Imperative { Object-oriented { Functional { Logic Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 10
Imperative Languages Example: Factorial function in C int fact(int n) { int sofar = 1; while (n>0) sofar *= n--; return sofar; } Hallmarks of imperative languages: { Assignment { Iteration { Order of execution is critical Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 11
Functional Languages Example: Factorial function in Haskell fac 0 = 1 fac n = n * fac (n-1) Hallmarks of functional languages: { Single-valued variables { closely tied to the mathematical concept of function" { Heavy use of recursion Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 12
Logic Languages Example: Factorial function in Prolog fact(X, 1) : X =: = 1. fact(X, Fact) : X > 1, New. X is X - 1, fact(New. X, NF), Fact is X * NF. Hallmark of logic languages { Program expressed as rules in Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 13
Object-Oriented Languages Example: a Java denition for a kind of object that can store an integer and compute its factorial public class My. Int { private int value; public My. Int(int value) { this. value = value; } Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 14
public int get. Value() { return value; } public My. Int get. Fact() { return new My. Int(fact(value)); } private int fact(int n) { int sofar = 1; while (n > 1) sofar *= n--; return sofar; }} Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 15
Hallmarks of object-oriented languages: { Usually imperative, plus. . . { Constructs to help programmers use "objects-little bundles of data that know how to do things to themselves. Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 16
Widely Used and Not Widely Used { Java: Quick rise to popularity since 1995 release { Java uses many ideas from C++, plus some from Mesa, Modula, and other languages { C++ uses most of C and extends it with ideas from Simula 67, Ada, Clu, ML and Algol 68 Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 17
{ C was derived from B, which was derived from BCPL, which was derived from Algol 60 Not Widely Used: Algol { One of the earliest languages: Algol 58, Algol 60, Algol 68 { Never widely used { Introduced many ideas that were used in later languages, including Block structure and scope Recursive functions Parameter passing by value Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 18
Programming Domains • Scientific applications – Large number of floating point computations • Business applications – Produce reports, use decimal numbers and characters • Artificial intelligence – Symbols rather than numbers manipulated • Systems programming – Need efficiency because of continuous use • Scripting languages – Put a list of commands in a file to be executed • Special-purpose languages Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 19
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 20
Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 21
Language Evaluation Criteria • Readability – The most important criterium – 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 – A relatively small set of primitive constructs can be combined in a relatively small number of ways – Every possible combination is legal – Lack of orthogonality leads to exceptions to rules Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 22
Language Evaluation Criteria – Readability factors (continued) • Control statements • Defining data types and structures • Syntax considerations – Identifier forms – Special words – Form and meaning Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 23
Language Evaluation Criteria • Writability – Factors: • Simplicity and orthogonality • Support for abstraction • Expressivity • Reliability – Factors: • • Type checking Exception handling Aliasing Readability and writability Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 24
Language Evaluation Criteria • Cost – Categories • • Training programmers to use language Writing programs Compiling programs Executing programs Language implementation system Reliability Maintaining programs • Others: portability, generality, well-definedness Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 25
Influences on Language Design • Computer architecture: Von Neumann • We use imperative languages, at least in part, because we use von Neumann machines – Data and programs stored in same memory – Memory is separate from CPU – Instructions and data are piped from memory to CPU – Basis for imperative languages • Variables model memory cells • Assignment statements model piping • Iteration is efficient Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 26
Von Neumann Architecture Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 27
Influences on Language Design • Programming methodologies – 1950 s and early 1960 s: Simple applications; worry about machine efficiency – Late 1960 s: People efficiency became important; readability, better control structures • Structured programming • Top-down design and step-wise refinement – Late 1970 s: Process-oriented to data-oriented • data abstraction – Middle 1980 s: Object-oriented programming Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 28
Language Categories • Imperative – Central features are variables, assignment statements, and iteration – C, Pascal • Functional – Main means of making computations is by applying functions to given parameters – LISP, Scheme Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 29
Language Categories • Logic – Rule-based – Rules are specified in no special order – Prolog • Object-oriented – – Encapsulate data objects with processing Inheritance and dynamic type binding Grew out of imperative languages C++, Java Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 30
Language Design Trade-Offs • Reliability vs. cost of execution • Readability vs. writability • Flexibility vs. safety Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 31
Layered View of Computer Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 32
Levels of Language in Computing Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 33
Implementation Methods • Compilation – Translate high-level program to machine code – Slow translation – Fast execution Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 34
Compilation Process Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 35
Implementation Methods • Pure interpretation – No translation – Slow execution – Becoming rare Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 36
Pure Interpretation Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 37
Implementation Methods • Hybrid implementation systems – Small translation cost – Medium execution speed Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 38
Hybrid Implementation System Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 39
Programming Environments • The collection of tools used in software development • UNIX – An older operating system and tool collection • Borland JBuilder – An integrated development environment for Java • Microsoft Visual Studio. NET – A large, complex visual environment – Used to program in C#, Visual BASIC. NET, Jscript, J#, or C++ Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 40
- Slides: 40