LECTURE 02
EVOLUTION OF THE
PROGRAMMING
LANGUAGES
CSE 325/CSE 425:
CONCEPTS OF
PROGRAMMING LANGUAGE
INSTRUCTOR: DR. F. A. FAISAL
INTRO
• We will not go through the in-depth discussion
of any language feature or concept.
• However, we will discuss the development of a
collection of programming languages.
• We will explores the environment in which each
was designed and focuses on the contributions
of the language and the motivation for its
development.
• In short, It will be the history analysis.
HISTORY AND EVALUATION OF
PROGRAMMING LANGUAGES
GENEALOGY OF
COMMON LANGUAGES
GENEALOGY OF COMMON
LANGUAGES(CONT.)
MAJOR PROGRAMMING
LANGUAGES
• Fortran
• LISP
• ALGOL 60
• COBOL
• Basic
• PL/I
• APL
• SNOBOL
• SIMULA 67
• Others
FORTRAN
• Is a general-purpose, imperative programming language
useful for numeric and scientific computing.
• Designed for IBM 704, which consists of index registers and
floating point hardware.
• Hence, no floating-point software
• run (# sysctl -n machdep.cpu.brand_string) (it’s dual core)
FORTRAN I: 1957 (FIRST
IMPLEMENTED VERSION)
• Environment of development
• Applications were focused on only scientific computations.
• Computers had small memories, slow and unreliable.
• No programming methodology or tools.
• Machine efficiency was the most important concern.
• Impact of environment on design of Fortran I
• No need for dynamic storage
• Need good array handling and counting loops
• No string handling, decimal arithmetic or powerful input/
output (for business software).
FORTRAN I OVERVIEW
• Names could have up to six characters
• Post-test counting loop (Do)
• Formatted I/O
• User-defined subprograms
• Three-way selection statement (arithmetic IF)
• No data typing statements
• No separate compilation
• Code is very fast
• Quickly become widely used
• Compiler released in April 1957, after 18 worker-years of effort!
• More than 400 codes of programs rarely compiled correctly,
mainly due to the reliability of 704.
FORTRAN (VERSIONS)
• Fortran II: 1958
• Fixed the bugs of Fortran I
• Independent compilation of subroutines (allows the shortened
compilation process and made it possible to write larger programs).
• Fortran III:
• Fortran III was developed, but was never widely distributed.
• Fortran IV: 1960-62
• Most widely used programming language at that time.
• Explicit type declarations for variables.
• Capability of passing subprograms as parameters to other
subprograms.
• Fortran 77: 1978
• Became the new standard
• Character string handling
• Logical loop control statement
• IF-THEN-ELSE statement
FORTRAN (VERSIONS)
• Fortran 90: 1990
• Most significant changes from Fortran 77
• Modules
• Dynamic arrays
• Pointers
• Recursion
• Case statement
• Parameter type checking
• Fortran 95
• minor additions, plus some deletions
• Fortran 2003
• Support for OOP, procedure pointers, interoperability with C
• Fortran 2008
• Blocks for local scopes, co-arrays, Do Concurrent, parallel execution
model
EXAMPLE
LISP: FUNCTIONAL
PROGRAMMING
• List-processing language
• Designed at MIT by McCarthy
• Al research needed a language
to
• Process data in lists (rather
than arrays)
• Symbolic computation (rather
than numeric)
• Only two data types: atoms and
lists
• Syntax is based on lambda
calculus.
Representing the lists (A B C D)
and (A (B C) D (E (F G)))
LISP EVALUATION
• P i o n e e r e d functional
programming
• No need for variables or
assignment
• Control via recursion and
conditional expressions
• Still the dominant language
for AI
• ML, Haskell, and F# are also
functional programming
languages, but use very
different syntax
ALGOL 60
• Environment of development:
• Fortran had 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
• Goal:
• Close to mathematical notation
• Good for describing algorithms
• Must be translatable to machine code
ALGOL 58
• Concept of data type was formalized.
• Names could have any length size.
• 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 has an else-if clause
• No I/O- “ would make it machine dependent”
ALGOL 58
IMPLEMENTATION
• Not meant to be implemented, but variations of it were
(MAD, JOVIAL) (JOVIAL was the official scientific
language for the U.S. Air Force for quarter century).
• Although IBM was initially enthusiastic, all support was
dropped by mid 1959.
ALGOL 60 OVERVIEW
• Modified ALGOL 58 at 6-day meeting in Paris
• New features-
• Block structure (local scope)
• Two Parameter passing methods (pass by value and pass
by name).
• Pass by name behave like a literal text-substitution.
• Subprogram recursion
• Stack-dynamic arrays
• Still no I/O and no string handling.
• Never widely used, especially for U.S.
EXAMPLE
COBOL (COMPUTERIZING
BUSINESS RECORDS)
• Development of business applications-
• UNIVAC was beginning to use FLOW-MATIC (is a compiled
language for business application) and not allowed as open
source.
• USAF use the AIMACO
• IBM was developing COMTRAN.
• COBOL Historical Backgrounds-
• Based on FLOW-MATIC
• FLOW-MATIC features-
• Names up to 12 characters, with embedded hyphens
• English names for arithmetic operators (no arithmetic
expressions)
• Data and code were completely separate.
• The first word in every statement was a verb.
COBOL DESIGN
PROCESS
• 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.
• 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.
EXAMPLE
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.
EXAMPLE
PL/I
• Is a procedural, imperative programming language
designed for scientific engineering, business and system
programming.
• Designed by IBM
• Background: by 1963
• Scientific users began to need more elaborate I/O, like
COBOL had, business users began to need floating point
and arrays for MIS.
• It looked like many shops would begin to need two kinds of
computers, languages, and support staff– (Damn Costly)
• The solution:
• Build a new computer to do both kinds of applications
• Design a new language to do both kinds of applications.
PL/I
• Design Process:
• Designed in five months by 3 X 3 Committee
• Three from IBM, 3 from SHARE
• Initial Concept
• An extension of Fortran IV
• Initially called as NPL (New Programming Language)
• Name changed to PL/I in 1965
• 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
TWO EARLY DYNAMIC
LANGUAGES: APL AND SNOBOL
• Characterized by dynamic typing and dynamic storage
allocation
• Variables are untyped-
• A variable acquires a type when it is assigned a value.
• Storage is allocated to a variable when it is assigned a
value. (Because before that there is no way to know the
the amount of storage that will be needed).
• APL (A Programming Language)
• Designed as a hardware description language at IBM by
Ken Iverson around 1960.
• Highly expressive (many operators, for both scalars and
arrays of various dimensions)
• Programs are very difficult to read.
• Still in use, minimal changes
TWO EARLY DYNAMIC
LANGUAGES: APL AND SNOBOL
• SNOBOL:
• Designed as a string manipulation language at Bell Labs
by Farber, Griswold, and Polensky in 1964
• Powerful operators for string pattern matching.
• Slower than alternative languages (and thus no longer
used for writing editors).
• Still used for certain text processing tasks.
THE BEGINNING OF DATA
ABSTRACTION: SIMULA 67
• Designed primarily for system simulation in Norway by
Nygaard and Dahl
• Based on ALGOL 60 and SIMULA !
• Primary Contributions-
• Co-routines- a kind of Subprogram
• Classes, objects and inheritance
TOP PROGRAMMING LANGUAGE IN 2020
THANKS