History of Programming Languages
Total Page:16
File Type:pdf, Size:1020Kb
UMBC CMSC 331 History • Early History : The first programmers • The 1940s: Von Neumann and Zuse History of • The 1950s: The First Programming Language • The 1960s: An Explosion in Programming languages Programming • The 1970s: Simplicity, Abstraction, Study • The 1980s: Consolidation and New Directions Languages • The 1990s: Internet and web • The 2000s: ? scripting, parallel, Web 2.0, …? CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 1 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 2 Early History: First Programmers Konrad Zuse and Plankalkul • Jacquard loom of early 1800s Konrad Zuse began work on Plankalkul (plan calculus), the first – Translated card patterns into cloth designs algorithmic programming language, with an aim of creating the • Charles Babbage’s analytical engine theoretical preconditions for the (1830s & 40s) formulation of problems of a general nature. Programs were cards with data and operations. Steam powered! Seven years earlier, Zuse had devel- oped and built the world's first • Ada Lovelace – first programmer binary digital computer, the Z1. He completed the first fully functional “The engine can arrange and combine its program-controlled electromechan- numerical quantities exactly as if they ical digital computer, the Z3, in were letters or any other general 1941. symbols; And in fact might bring out its Only the Z4 – the most sophisticated results in algebraic notation, were of his creations -- survived World provision made.” War II. CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 3 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 4 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 1 UMBC CMSC 331 The 1940s: Von Neumann and Zuse Plankalkul notation • Konrad Zuse (Plankalkul) – in Germany - in isolation because of the war – defined Plankalkul (program calculus) circa 1945 but A(7) := 5 * B(6) never implemented it. – Wrote algorithms in the language, including a program to play chess. | 5 * B => A – His work finally published in 1972. V | 6 7 (subscripts) – Included some advanced data type features such as S | 1.n 1.n (data types) » Floating point, used twos complement and hidden bits » Arrays » records (that could be nested) CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 5 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 6 The 1940s: Von Neumann and Zuse Machine Codes (40’s) Von Neumann led a team that • Initial computers were programmed in raw built computers machine codes. with stored • These were entirely numeric. programs and a • What was wrong with using machine code? central pro- Everything! cessor • Poor readability ENIAC was • Poor modifiability programmed • Expression coding was tedious with patch • Inherit deficiencies of hardware, e.g., no cords indexing or floating point numbers Von Neuman with ENIAC CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 7 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 8 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 2 UMBC CMSC 331 The 1950s: The First Pseudocodes (1949) Programming Language • Short Code or SHORTCODE - John Mauchly, 1949. • Pseudocodes: interpreters for assembly language • Pseudocode interpreter for math problems, on Eckert • Fortran: the first higher level programming and Mauchly’s BINAC and later on UNIVAC I and II. language • Possibly the first attempt at a higher level language. • COBOL: he first business oriented language • Expressions were coded, left to right, e.g.: X0 = sqrt(abs(Y0)) • Algol: one of the most influential programming 00 X0 03 20 06 Y0 languages ever designed • Some operations: • LISP: the first language outside the von Neumann 01 – 06 abs 1n (n+2)nd power 02 ) 07 + 2n (n+2)nd root model 03 = 08 pause 4n if <= n • APL: A Programming Language 04 / 09 ( 58 print & tab CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 9 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 10 More Pseudocodes Fortran (1954-57) Speedcoding; 1953-4 • FORmula TRANslator • A pseudocode interpreter for math on IBM701, IBM650. • Developed by John Backus • Developed at IBM under the guidance of John Backus • Pseudo ops for arithmetic and math functions primarily for scientific, • Conditional and unconditional branching computational programming • Autoincrement registers for array access • Slow but still dominated by slowness of s/w math • Dramatically changed forever the • Interpreter left only 700 words left for user program way computers used Laning and Zierler System - 1953 • Has continued to evolve, adding new features & concepts. • Implemented on the MIT Whirlwind computer – FORTRAN II, FORTRAN IV, FORTRAN66, FORTRAN77, FORTRAN90 • First "algebraic" compiler system • Subscripted variables, function calls, expression translation • Always among the most efficient compilers, producing fast • Never ported to any other machine code CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 11 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 12 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 3 UMBC CMSC 331 Fortran 77 Examples Fortran 0 and 1 FORTRAN 0 – 1954 (not implemented) C Hello World in Fortran 77 C (lines must be 6 characters indented) FORTRAN I - 1957 PROGRAM HELLOW Designed for the new IBM 704, which had index registers and WRITE(UNIT=*, FMT=*) 'Hello World' floating point hardware END Environment of development: Computers were small and unreliable Applications were scientific PROGRAM SQUARE No programming methodology or tools DO 15,I = 1,10 Machine efficiency was most important WRITE(*, *) I*I Impact of environment on design 15 CONTINUE • No need for dynamic storage • Need good array handling and counting loops END • No string handling, decimal arithmetic, or powerful input/ output (commercial stuff) CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 13 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 14 Fortran I Features Fortran II, IV and 77 • Names could have up to six characters • Post-test counting loop (DO I=1, 100) FORTRAN II - 1958 • Formatted I/O • Independent compilation • User-defined subprograms • Fix the bugs • Three-way selection statement (arithmetic IF with GOTO) IF (ICOUNT-1) 100 200 300 FORTRAN IV - 1960-62 • Implicit data typing statements • Explicit type declarations variables beginning with i, j, k, l, m or n were integers, • Logical selection statement all else floating point • Subprogram names could be parameters • No separate compilation • ANSI standard in 1966 • Programs larger than 400 lines rarely compiled correctly, mainly due to poor reliability of the 704 FORTRAN 77 - 1978 • Code was very fast • Character string handling • Logical loop control statement • Quickly became widely used • IF-THEN-ELSE statement CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 15 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 16 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 4 UMBC CMSC 331 Fortran 90 (1990) COBOL Added many features of more modern programming languages, including • COmmon Business Oriented Language • Principal mentor: (Rear Admiral Dr.) • Pointers Grace Murray Hopper (1906-1992) • Recursion • Based on FLOW-MATIC which had such features as: • CASE statement • Names up to 12 characters, with • Parameter type checking embedded hyphens • A collection of array operations, DOTPRODUCT, • English names for arithmetic operators MATMUL, TRANSPOSE, etc • Data and code were completely separate • dynamic allocations and deallocation of arrays • Verbs were first word in every statement • CODASYL committee (Conference on Data Systems • a form of records (called derived types) Languages) developed a programming language by the • Module facility (similar Ada’s package) name of COBOL CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 17 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 18 COBOL COBOL First CODASYL Design Meeting - May 1959 Design goals: • Must look like simple English • Must be easy to use, even if that means it will be less powerful • Must broaden the base of computer users • Must not be biased by current compiler problems Design committee were all from computer manufacturers and DoD branches Design Problems: arithmetic expressions? subscripts? Fights among manufacturers CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 19 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 20 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 5 UMBC CMSC 331 IDENTIFICATION DIVISION. COBOL PROGRAM-ID. HelloWorld. AUTHOR. Fabritius. Cobol Example Contributions: - First macro facility in a high-level language ENVIRONMENT DIVISION. - Hierarchical data structures (records) CONFIGURATION SECTION. - Nested selection statements INPUT-OUTPUT SECTION. - Long names (up to 30 characters), with hyphens - Data Division DATA DIVISION. Comments: FILE SECTION. • First language required by DoD; would have WORKING-STORAGE SECTION. failed without DoD LINKAGE SECTION. • Still the most widely used business applications language PROCEDURE DIVISION. DISPLAY "Hello World". STOP RUN. CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 21 CMSC 331. Some material © 1998 by Addison Wesley Longman, Inc. 22 BASIC (1964) BASIC Examples • Beginner's All purpose Symbolic Instruction Code • Designed by Kemeny & Kurtz at Dartmouth for the GE 225 with the goals: PRINT "Hello World" • Easy to learn and use for non-science