270 likes | 290 Views
Explore the history and development of programming languages from the early days of Blaise Pascal and Charles Babbage to the modern era of Java. Discover influential languages like Fortran, COBOL, LISP, Pascal, C, and more. Learn about the evolution of features such as object-oriented programming and visual languages.
E N D
Language History The Main Line
Pre-History • Blaise Pascal • Leibnitz • Carles Babbage 1830-1840 • The difference engine • the first programmer: Ada, Countess Lovelace • The Jacquard Loom and its punched cards
0. Plankalkul (Zuse) 1945 • - a prototype language • 1. Fortran 54-57 (Backus--IBM) • - later WatFIV, Fortran 77 and Fortran 90+ (ISO) • - scientific work • 2. COBOL 59-60 (Admiral Hopper -- USN) • - business • 3. ALGOL 58-60 • - Zurich • - block structure • - formal definition in BNF (a metalanguage) • - heavily influenced everything after
For Symbolic Manipulation (functional or applicative) 4. LISP 56-62 - John McCarthy MIT 1958 - non VonNeumann - no variables, assignments, or goto - now Common Lisp 5. *APL 56-60 (Iverson) - operator rich - needs special keyboard 6. *SNOBOL 60-62 (Griswald - Bell labs) - StriNg Oriented symBOLic Language * a dynamic language—interpreted not compiled
The all-in-one language 7. PL/1 63-64 IBM - borrowed from everything prior - tried to combine COBOL, FORTRAN, LISP - exception handling - primitive multitasking - large; many previously untried features - a temporary success in academia - too large to learn properly
Late 60's ALGOL successors 8. ALGOL-68 (committee effort) - like PL/1 in being feature-rich (bloated) - very orthogonal 9. ALGOL-W (Wirth&Hoare) (late 60s) - his reaction to ALGOL-68 10. SIMULA-67 (Nygaard & Dahl—Oslo) - from SIMULA-1 (62 - 64) - includes ALGOL-67 - to solve simulation problems - some parallelism possible - first language with CLASS; first OO language
Late 60's ALGOL successors (cont’d) 11. Pascal (1971 Wirth) - simple but powerful - widely used in teaching - a huge impact to the late 1990s - descendants include → UCSD → ISO version → Object Pascal (Wirth on contrat to Apple) →Turbo →Delphi environment → Ada, Modula-2, etc.
Hobbiest Languages 12. BASIC (1964 Kemeny & Kurtz @ Dartmouth) - simplified Fortran, also ALGOL influence - line numbers to control sequence - timeshared on large machines, built-in on the smaller - early versions not well defined - limited control structures and data types - integrated editing and interpreting - descendants include ASCI BASIC, Real Basic (K&K), Future Basic 13. LOGO - interactive language for teaching children
Results of the 70s experiments 14. C (1972 Ritchie @ Bell) - another ALGOL descendent - designed for systems work, eg UNIX (re-written in C) - a middle level language - standardized bu ANSI in 1989 15. Euclid (76-77 @ U of T) - Pascal, extended with Modules 16. Mesa (76-79 -- Xerox) - had concurrency facilities
17. Ada (1979 US DOD) (no longer mandated by DoD) - another Pascal replacement - committee designed, large and complex - largest design effort ever; took 4y to get a compiler - completely specified, including libraries - got ISO version in 1990s as Ada95 18. Modula-2 (1977 -- Wirth @ETH; reaction to Ada) -much simpler than Ada, but as powerful - replacement for Pascal - teaching, real time (embedded) systems, general use - influenced by Mesa & Modula (a real time notation) - got ISO version in 1990s + generic & OO extensions
The early Modula-2 Descendents 19. Modula* (for parallel processing) 20. Modula-GM (used only at General Motors) 21. Modula-3 (Olivetti and DEC) - OO version 22. Oberon (Wirth) - widely used in European Universities - has many versions including Component Pascal - stripped down Modula-2 ;OO added in Oberon-2 - included an operating system & editor - never completely specified
Other 70's and 80s experiments 23. Smalltalk (71-80 by Alan Kay @ Xerox) - from SIMULA-67 - an OO language; several implementations available 24. Scheme (75-77 Sussman & Steele @ MIT) - variation of LISP - used in several universities for beginners 25. PROLOG (1972, French) - logic programming, AI an intelligent DB? 26. Eiffel (1985 Meyer) - Pascal-like OO language - smaller and simpler than C++
Results of 90's work I Language Extensions; Alterations 27. C++ (Bjarne Stroustrop, draft 1995) - C with OO, some deprecations - many new features, similarities to SIMULA - has generics (templates for ADTs) - ISO standardized, more compliant compilers now - large, complex, non-orthogonal 28. Modula-2 extensions - ISO committee adds OO and generics 29. J (Iversons) - an ASCII replacement of APL
I Language Extensions; Alterations Cont’d. 30. Object Pascal (Wirth, for Apple computing) 31. Objective C (Became Another Apple project) 32. Scheme (MIT: Abelson and Sussman - from LISP)
II Visual Languages and environments 33. Delphi (Borland 1995) - migration from Turbo Pascal, includes Object Pascal - many features from Modula-2 34. Visual Basic (MS described in 1987) - widely used by non-professionals after 1991) 35. Visual C++ (MS)
Newer Languages 36. Java (Sun Microsystems) - pure OO; all code part of objects - no standalone subprograms; no true pointers - borrows syntax from C, C++ - ideas from Pascal, Modula-2, and Smalltalk - J++ is the MS version 37. JavaScript(ECMAScript) - A net scripting language; runs client side in browsers - with Ajax can do dynamic loading into static pages
38. PHP - a net scripting language that runs server-side - used with databases; MySQL querying capabilities - integral part of LAMP environments (LINUX, Apache, MySQL, PHP) 39. Perl - scripting language;extensive string manipulation capabilities 40. C# (Microsoft) - an attempt to replace Java with an MS proprietary language; similar design - runs in .NET
41. Python - an interpreted multipurpose OO language - descended from Modula-2 but written more like C 42 . Ruby - dynamic typing, extensible - syntax similar to Eiffel and Ada - pure OO language - with the "Rails" environment - used in conjunction with JavaScript - now sometimes standalone (not in Apache)
2010-2017 projects (1) 43. Swift (Apple; released June 2014) - from Objective-C - Apple ecosystem programming; not general-purpose - has a visual “playground” - safety, security, extensibility
2010-2017 projects (2) 44. MODULA-2 R10 (design 2010, finalized 2015) - Sutcliffe & Kowarsch - from Classic Modula-2, not ISO, GM, or Modula-3 - General purpose - safety, security, extensibility - OO and concurrency left for a later edition - templates for generics, blueprints for ADTs - small, very powerful, extensive library system - incorporates latest ideas and design principles - built-in procedures are Wirthian macros that are translated at compile time
Others • specialized query and database languages • markup notations • HTML (+Ajax), XML, JSP (Java Server Pages) • macro notations including • VBA • C or Pascal-like add ons • scripting languages • (TCL/TK. Perl, AWK, AppleScript • JavaScript(ECMAScript) • and many more not mentioned here (see the text).
Issues: • Language portability can be achieved by • standards • compiling to a virtual machine interpreter • UCSD, JVM, Gardens Point • The book has extensive evaluations of some of these • Take these, mine, and yours with a grain of salt