Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 403 Programming Language Theory Class 2 - August 29, 2000.

Similar presentations


Presentation on theme: "CS 403 Programming Language Theory Class 2 - August 29, 2000."— Presentation transcript:

1 CS 403 Programming Language Theory Class 2 - August 29, 2000

2 Syllabus Texts: Sebesta: most of the content & theory  Everybody has a copy? Meyers: specific applications to C++ CD  Bookstore is getting the CD in…

3 Homework Assignment List all the languages you have easy access to now. Engineering labs Bama Your home PC, if relevant Other computers… Be sure to note the different implementations of each language. Due today. Turn it in now. Outside write: Name, Section 1 or 2

4 Homework Assignment #2 (1) Consider this program: #include main() { int i; printf(“Value of i: %d, %o, %x, %u, \n %c, %f, %ld\n", i,i,i,i,i,i,i); i = 42; printf(“Value of i: %d, %o, %x, %u, \n %c, %f, %ld\n", i,i,i,i,i,i,i); }

5 Homework Assignment #2 (2) Compile and run (on 4 C compilers, including cc and gcc on UNIX)… Print your program and the executions, identified by compiler. Explain the output (about 1-2 pages) What does ‘printf’ do, and what do the ‘%’ commands do? Why the different but consistent output values for the same variable? What differences do you note across compilers? Turn in Tuesday, Sept 5 th

6 Reading Quiz Name one language in chapter 2 you hadn’t heard of before, and one characteristic of that language. After you’ve written your answer, draw a line & confer with your table-mates. Correct your answer if necessary. We won’t take this up today. (I’ve already got enough to grade!)

7 Primary Influences on Language Design Computer architecture Programming methodologies

8 Computer Architecture We use imperative languages, at least in part, because we use von Neumann machines. Other architectures influence other languages, i.e., LISP machines, …

9 Programming Methodologies 1950s and early 1960s: Simple applications; worry about machine efficiency Late 1960s: People efficiency became important; readability, better control structures Late 1970s: Data abstraction Middle 1980s: Object-oriented programming

10 Language Categories 1.Imperative 2.Functional 3.Logic 4.Object-oriented (closely related to imperative)

11 Language Design Trade-Offs 1.Reliability versus cost of execution 2.Writability versus readability 3.Flexibility versus safety

12 Implementation Methods 1.Compilation Translate high-level program to machine code Slow translation Fast execution 2.Pure interpretation No translation Slow execution Becoming rare 3.Hybrid implementation systems Small translation cost Medium execution speed

13 Programming Environments The collection of tools used in software development 1. UNIX – An old operating system and tool collection 2. Borland C++ – A PC environment for C and C++ 3.Smalltalk –A language processor/ environment 4.Microsoft Visual C++ – A large, complex visual environment

14 Chapter 2: Evolution of Programming Languages (1) Plankalkül - 1945 Pseudocodes - 1949 Laning and Zierler System - 1953 FORTRAN: I - 1957; II - 1958; IV - 1960-62; 77 - 1978; 90 - 1990

15 Language Evolution(2) LISP - 1959 ALGOL 58 - 1958; 60 - 1960 COBOL - 1960 BASIC - 1964 PL/I - 1965

16 Language Evolution (3): Early Dynamic Languages SIMULA 67 - 1967 ALGOL 68 - 1968 Pascal - 1971 C - 1972 Prolog - 1972 Ada - 1983 Smalltalk - 1972- 80 C++ - 1985 Java - 1995

17 Plankalkül - 1945 Never implemented Advanced data structures floating point, arrays, records Invariants Notation: A(7) := 5 * B(6) | 5 * B => A V | 6 7 (subscripts) S | 1.n 1.n (data types)

18 Pseudocodes - 1949 Before pseudocodes  machine codes What’s wrong with machine code? Poor readability Poor modifiability Expressions are tedious Machine weaknesses: no indexing, floating point,...

19 Pseudocodes: Short Code ‘49 Expressions were coded, left to right Speedcoding ‘54 Two weeks of programming  few hours! Automatically increment the instruction counter

20 FORTRAN 0 - 1954 New IBM 704 Index registers Floating point in hardware Environment of development: 1. Computers were small and unreliable 2. Applications were scientific 3. No programming methodology or tools 4. Machine efficiency was most important

21 FORTRAN 0 / I - 1957 Impact of environment on design: 1. No need for dynamic storage 2. Need good array handling and counting loops 3. No string handling, decimal arithmetic, or powerful input/output (commercial stuff)

22 FORTRAN I - 1957 First implemented version of FORTRAN Names could have up to six characters Posttest counting loop ( DO ) Formatted I/O User-defined subprograms Three-way selection statement (arithmetic IF ) No data typing statements

23 FORTRAN I Features (cont.) No separate compilation Compiler released in April 1957, after 18 worker/years of effort. Programs larger than 400 lines rarely compiled correctly, mainly due to poor reliability of the 704 hardware. Code was very fast Quickly became widely used

24 FORTRAN II - 1958 Independent compilation Fix the bugs

25 FORTRAN IV - 1960-62 Explicit type declarations Logical selection statement Subprogram names could be parameters ANSI standard in 1966

26 FORTRAN 77 - 1978 Character string handling Logical loop control statement IF-THEN-ELSE statement

27 FORTRAN 90 (“9X”) - 1990 Modules Dynamic arrays Pointers Recursion CASE statement Parameter type checking

28 FORTRAN Evaluation: Dramatically changed forever the way computers are used!

29 LISP - 1959 LISt Processing language (MIT, McCarthy) AI research needed a language that:  Process data in lists (vs. arrays)  Symbolic computation (vs. numeric) Only two data types: atoms and lists Syntax is based on lambda calculus

30 LISP (2) Pioneered functional programming No need for variables or assignment Control via recursion and conditional expressions Still the dominant language for AI COMMON LISP and Scheme are contemporary dialects of LISP ML, Miranda, and Haskell are related languages

31 ALGOL 58 - 1958 Environment of development:  FORTRAN had (barely) arrived for IBM 70X  Many other languages were being developed, all for specific machines  No portable language; all were machine-dependent  No universal language for communicating algorithms

32 ALGOL 58 (2) ACM and GAMM met for four days for design Goals of the language:  Close to mathematical notation  Good for describing algorithms  Must be translatable to machine code

33 ALGOL 58 (3) Language Features: Concept of type was formalized Names could have any length Arrays could have any number of subscripts Parameters were separated by mode (in & out) Subscripts were placed in brackets Compound statements ( begin... end ) Semicolon as a statement separator Assignment operator was := if had an else-if clause

34 ALGOL 60 - 1960 Modified ALGOL 58 at 6-day meeting in Paris New Features: Block structure (local scope) Two parameter passing methods Subprogram recursion Stack-dynamic arrays Still no i/o and no string handling

35 ALGOL 60 (2) Successes: It was the standard way to publish algorithms for over 20 years All subsequent imperative languages are based on it First machine-independent language First language whose syntax was formally defined (BNF)

36 ALGOL 60 (3) Never widely used, especially in U.S. Reasons:  No I/O and the character set made programs nonportable  Too flexible--hard to implement  Entrenchment of FORTRAN  Formal syntax description  Lack of support of IBM


Download ppt "CS 403 Programming Language Theory Class 2 - August 29, 2000."

Similar presentations


Ads by Google