Chapter 2 - Evolution of Major Programming Languages

0.0(0)
studied byStudied by 0 people
GameKnowt Play
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/47

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

48 Terms

1
New cards

Konrad Zuse (Tsoo-zuh)

  • 1936-1945

  • Built a series of complex computers from electromechanical relays

  • Developed a language called Plankalkul for expressing computations

2
New cards

John Mauchly

Developed a language named ShortCode for the BINAC

3
New cards

ShortCode

  • It consisted of coded versions of mathematical expressions.

  • Example statement: 00 X0 03 20 06 Y0

  • Machine implementation was pure interpretation, which was termed automatic programming.

  • More readable and writable than keying in the machine code equivalent, but at a cost of running 50 times slower.

4
New cards

Grace Hopper and her team at UNIVAC

  • 1950-1953

  • Developed a “compiling system” named A-0, A-1, and A-2

  • Programs were written in a type of code called pseudocode which was expanded into machine code subprograms

5
New cards

David J. Wheeler

  • 1950

  • Developed a method of using blocks of relocatable addresses

6
New cards

Maurice Wilkes

  • 1951

  • Extended David J. Wheeler’s idea to design an assembly program that could combine chosen subroutines and allocate storage

7
New cards

John Backus

  • Early 1950s

  • Developed a Speedcode system for the IBM 701 which extended machine code to include floating-point operations.

  • Instruction set included the four arithmetic operations for floating points, sqrt, sine, arc tangent, exponent and logarithm; conditional and unconditional branching; I/O conversions.

  • Novel facility of auto incrementing address registers.

  • Pure interpretation (slow  -“add” took 4.2 milliseconds)

  • Faster coding - Matrix multiplication could be coded in 12 instructions.

8
New cards

Alick E. Glennie

  • 1952

  • Developed Autocode compiler for the Manchester Mark I computer

9
New cards

Laning and Zierler

  • 1953

  • Developed an algebraic translation system

10
New cards

Fortran

  • 1954

  • The first important high level language

  • Created by John Backus and group at IBM

  • Designed specifically for numerical and scientific computation

11
New cards

Mid 50s

When did interest in AI emerge?

12
New cards

FLPL - Fortran List Processing Language

  • Extension to the Fortran compiler

  • Used to construct a theorem prover for plane geometry

13
New cards

Allen Newell, J.C. Shaw, Herbert Simon

  • 1956

  • Published a description of one of the first AI languages

  • IPL-I (Information processing Language)

14
New cards

Flow-Matic

  • 1957

  • Business oriented language for the UNIVAC

  • “mathematical programs should be written in mathematical notation, data processing programs should be written in English statements” – Grace Hopper, 1953

15
New cards

COBOL 60 - Common Business Oriented Language

  • 1959

  • Design goals: (1) Use English as much as possible (2) Easy to use, even at the expense of being less powerful, (3) Not to be overly restricted by the problems of its implementation

  • Characteristics: (1) Define verb for macros (2) Records (3) 30 character names with hyphens (4) Data division and procedure division (5) Mandated by the DOD

  • Standardized versions in 1968; 1974 (subprograms w/ parameters)

16
New cards

Fortan II compiler

  • 1958

  • Bug fixes

  • Independent compilation of subprograms

  • Made lengthier programs possible

17
New cards

ALGOL - Algorithmic Language

  • 1958

  • GAMM (Society for Applied Mathematics and Mechanics) and ACM (Assoc. for Computing Machinery)

  • Developed jointly by a committee of European and American computer scientists in a meeting in 1958 at ETH Zurich. 

  • Inspired many languages that followed it

18
New cards

LISP - List Processing

  • 1959

  • John McCarthy and Marvin Minsky

  • A functional language

  • Dominated for a decade

  • Originally interpreted

  • Descendants are: Scheme, Common LISP

  • Related language - ML (Meta Language)

19
New cards

IPL-V

  • 1960

  • Newell and Tonge

  • Demonstrated that list processing was feasible and useful

  • Actually an assembly language implemented in an interpreter with list processing instructions for the Johnniac machine

20
New cards

ALGOL 60

  • 1960

  • Formally described using Backus-Naur Form

  • New additions: Block structure concept, Pass by value and pass by name, Recursive procedures, Stack-dynamic arrays

  • Note that formatted I/O was omitted due to goal of machine independence

  • Parent: Fortran

  • Descendants: PL/I, SIMULA 67, C, Pascal, Ada, C++, Java

21
New cards

APL

  • 1960

  • Kenneth Iverson at IBM

  • Designed for describing computer architecture

  • Odd character set required for operators

  • Expressivity vs readability

  • Implemented in mid 60s

22
New cards

SNOBOL

  • 1960

  • D. J. Farber, R. E. Griswold, and I.P. Polonsky at Bell Labs

  • Designed for text processing.

  • Collection of powerful operations for string pattern matching

23
New cards

Common features of APL and SNOBOL

  • Not based on a previous language nor a basis for any languages

  • Dynamic typing and hence storage allocation

24
New cards

Fortran IV

  • 1962

  • One of the most widely used PLs

  • Explicit type declarations for variables

  • Logical If construct

  • Capability of passing subprograms as parameters 

  • 1966: Fortran 66 - its standardized version

25
New cards

BASIC - Beginner’s All-purpose Symbolic Instruction Code

  • 1963

  • John Kemeny and Thomas Kurtz

  • Goals: (1) Must be easy for non-science students to learn and use (2) Must be pleasant and friendly (3) Must provide fast turnaround for homework (4) Must allow free and private access (5) Must consider user time more important than computer time!

  • Characteristics: (1) Small, non interactive (2) Used through terminals (3) Single data type – fp – numbers (4) Resurgence with Visual BASIC in 90s.

26
New cards

PL/I

  • 1964

  • IBM

  • Goals: (1) Capable of both floating point and decimal arithmetic to support both scientific and business apps, as well as, support for list processing and systems programming! (2) Replace Fortran, LISP, COBOL and assembly languages.

  • Contributions: (1) ALGOL 60’s recursion and block structure (2) Fortran IV’s separate compilation with communication via global data (3) COBOL 50’s data structures, I/O and report generating facilities (4) A collection of new constructs

  • Failings: “I absolutely fail to see how we can keep our growing programs firmly within our intellectual grip when by its sheer baroqueness the programming language – our basic tool, mind you! – already escapes our intellectual control.” – Edsger Dijkstra 1972

27
New cards

Simula 67

  • 1967

  • Kristen Nygaard and Ole-Johan Dahl

  • Designed for system simulation, implemented in mid-60s

  • Features: (1) Extension of ALGOL 60 taking block structure and control statements (2) Support for coroutines via the class construct thus beginning the concept of data abstraction

28
New cards

ALGOL 68

  • 1968

  • Design Criteria – Orthogonality

  • Never achieved widespread use, but contributed several important ideas.

  • User defined data types

  • Flex arrays – Implicit heap-dynamic arrays

  • Orthogonality – a few primitive concepts and unrestricted use of a few combining mechanisms

  • Descendents: ALGOL-W

29
New cards

Pascal

  • 1971

  • Niklaus Wirth

  • Based on ALGOL 60

  • Primarily used as a teaching language; simple but expressive

  • Lacked essential features for many apps which led to non-standard dialects such as Turbo Pascal

30
New cards

C

  • 1972

  • Dennis Ritchie

  • Heritage was: (1) CPL - Cambridge early 60s (2) BCPL - Martin Richards 1967 (3) B - Ken Thompson 1970 First HLL under Unix (4) ALGOL 68

31
New cards

Prolog

  • 1975

  • Described by Philippe Roussel

32
New cards

Scheme

  • 1975

  • MIT

  • Small size

  • Exclusive use of static scoping

  • Functions are first-class entities – can be values of expressions and elements of lists; assigned to variables; passed as parameters and returned as values of function applications.

  • Simple syntax and semantics

33
New cards

Fortran 77

  • 1978

  • Character string handling

  • Logical loop control statements

  • If else

34
New cards

Smalltalk

  • 1980

  • Alan Kay who predicted computer “desktop” windowing environment

  • First language that fully supported OOP as a part of the Xerox Palo Alto Research Center (PARC) group

35
New cards

MetaLanguage

  • 1980s

  • Robin Milner

  • Functional but supports imperative

  • Syntax similar to imperative 

36
New cards

ADA

  • 1983

  • DoD - US Department of Defense

  • Climate: (1) More than 450 different languages were in use and none were standardized (2) Reuse and tools not feasible (3) High-Order Language Working Group was formed

  • Features: (1) Packages (2) Exception handling (3) Generics (4) Concurrency support

37
New cards

Common LISP

  • 1984

  • Designed to combine features of a number of different dialects of LISP that were developed during the 70s and 80s.

  • Large and complex

  • Allows both dynamic and static scoping

  • Basis is pure lisp

38
New cards

Miranda

  • 1984

  • Based on ML, SASL, and KRC

  • Functional, no variables, no assignment statement

  • Haskell is based on this but has the unique feature of lazy evaluation - No expression is evaluated until its value is required

39
New cards

C++

  • Bjarne Stroustrup at Bell Labs

  • Goals: (1) Provide a language with classes and inheritance (2) No performance penalty – reason array index range checking was not considered (3) It could be used for every application ofr which C was used – so left unsafe features of C

40
New cards

Fortran 90

  • 1990

  • Dynamic arrays

  • Records

  • Pointers

  • Multiple selection statement

  • Modules

  • Recursion

  • Obsolescent-features list

  • Dropped fixed format of code requirement

  • Convention – keywords & identifiers in uppercase 

41
New cards

Fortran 95

  • 1995

  • Forall added for parallelizing

42
New cards

ADA 95

  • Features: (1) Adding new components to those inherited from a base class (2) Dynamic binding of subprogram classes to subprogram definitions (polymorphism) (3) Protected objects

  • Success hindered by C++

43
New cards

Sh (shell)

A small collection of commands interpreted as calls to system subprograms to perform utility functions with added varaibels, control flow statements, functions andetc

44
New cards

Ksh

  • David Korn ‘95

45
New cards

Awk

  • Al Aho, Brian Kernighan, Peter Weinberger (’88) began as a report generation language

46
New cards

Tcl

John Ousterhout ’94

47
New cards

Perl

  • Larry wall

  • Combination of sh and awk

  • Designed as a UNIX tool for processing text files. Common Gateway Interface language as well.

  • Statically typed variables - $ scalar; @ arrays; % hash names

  • Arrays can be dynamic and sparse

  • Some dangers: (1) If a string is used in a numeric context and the string cannot be converted to a number, zero is used without warning (2) Array indexing cannot be checked since there is no set subscript range. References to non-existent elements return undef, which is interpreted as 0 in numeric context.

48
New cards

Fortran 2003

  • 2003

  • Parameterized derived types

  • OOP support

  • Procedure pointers

  • C interoperability