Lecture 2 - Evolution of Major Programming Languages
Lecture 2 - Evolution of Major Programming Languages
Zuse’s Plankalkül
The IBM 704 and Fortran
Functional Programming: LISP
The First Step Toward Sophistication: ALGOL 60
Computerizing Business Records: COBOL
The Beginnings of Timesharing: BASIC
Everything for Everybody: PL/I
Agenda
Distributed in 1958
Independent compilation
Fixed the bugs
Fortran IV
Design committee members were all from computer manufacturers and DoD branches
It was created as part of a US Department of Defense effort to create a portable
programming language for data processing.
The Beginning of Timesharing: BASIC
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--too costly
The obvious 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 the 3 X 3 Committee: three members from IBM, three
members from SHARE
Initial concept: an extension of Fortran IV
Initially called NPL (New Programming Language)
Name changed to PL/I in 1965
PL/I: Evaluation
PL/I contributions
First unit-level concurrency
First exception handling
Switch-selectable recursion
First pointer data type
Concerns
Many new features were poorly designed
Too large and too complex
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
Coroutines - a kind of subprogram
Classes, objects, and inheritance
Orthogonal Design: ALGOL 68
Contributions
User-defined data structures
Reference types
Dynamic arrays (called flex arrays)
Comments
Less usage than ALGOL 60
Had strong influence on subsequent languages, especially Pascal, C, and Ada
Pascal - 1971
The Ada language was developed for the Department of Defense (DoD)
Huge design effort, involving hundreds of people, much money, and about eight years
Named Ada after Augusta Ada Byron, the first programmer
Ada Evaluation
Contributions
Packages - support for data abstraction
Exception handling
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
Ada
Ada
Ada 95
Perl
Designed by Larry Wall—first released in 1987
Variables are statically typed but implicitly declared
Three distinctive namespaces, denoted by the first character of a
variable’s name
All scalar variable names begin with dollar signs ($),
All array names begin with at signs (@), and
All hash names begin with percent signs (%)
Scripting Languages for the Web
Perl
Scripting Languages for the Web
JavaScript
Began at Netscape, but later became a joint venture of Netscape and Sun Microsystems
A client-side HTML-embedded scripting language, often used to create dynamic HTML
documents
Purely interpreted
Related to Java only through similar syntax
Scripting Languages for the Web
PHP
PHP: Hypertext Preprocessor, designed by Rasmus Lerdorf
A server-side HTML-embedded scripting language often used for form,
processing and database access through the Web
Purely interpreted syntax
Scripting Languages for the Web
Python
An OO interpreted scripting language
Supports lists tuples and hashes
Scripting Languages for the Web
Ruby
Designed in Japan by Yukihiro Matsumoto (a.k.a, “Matz”)
Began as a replacement for Perl and Python
A pure object-oriented scripting language
All data are objects
Most operators are implemented as methods, which can be redefined by user code
Purely interpreted
Scripting Languages for the Web
Lua
An OO interpreted scripting language
Supports lists tuples and hashes all with its single data structure
Easily extendable
TASK:
Select one of the programming languages listed below:
Perl
Algol 60
Simula 67
Go
Delphi
FLOW-MATIC
COBOL 60
Scheme
C#
Lua
Haskell
Prolog
TASK: