You are on page 1of 58

Evolution of

programming languages:
From Start to the Present

By: Bryan Dadiz

1
Overview
Prehistory of programming languages
The story of the programmers of Babylon
The story of Mohammed Al-Khorezmi
The story of Augusta Ada, Countess of Lovelace
Generation of programming languages
Genesis of high-level languages
Third Generation
Fourth Generation
Fifth Generation
Babylon
Cuneiform writing was used in the Babylon, founded
by Hammurabi around 1790 BC
Many Babylonian clay tablets survive:
 poems and stories
 contracts and records
 astronomy
 math, base 60

A famous Babylonian math tablet


(Plimpton 322) involving Pythagorean
triples, a2+b2=c2 -- with a mistake!
3
Babylonian Numbers
The two Babylonian digits for “1” and “10”, written
together, signify a number base 60
The exponent is not given; the reader must figure it
out from the context

1 × 601 + 10 × 600 = 70
1,10 = 1 × 600 + 10 × 60 −1 = 1 1 6

1 × 60i +1 + 10 × 60i

4
A Babylonian Program
Written language to describe computational
procedures:

A cistern.
The length equals the height.
A certain volume of dirt has been excavated.
The cross-sectional area plus this volume comes to 1,10.
The length is 30. What is the width?
You should multiply the length, 30, by …

Translation by Donald Knuth

5
Programming Language
No variables
Instead, numbers serve as a running example of
the procedure being described
“This is the procedure”
Programming is among the earliest uses to which
written language was put

6
Prehistory of programming languages

The story of Mohammed Al-Khorezmi

7
Baghdad
Near ancient Babylon
Founded around 762
A great center of scholarship, art and poetry
780-850: Mohammed Al-Khorezmi, a court
mathematician, lived and wrote
Two little books…

8
Algebra
Kitâ al-jabr wa'l-muqabâla
Translated into Latin, spread throughout Europe
Used as a mathematics text in Europe for eight
hundred years

9
Algorithms
The original is lost
Latin translation: Algorthmi de numero Indorum
Algorithms for computing with Hindu numerals:
base-10 positional system with 0
A new technology (data structure and algorithms)
Strongly influenced medieval European
mathematics

10
Other Early Written Algorithms
Euclid, 300 BC: an algorithm for computing the GCD
of two numbers
Alexander de Villa Dei, 1220 AD: Canto de Algorismo,
algorithms in Latin verse
Not programming languages: natural language (even
poetry) plus mathematics

11
Prehistory of programming languages

The story of Augusta Ada, Countess of Lovelace

12
Augusta Ada
Daughter of George Gordon, Lord Byron
Early 1800’s in England (as elsewhere) women were
generally denied education, especially math and
science
Ada studied math with a private tutor (as an antidote
to feared Byronic tendencies)
Married at 19 (Lady Lovelace), 3 children

13
Charles Babbage
English mathematician
Inventor of mechanical computers:
Difference Engine, construction started but not
completed (until a 1991 reconstruction)
Analytical Engine, never built

I wish to God these calculations had been executed by steam!

Charles Babbage, 1821

14
Analytical Engine
Processing unit (the Mill)
Memory (the Store)
Programmable (punched cards)
Iteration, conditional branching, pipelining, many
I/O devices

15
Sketch of the Analytical Engine
A paper by Luigi Menabrea
Published 1843
Translated, with explanatory notes, by A.A.L.
Algorithms in a real programming language: the
machine language of punched cards for the Analytical
Engine

16
Not Just For Numbers
The bounds of arithmetic were however outstepped the moment the idea
of applying the cards had occurred; and the Analytical Engine does not
occupy common ground with mere "calculating machines." … In enabling
mechanism to combine together general symbols in successions of
unlimited variety and extent, a uniting link is established between the
operations of matter and the abstract mental processes of the most
abstract branch of mathematical science.
A.A.L.

17
Why look at the history?
• To understand PL evolution which adds to a
persons understanding to PL.

• we can see that most features are general and are


available in many languages.

• We say that many features of “modern” languages


have actually been around for many years.

18
Genesis of high-level languages
In the early days computers were programmed directly
in hardwires.
Sometimes the instructions were written directly as
numbers (machine language).

More conveniently, they were written in a human-


readable version of machine code that was
automatically translated by an assembler.

Machine and assembly language are sometimes


referred to as the first two generations of programming
language.
19
The third generation
In the 1950s and 1960s programmers began to realise that
 were very low level,
 tedious to write,
 and only usable on a specific type of computer.
The third generation of languages is the beginning of the
high-level languages.
The main advance to become portable to more than one
type of hardware.
High-level languages require some form of compiler or
interpreter to map the language down to the hardware.

Similar to everyday English and use mathematical notations


20
Forth & fifth generation
Forth-generation languages
Also uses English-like statements but is a nonprocedural language
 Used to access databases
 Used to build “fill-in-the-blank” input forms

Fifth-generation languages
- Provides a visual graphical interface for creating the source
code

21
Early high-level languages
The most famous early imperative high-level languages
are FORTRAN, COBOL and ALGOL 60.
FORTRAN
COBOL
ALGOL 60

22
A different view of the world
• Other early languages pioneered non-imperative
paradigms.
• Lisp emerged in the 1960s as a pure functional
language although it absorbed some imperative
features as time went on.
• APL is also functional in nature. Its strength is
very high-level operations that use matrices.
• SNOBOL was an early language designed for
manipulating strings.

23
Advances in high-level languages
• The 1970s brought many new languages, building
on experiences with the early ones.

• Pascal which is an ALGOL-like imperative


language that gained a vast following primarily
due to its utility for teaching programming.

• Simula which is the first mainstream language to


have object-oriented features (with an imperative
core).

24
Non-imperative paradigms
• Smalltalk is the most famous object-oriented
language. It took some of the concepts of Simula.

• Prolog pioneered the idea of logic programming


where we can program with relations.
Prolog is also one of the most popular
declarative languages, so-called because they let
you specify what you want to happen rather than
how it should happen.

25
Modern languages
• C is arguably the most widely used imperative
language today.
• Various languages have branched away from C by
adding object-oriented features. The most obvious
are C++, Java and C#.
• Delphi is an object-oriented descendant of Pascal.
• Modern functional languages like ML and Haskell
have built on the concepts pioneered in Lisp. In many
ways they are also declarative.

26
Scripting languages
These languages are designed for rapid application
development and deployment, but are not really suitable
for large programs due to inefficiency and lack of safety
features such as strong typing.
Widely used scripting languages are Perl, Python and Tcl.

27
FORTRAN (1954-1957)
IBM “FORmula TRANslating system” for IBM 704
computer
Major emphasis on compiler producing efficient code
Became the major scientific/engineering
programming language
Much evolution: FORTRAN II, FORTRAN IV,
FORTRAN 66, FORTRAN77, FORTRAN90

28
Overview of FORTRAN IV
Column 1 used to indicate comment lines
Column 2-5 used for line numbers (optional)
Data: integer, real, arrays (no chars, records or
pointers!)
Variable declararions are optional (variables starting
with I..N are integer, others are real

29
Overview of FORTRAN IV…

EQUIVALENCE declaration causes variables to be


aliased (dangerous!)

30
COBOL (1959-1960)
• Common Business-Oriented Language
• Developed in 1959 by a group of computer
professionals called the Conference on Data
Systems Languages (CODASYL).
• COBOL was the first programming language whose
use was mandated by the US Department of
Defense

31
COBOL…
English – like verbose syntax (Goal: Human readability)

Largely ignored by the academic community

And if you thought COBOL was dead…

Think again..
Object-oriented COBOL is a subset of COBOL 97, which
is the fourth edition in the continuing evolution of
ANSI/ISO standard COBOL

33
ALGOL 60 (1958-1960)

• ALGOrithmic Language: general expressive


language for describing algorithms
• Used widely in Europe and academia in USA
• Modern syntax: defined using BNF, structure
statements, with begin/end pairs
• Type declarations required for all variables

34
ALGOL60…
Introduced recursion, call-by-name and call-by-value
Required stack-based runtime environment
Huge influence on later languages: Pascal, C, Module-
2, Ada etc

36
LISP (1956-1962)
• The first functional language
• The first language to include garbage collection
• Syntax was radically different – lots of parentheses
• Efficiency not a huge concern. Ideas more
important
• Still heavily used today for AI research and
applications

37
Reverse a list

(Defun reverse (x)


(cond ((null x) NIL)
(T (append (reverse (rest start))
(list (first start))))))

39
Another Example
1960’s
PL/1 (1963-1966)
Intended as an extension of FORTRAN
“The language to end all languages”
A huge language containing many features, with
complex interactions and many special cases and
exceptions
Compilers were huge, slow and unreliable

41
1960’s..
Simula (1963-1966)
• The first object-oriented language
• An extension of ALGOL60, intended for writing simulations
• Introduced classes and inheritance

ALGOL68
• A highly general, orthogonal language with no restrictions
• Complex to implement

42
BASIC (1964)
Intended as a simple language for interactive use
Easy to implement, even on small machines
Widely used on PC’s but many different versions
The term “spaghetti code” commonly used to
describe code written in BASIC

Spaghetti code is a pejorative term for source


code that has a complex and tangled control
structure, especially one using many GOTOs,
exceptions, threads, or other
"unstructured" branching constructs.
43
Sample Spaghetti Code
10 i=0
20 i=i+1
30 PRINT i; " squared = "; i * i
40 IF i >= 10 THEN GOTO 60
50 GOTO 20
60 PRINT "Program Completed."
70 END
1970’s: Humility and
Thoughtfulness
A new emphasis on simplicity and underlying theory

“There are two ways to of constructing a software design.


One way is to make it so simple that there are obviously
no deficiencies. And another way is to make it so
complicated that there are no obvious deficiencies” C.A.
Hoare

45
1970’s
PASCAL (1972)
• Small simple ALGOL-based language for
teaching
• Elegant data structuring: records, arrays, files,
sets
• Slogan: Algorithms + Data Structures =
Programs
• Became the most taught language in universities

46
1970’s
• C (1972)
• Low-level language for writing an operating system
• Very popular, but why?

“Well you know, C isn’t hard: void (*(*f[])())() declares f as


an array of unspecified size, of pointers to functions that return
pointers to functions that return void…I think”

“Lisp in action is like a finely choreographed ballet.


Ada in action is like a waltz of drugged elephants.
C in action is like a sword dance on a freshly waxed floor.”
Chris Ross

47
1970’s
• Prolog (1972-1980)
– The first logic language
– Efficient compilers only available in late 1980s and
1990s

• Smalltalk (1972-1980)
– The first pure object-oriented language
– Included a powerful interactive development, with
windowing system, menus and mouse.

48
1980’s Consolidation and Declarative
Languages
Several new functional languages
Much research on variants of logic programming
Implementation of functional/logic languages
improves
Renewed interest in object-orientation (esp. 1986
onwards

49
1980’s…
Ada (1980-1983)
Large and complex Pascal-like language by US
department of Defense
Strengths include: machine-independent arithmetic,
generic packages, concurrency and exceptions
Ada95 adds object-orientation

50
1980’s…
Modula-2
An improved Pascal with good abstraction features
Became a popular teaching language at universities

51
1980’s…
C++ (1980-1990)
C extended with object-orientation
A comprise language to enable C compatibility
Currently, the most widely used object-oriented
language

52
1980’s…
Eiffel
A clean powerful object-oriented language, somewhat
Ada-like
Includes some powerful program correctness facilities
(pre/post-conditions, class invariants)

53
1990’s
JAVA
Object-oriented language that produces applets.
Developed by Sun Microsystems.
Runs on multiple (all?) platforms.
Developed for use on the Internet.

54
1990’s
PERL (1990)
Practical Extraction and Reporting Language
Pathologically Eclectic Rubbish Lister
Scripting language
“Duct tape of the internet”

55
1990’s..
PHP (1994-1995)
Perl cgi program called “Personal Homepage Tools”
Used to create dynamic web pages
Nowadays also known as “PHP: Hypertext Pre-
processor.”

56
1990’s…

Visual Basic
• Proprietary language owned by Microsoft
• Good for creating quick and simple interface to
other Microsoft products

57
End

Thank you very much!

58

You might also like