1 / 53

Chapter 2 Evolution of Major Programming Languages

Chapter 2 Evolution of Major Programming Languages. Fall 2014. Genealogy of Common Languages. Minmial Hardware Programming with Pseudocodes. Why programming with machine code is not good? MIPS instruction: add $t0,$t1,$t8 Binary code: 00000001001110000100000000100000

maddy
Download Presentation

Chapter 2 Evolution of Major Programming Languages

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 2Evolution of Major Programming Languages Fall 2014 CS 1621

  2. Genealogy of Common Languages PITT CS 1621

  3. Minmial Hardware Programming withPseudocodes • Why programming with machine code is not good? MIPS instruction: add $t0,$t1,$t8 Binary code: 00000001001110000100000000100000 • Poor readability • What does the code want to do? • Poor modifiability • Want to change “a= b+1” to “a=c+2” • Expression coding was tedious • Instruction format, length, …. • Machine deficiencies--no indexing or floating point PITT CS 1621

  4. Pseudocodes • Short code • Mauchly in1949 for BINAC computers 01 – 06 abs value 1n (n+2)nd power 02 ) 07 + 2n (n+2)nd root 03 = 08 pause 4n if <= n 04 / 09 ( 58 print and tab “00 x0 03 20 06 Y0” ; X0=SQRT(ABS(Y0)) • Interpreted, 50 slower • Speedcoding • Backus in 1954 for IBM 701 • Handle --- branches, auto-increment register, floating-point operation • Interpreted • Memory has 700 usable words PITT CS 1621

  5. Punched card PITT CS 1621

  6. Fortran • Came with IBM 704 system • Index register and floating point instructions • Fortran I: 1957 • Environment of development • Computers were small and unreliable • Applications were scientific • No programming methodology or tools • Machine efficiency was most important • Impacts • No need for dynamic storage • Need good array handling and counting loops • No string handling, decimal arithmetic, or powerful input/output (commercial stuff) PITT CS 1621

  7. Fortran I Overview • First implemented version • If-stmt: if (e) N1, N2, N3 • Do-stmt: Do N1 v=V1, V2 • Posttest • User-defined routines • No data typing stmts • Names start with I,J,K,L,M are integer types, others floating point • Fast compiled code • Programs larger than 400 lines rarely compiled • IBM 704 was not reliable • Widely accepted after the introduction PITT CS 1621

  8. Fortran II, IV, 77 • Fortran II • Distributed in 1958 • Independent compilation and bug fix • Fortran IV • Type declaration • Logical selection • Passing subprogram as parameters • Evolve during 1960-62, ANSI standard in 1966 • Fortran 77 • Character string • Logical loop control • If-then-else-stmt • New starndard in 1978 PITT CS 1621

  9. Fortran 77 Example • Euclid.f (FORTRAN 77) * Find greatest common divisor using the Euclidean algorithm PROGRAM EUCLID PRINT *, 'A?' READ *, NA IF (NA.LE.0) THEN PRINT *, 'A must be a positive integer.' STOP END IF PRINT *, 'B?' READ *, NB IF (NB.LE.0) THEN PRINT *, 'B must be a positive integer.' STOP END IF PRINT *, 'The GCD of', NA, ' and', NB, ' is', NGCD(NA, NB), '.' STOP END FUNCTION NGCD(NA, NB) IA = NA IB = NB 1 IF (IB.NE.0) THEN ITEMP = IA IA = IB IB = MOD(ITEMP, IB) GOTO 1 END IF NGCD = IA RETURN END PITT CS 1621

  10. Fortran 90 • Significant changes • Modules • Dynamic arrays • Pointers • Recursion • Case-stmt • Parameter type checking PITT CS 1621

  11. Fortran Evaluation • Highly optimizing compilers • For all versions before Fortran 90 • Types and storage of all variables are fixed at compile-time • Less flexible but very efficient • The first widely used high-level language • Changed forever the way computers are used • Characterized as the lingua franca of the computing world PITT CS 1621

  12. Functional Programming: LISP • LISt Processing language • Designed at MIT by McCarthy • Based on lambda calculus • AI research needed a language to • Process data in lists (rather than arrays) • Symbolic computation (rather than numeric) • Only two data types • atoms and lists • Examples: ( A B C D) ? PITT CS 1621

  13. Example (DEFUN Equal_lst (lst1 lst2) (COND ( (ATOM lst1) (EQ lst1 lst2) ) ( (ATOM lst2) nil ) ( ( Equal_lst (CAR lst1) (CAR lst2) ) ( Equal_lst (CDR lst1) (CDR lst2) ) ) ( T nil) ) ) PITT CS 1621

  14. LISP Evaluation • 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 PITT CS 1621

  15. Scheme and COMMON LISP • Scheme • Developed at MIT in mid 1970s • Small • Extensive use of static scoping • Functions as first-class entities • Simple syntax (and small size) make it ideal for educational applications • COMMON LISP • An effort to combine features of several dialects of LISP into a single language • Large, complex PITT CS 1621

  16. The First Step Toward Sophistication • To design a universal language ? • 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 • International ALGOrithmic Language PITT CS 1621

  17. ALGOL 58 • Concept of type was formalized • Names could be 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 • No I/O - “would make it machine dependent” • Not meant to be implemented • IBM dropped its support in mid 1959 PITT CS 1621

  18. ALGOL 60 Overview • 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 PITT CS 1621

  19. ALGOL 60 Evaluation • 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) • Failure • Never widely used, especially in U.S. • Reasons • Lack of I/O and the character set made programs non-portable • Too flexible--hard to implement ALGOL68 • Formal syntax description • Lack of support from IBM PITT CS 1621

  20. Example BNF: <block>  <decl><stmt-lst> < stmt-lst>  <stmt-lst> <stmt><stmt>  <assign-stmt> | <for-stmt> | … <for-stmt>  for <assign-stmt> step <int-var> until <int-var> do <block> Program: begin integer array intlst[1:99]; integer listlen, counter, sum, average, result; sum: =0; … for counter:=1 step 1 until listlen do begin readint (intlst[counter]); … end; end PITT CS 1621

  21. Computerizing Business Records: COBOL • Environment of development • UNIVAC was beginning to use FLOW-MATIC • USAF was beginning to use AIMACO • IBM was developing COMTRAN PITT CS 1621

  22. COBOL Designs • First Design Meeting (Pentagon) - 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 members were all from computer manufacturers and DoD branches • Design Problems: arithmetic expressions? subscripts? Fights among manufacturers PITT CS 1621

  23. COBOL Evaluation • Contributions • First macro facility in a high-level language • Hierarchical data structures (records) • Nested selection statements • Long names (up to 30 characters), with hyphens • Separate data division • First language required by DoD • would have failed without DoD • Still the widely used business applications language PITT CS 1621

  24. PITT CS 1621

  25. Everything for Everybody: PL/I • Computing situation in 1964 (IBM's point of view) • Scientific computing • IBM 1620 and 7090 computers • FORTRAN • SHARE user group • Business computing • IBM 1401, 7080 computers • COBOL • GUIDE user group • Solution • Build a new computer for both • Design a new language for both PITT CS 1621

  26. PL/I: Evaluation • PL/I contributions • First unit-level concurrency • First exception handling • Switch-selectable recursion • First pointer data type • First array cross sections • Concerns • Many new features were poorly designed • Too large and too complex PITT CS 1621

  27. The Beginning of Timesharing: BASIC • Designed by Kemeny & Kurtz at Dartmouth • Design Goals: • Easy to learn and use for non-science students • Must be “pleasant and friendly” • Fast turnaround for homework • Free and private access • User time is more important than computer time • Current popular dialect: Visual BASIC • First widely used language with time sharing PITT CS 1621

  28. PITT CS 1621

  29. The Beginning of Data Abstraction:SIMULA 67 • Designed primarily for system simulation in Norway by Nygaard and Dahl • Based on ALGOL 60 and SIMULA I • Primary Contributions • Co-routines - a kind of subprogram • Implemented in a structure called a class • Classes are the basis for data abstraction • Classes are structures that include both local data and functionality PITT CS 1621

  30. Orthogonal Design: ALGOL 68 • The continued development of ALGOL 60 but not a superset • Source of several new ideas • based on the concept of orthogonality • Contributions • User-defined data structures • Reference types • Dynamic arrays (called flex arrays) • Impacted all imperative languages • Pascal, C, Modula/Modula 2, Ada, C++/Java, Perl PITT CS 1621

  31. Pascal - 1971 • Developed by Wirth (a member of the ALGOL 68 committee) • Designed for teaching structured programming • Small, simple, nothing really new • Largest impact on teaching programming • From mid-1970s until the late 1990s, it was the most widely used language for teaching programming PITT CS 1621

  32. C - 1972 • Designed for systems programming (at Bell Labs by Dennis Richie) • Evolved primarily from BCLP, B, but also ALGOL 68 • Powerful set of operators, but poor type checking • Initially spread through UNIX • Many areas of application PITT CS 1621

  33. Perl • Related to ALGOL only through C • A scripting language • A script (file) contains instructions to be executed • Other examples: sh, awk, tcl/tk • Developed by Larry Wall • Perl variables are statically typed and implicitly declared • Three distinctive namespaces, denoted by the first character of a variable’s name • Powerful but somewhat dangerous • Widely used as a general purpose language PITT CS 1621

  34. PITT CS 1621

  35. Programming Based on Logic: Prolog • Developed, by Comerauer and Roussel (University of Aix-Marseille), with help from Kowalski ( University of Edinburgh) • Based on formal logic • Non-procedural • Can be summarized as being an intelligent database system that uses an inferencing process to infer the truth of given queries • Highly inefficient, small application areas PITT CS 1621

  36. man(adam). man(peter). man(paul).   woman(marry). woman(eve). parent(adam,peter). % means adam is parent of peter parent(eve,peter). parent(adam,paul). parent(marry,paul). father(F,C):-man(F),parent(F,C). mother(M,C):-woman(M),parent(M,C). ?-father(X,paul). PITT CS 1621

  37. History’s Largest Design Effort: Ada • Huge design effort, involving hundreds of people, much money, and about eight years • Strawman requirements (April 1975) • Woodman requirements (August 1975) • Tinman requirements (1976) • Ironman equipments (1977) • Steelman requirements (1978) • Named Ada after Augusta Ada Byron, known as being the first programmer PITT CS 1621

  38. Ada Evaluation • Contributions • Packages - support for data abstraction • Exception handling - elaborate • Generic program units • Concurrency - through the tasking model • Comments • Competitive design • Included all that was then known about software engineering and language design • First compilers were very difficult; the first really usable compiler came nearly five years after the language design was completed PITT CS 1621

  39. Ada 95 • Ada 95 (began in 1988) • Support for OOP through type derivation • Better control mechanisms for shared data • New concurrency features • More flexible libraries • Popularity suffered because the DoD no longer requires its use but also because of popularity of C++ PITT CS 1621

  40. PITT CS 1621

  41. Object-Oriented Programming:Smalltalk • Developed at Xerox PARC, initially by Alan Kay, later by Adele Goldberg • First full implementation of an object-oriented language (data abstraction, inheritance, and dynamic type binding) • Pioneered the graphical user interface design • Promoted OOP PITT CS 1621

  42. Combining Imperative and Object-Oriented Programming: C++ • Developed at Bell Labs by Stroustrup in 1980 • Evolved from C and SIMULA 67 • Facilities for object-oriented programming, taken partially from SIMULA 67 • Provides exception handling • A large and complex language, in part because it supports both procedural and OO programming • Rapidly grew in popularity, along with OOP • ANSI standard approved in November 1997 • Microsoft’s version (released with .NET in 2002): Managed C++ • delegates, interfaces, no multiple inheritance PITT CS 1621

  43. Related OOP Languages • Objective-C (designed by Brad Cox – early 1980s) • C plus support for OOP based on Smalltalk • Uses Smalltalk’s method calling syntax • Used by Apple for systems programs • Delphi (Borland) • Pascal plus features to support OOP • More elegant and safer than C++ • Go (designed at Google - 2009) • Loosely based on C, but also quite different • Does not support traditional OOP 43

  44. An Imperative-Based Object-Oriented Language: Java • Developed at Sun in the early 1990s • C and C++ were not satisfactory for embedded electronic devices • Based on C++ • Significantly simplified (does not include struct, union, enum, pointer arithmetic, etc.) • Supports only OOP • Has references, but not pointers • Includes support for applets and a form of concurrency PITT CS 1621

  45. Java Evaluation • Eliminated unsafe features of C++ • Concurrency features • Libraries for applets, GUIs, database access • Portable: Java Virtual Machine concept, JIT compilers • Widely used for WWW pages • Use for other areas increased faster than any other language PITT CS 1621

  46. Scripting Languages for the Web • JavaScript • A joint venture of Netscape and Sun Microsystems • Used in Web programming (client side) to create dynamic HTML documents • Related to Java only through similar syntax • PHP • PHP: Hypertext Preprocessor • Used for Web applications (server side); produces HTML code as output • Python • An OO interpreted scripting language • Type checked but dynamically typed • Supports CGI and form processing PITT CS 1621

  47. Javascript • Dynamic typing • X=10;…..; x=“ten”; • 8+8=? … … 8+”8”=? …… “8”+8 =? • Embbed Javascript example PITT CS 1621

  48. PHP Example • Server side script vs Client side script • What is the response from the server? PITT CS 1621

  49. A C-Based Language for the New Millennium: C# • Part of the .NET development platform • Based on C++ , Java, and Delphi • Provides a language for component-based software development • All .NET languages (C#, Visual BASIC.NET, Managed C++, J#.NET, and Jscript.NET) use Common Type System (CTS), which provides a common class library • Likely to become widely used PITT CS 1621

  50. Markup/Programming Hybrid Languages • XSLT • eXtensible Markup Language (XML): a metamarkup language • eXtensible Stylesheet Language Transformation (XSTL) transforms XML documents for display • Programming constructs (e.g., looping) • JSP • Java Server Pages: a collection of technologies to support dynamic Web documents • servlet: a Java program that resides on a Web server; servlet’s output is displayed by the browser PITT CS 1621

More Related