CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. UMBC CMSC 331 1 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 1 History of Programming Languages CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 2 History • Early History : The first programmers • The 1940s: Von Neumann and Zuse • The 1950s: The First Programming Language • The 1960s: An Explosion in Programming languages • The 1970s: Simplicity, Abstraction, Study • The 1980s: Consolidation and New Directions • The 1990s: Internet and web • The 2000s: ? scripting, parallel, Web 2.0, …? CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 3 Early History: First Programmers • Jacquard loom of early 1800s – Translated card patterns into cloth designs • Charles Babbage’s analytical engine (1830s & 40s) Programs were cards with data and operations. Steam powered! • Ada Lovelace – first programmer “The engine can arrange and combine its numerical quantities exactly as if they were letters or any other general symbols; And in fact might bring out its results in algebraic notation, were provision made.” CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 4 Konrad Zuse and Plankalkul Konrad Zuse began work on Plankalkul (plan calculus), the first algorithmic programming language, with an aim of creating the theoretical preconditions for the formulation of problems of a general nature. Seven years earlier, Zuse had devel-oped and built the world's first binary digital computer, the Z1. He completed the first fully functional program-controlled electromechan-ical digital computer, the Z3, in 1941. Only the Z4 – the most sophisticated of his creations -- survived World War II.CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. UMBC CMSC 331 2 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 5 The 1940s: Von Neumann and Zuse • Konrad Zuse (Plankalkul) – in Germany - in isolation because of the war – defined Plankalkul (program calculus) circa 1945 but never implemented it. – Wrote algorithms in the language, including a program to play chess. – His work finally published in 1972. – Included some advanced data type features such as » Floating point, used twos complement and hidden bits » Arrays » records (that could be nested) CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 6 Plankalkul notation A(7) := 5 * B(6) | 5 * B => A V | 6 7 (subscripts) S | 1.n 1.n (data types) CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 7 The 1940s: Von Neumann and Zuse Von Neumann led a team that built computers with stored programs and a central pro-cessor ENIAC was programmed with patch cords Von Neuman with ENIAC CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 8 • Initial computers were programmed in raw machine codes. • These were entirely numeric. • What was wrong with using machine code? Everything! • Poor readability • Poor modifiability • Expression coding was tedious • Inherit deficiencies of hardware, e.g., no indexing or floating point numbers Machine Codes (40’s)CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. UMBC CMSC 331 3 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 9 The 1950s: The First Programming Language • Pseudocodes: interpreters for assembly language • Fortran: the first higher level programming language • COBOL: he first business oriented language • Algol: one of the most influential programming languages ever designed • LISP: the first language outside the von Neumann model • APL: A Programming Language CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 10 • Short Code or SHORTCODE - John Mauchly, 1949. • Pseudocode interpreter for math problems, on Eckert and Mauchly’s BINAC and later on UNIVAC I and II. • Possibly the first attempt at a higher level language. • Expressions were coded, left to right, e.g.: X0 = sqrt(abs(Y0)) 00 X0 03 20 06 Y0 • Some operations: 01 – 06 abs 1n (n+2)nd power 02 ) 07 + 2n (n+2)nd root 03 = 08 pause 4n if <= n 04 / 09 ( 58 print & tab Pseudocodes (1949) CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 11 More Pseudocodes Speedcoding; 1953-4 • A pseudocode interpreter for math on IBM701, IBM650. • Developed by John Backus • Pseudo ops for arithmetic and math functions • Conditional and unconditional branching • Autoincrement registers for array access • Slow but still dominated by slowness of s/w math • Interpreter left only 700 words left for user program Laning and Zierler System - 1953 • Implemented on the MIT Whirlwind computer • First "algebraic" compiler system • Subscripted variables, function calls, expression translation • Never ported to any other machine CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 12 Fortran (1954-57) • FORmula TRANslator • Developed at IBM under the guidance of John Backus primarily for scientific, computational programming • Dramatically changed forever the way computers used • Has continued to evolve, adding new features & concepts. – FORTRAN II, FORTRAN IV, FORTRAN66, FORTRAN77, FORTRAN90 • Always among the most efficient compilers, producing fast codeCMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. UMBC CMSC 331 4 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 13 Fortran 77 Examples C Hello World in Fortran 77!C (lines must be 6 characters indented)! PROGRAM HELLOW! WRITE(UNIT=*, FMT=*) 'Hello World'! END! PROGRAM SQUARE! DO 15,I = 1,10! WRITE(*, *) I*I!15 CONTINUE! END!CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 14 FORTRAN 0 – 1954 (not implemented) FORTRAN I - 1957 Designed for the new IBM 704, which had index registers and floating point hardware Environment of development: Computers were small and unreliable Applications were scientific No programming methodology or tools Machine efficiency was most important Impact of environment on design • No need for dynamic storage • Need good array handling
View Full Document