Skip to main content

Language Specifications: Evolution of Programming Languages

Language Specifications
Evolution of Programming Languages
    • Notifications
    • Privacy
  • Project HomeTools and Techniques in Software Engineering
  • Projects
  • Learn more about Manifold

Notes

Show the following:

  • Annotations
  • Resources
Search within:

Adjust appearance:

  • font
    Font style
  • color scheme
  • Margins
table of contents
  1. Introduction to BNF Notation
  2. Evolution of Programming Languages
  3. Compilers
  4. Algol 60
  5. Bibliography

Evolution of Programming languages

Early Years

  • Plankalkül – 1945
    • Never implemented
    • published only in 1972
    • Advanced data structures: floating point, arrays, records
  • FORmulaTRANslator
    • I (1957), II(1958), IV(1962),77, 90
    • First implemented language
    • Focus on scientific applications
    • Arrays, floating point, counting loops

Languages of the Sixties

  • Algol 60 (1960)
    • block structure
    • call-by-value, call-by-name
    • records
    • recursion
    • dynamic arrays: the size of the array is set at the time storage is allocated to the array.
    • BNF syntax
    • All subsequent procedural languages based on it
    • Algorithm publication language for over 40 years
  • COBOL (1960):
    • Business oriented:
    • Elaborate reports, decimals
    • Provides more precision with data formats than other languages
    • Very English like
    • Still in use today
  • LISP (LISt Processing language):
    • Functional programming
    • No need for variables or assignment
    • Control via recursion and conditional expressions
    • Still the dominant language for AI

Languages of the Seventies

  • Pascal: simplified/improved Algol
  • Prolog
  • C: systems programming
  • Smalltalk
    • First full implementation of an object-oriented language (data abstraction, inheritance, and dynamic type binding)
    • Pioneered the graphical user interface everyone now uses

Languages of Eighties and Beyond

  • Ada:
    • Packages, exceptions
  • C++:
    • Developed at Bell Labs
    • Evolved from C and SIMULA 67
    • Also has exception handling
    • A large and complex language, in part because it supports both procedural and OO programming Java:
  • Developed at Sun in the early 1990s
  • Based on C++
    • Significantly simplified (does not include struct, union, pointer arithmetic)
    • Supports only OOP
    • Has references, but not pointers.

There are several “branches” of computer languages that emerged over the decades. Many, many languages have been invented over the decades but only a small percentage endure for different reasons.

Language Evaluation Criteria

Evaluate features of languages, focusing on their impact on the software development process, including maintenance.

  • Readability: the ease with which programs can be read and understood.
    • Control structures
    • Data types and structures
  • Writability: the ease with which a language can be used to create programs.
    • Support for subprograms
    • Support data abstractions and encapsulation constructs
    • Expressions and assignment statements
  • Reliability:
    • Type checking
    • Exception handling
  • Cost:
    • Training programming to use the language
    • Language closeness to the particular application.
    • The cost of maintaining program

Mother Tongues of Computer Languages

Genealogical Tree of Main Programming Languages

On the left side of the figure above are mostly functional programming languages. As you can see, the languages tend to continue evolving in their paradigm. Sometimes you’ll see different kinds of evolution patterns such as Rust, which is a multi-paradigm language.

Annotate

Next Chapter
Algol 60
PreviousNext
Software Engineering
Powered by Manifold Scholarship. Learn more at
Opens in new tab or windowmanifoldapp.org