Please enable JavaScript.
Coggle requires JavaScript to display documents.
Evolution of The Major Programming Languages (Fortran (Fortran 0 (IBM…
Evolution of The Major Programming Languages
Plankalkul
Created in 1045 - First high-level programming language
Created by German scientist Konrad Zuse
Designed for Z4 (fourth machine after Z1, Z2, Z3)
Plankalkul has completed :
Advanced data structures (floating points, arrays, records)
Iterative statement (like 'for)
Never implemented
Published in 1972
Pseudocode
In 1940-1950
Computer not very usable (no HL programming language & assembly language)
Coding done in machine code
Machine code : not readable, error prone
Motivation for the creation of somewhat higher level languages
Short Code
Invented in 1949 for BINAC Computers
Later: UNIVAC I (first commercial electronic computer in US)
Created by John Mauchly
Codes directly implemented (not translated to machine language)
Using pure interpreter ( :check: Simplifies programming language :no_entry: Very Slow
Speedcoding
Created in 1054 for IBM 701
Created by John Backus
What Speedcoding can do :
Floating-point operations
Arithmetic operations
Square root
Sine
Arc
Conditional & Unconditional Branches
:no_entry: Slow (Interpreter takes a lot of place in computer memory )
UNIVAC Compiling System
Created in 1951-1953 for UNIVAC
Series of compiling systems (A-0, A-1, A-2)
Created by a team led by Grace Hopper
Expanded pseudocode into machine code subprograms
Still primitive but great improvement over machine code because source programs much shorter
Fortran
Fortran 0
IBM worked at Fortran
1954: John Backus + group released a report: The IBM Mathematical FORmula TRANslating system: Fortran
1st version of Fortran : Fortran 0
Efficiency of machine code +Ease of
use of pseudocode
Include little syntax error checking
Never implemented
Fortran I
Released: April 1957
Featured:
Input/output formatting
Up to 6 characters variable name
User-defined subroutines
“if” statement
“do” loop statement
Some issues:
No separate subroutine compilation (must recompile entire program)
Program larger than 400 lines – often failed to compile due to machine
failure (704’s restrictions)
Impact:
Code produced very fast
Widely used
Fortran II
Released: Spring 1958
Fixed many bugs
Add: Independent compilation of
subroutines
Fortran IV
Improvement:
Explicit type declarations for variables
Logical “if” construct
Capability to pass subprograms as
parameters to other subprograms
Fortran 77
Retained most features of Fortran IV
Added:
Character string handling
Logical loop control statement
If with else clause
Fortran 90
Dramatically different from Fortan 77
Additions:
Dynamic arrays
Records
Pointers
Multiple selection statement (case statement)
Modules
Subprograms can be recursively called
Fortran 95
Only few changes, new iteration
construct: for all
Fortran 2003
Supports for OOP
Parameterized derived types
Procedure pointers
Interoperability with C programming
language
Impacts:
Dramatically changed forever the way
computers are used
First widely used High Level
programming language
Functional Programming
LISP
Year: 1954 at MIT
Created by: John McCarthy
Investigations found: method must be developed to allow computers to process symbolic data in linked list
LISP: LISt Processing
LISP has only two kind of data structures:
Atoms
List
Pioneered functional programming
Dominated AI applications for over 25 years
SCHEME
Year: Mid 1970s in MIT
Characteristics:
Small size
Static scoping
Functions as first-class entities
Well suited for educational applications in
functional programming
COMMON LISP
Problem is portability because there were
many dialects of LISP
COMMON LISP: rectify
Combines features of several dialects of LISP including Scheme to a single language
Results: LARGE & COMPLEX
First Step Towards Sophistication
Late 1950’s: a lot of languages were introduced, but
they were machine dependent
Association for Computing Machinery (ACM) in 1957 formed a committee to study & recommend a machine-independent scientific programming language
Same concerns were shared with German Society for
Applied Mathematics & Mechanics (GAMM)
1958: ACM + GAMM have design meetings and
come out with ALGOL 58
ALGOL 58
Year: 1958
Descended from FORTRAN & added several new
features:
Compound statement
Identifiers of any length (e.g int
supercalifragilisticexpialidocious)
Any number of array dimensions
IBM were first enthusiastic, but by mid 1959 all supports
were dropped
Why? IBM & SHARE have vested interests in Fortran &
don’t want to train users in new language
ALGOL 60
Year: 1960 – second ALGOL meeting held
in Paris
Modifications:
Concept of block structure (local scopes)
Two parameters passing methods: pass
by value & pass by name
Recursive procedures
Stack dynamic arrays
ALGOL 60
Successes
It was the standard way to publish algorithms for over 20 years
All subsequent imperative languages are based on it
First machine-independent language
First language whose syntax was formally defined (BNF)
Failure
Never widely used, especially in U.S.
Reasons
Lack of I/O and the character set made programs non-portable
Too flexible--hard to implement
Most users are already comfortable with Fortran.
Lack of support from IBM
Scripting Languages
PHP
HTML embedded server-side language & interpreted by web server
Usage:
Web applications
Supports access to many different database management systems
JavaScript
Client-side script, embedded in HTML & interpreted by browser
Main usage:
Validate form input
Create dynamic HTML documents
JSP
Java Server Pages: a collection of technologies to support dynamic Web
documents
servlet: a Java program that resides on a Web server and is enacted when called by a
requested HTML document; a servlet’s output is displayed by the browser
JSTL includes programming constructs in the form of HTML elements
Imperative-based OO Language
JAVA
Usage of JAVA increased faster than any other
programming languages
The rise of graphical browser makes JAVA and its ability to
embed applets popular
Programmers also like its design - JAVA has as much
power as C++ but is simpler & safer
Compiler/Interpreter of Java are also free and widely
available
Combining Imperative and Object-Oriented
Programming
C++
1980 by Stroustrup at Bell Labs
Evolved from C and SIMULA 67
Facilities for object-oriented programming, taken partially
from SIMULA 67
Provides exception handling
A large and complex language, in part because it supports
both procedural and OO programming
Rapidly grew in popularity, along with OOP
ANSI standard approved in November 1997
Object Oriented Programming
Smalltalk
Developed at Xerox PARC, initially by Alan Kay, later
by Adele Goldberg
Beginning of Data Abstraction
SIMULA 67
1967
Kristen Nygaard & Ole-Johan Dahl
Primarily for computer simulation
Contributions:
Coroutines – subprograms that can be restarted where it stopped
Classes – concept of data abstraction began with this
Pioneered the graphical user interface design
Promoted OOP
Computerizing Business Records
FLOW-MATIC
Grace Hopper (1953) said : "Mathematical programs should be written in mathematical notation, data processing programs should be written in English statement"
1955: Flow-Matic released: 1st English-like data processing language.
COBOL
Took a lot of design cues from FLOW-MATIC
FLOW-MATIC = Mother of COBOL
December 1959 : the same COBOL program ran successfully on an RCA Computer and a UNIVAC computer – proof that it is machine independent
Language creation undertaken quickly (a lot of other computer manufacturers were already working on their version of business app language)
CONTRIBUTIONS
1st macro facility in high-level language
Hierarchical data structures (records)
Long names (up to 30 characters)
Division
Identification
Environment
Data
Procedure
The Beginning of Timesharing
BASIC : Beginners All-purpose Symbolic Instruction Code
Year: 1963
John Kemeny & Thomas Kurtz
Goal
Easy for nonscience students to learn & use
Must be pleasant and friendly
Must provide fast turnaround for homework
Must allow free and private access
Must consider user time more important than computer time
1st May 1964 :First program using time shared BASIC typed & run between two teletypes
BASIC: resurgence when Microsoft
introduced Visual Basic
PL/I
1960: 2 camps
Scientific Programmers
Business Applications
1963: Scientific & Business computing
Scientists: use large files, need input & output facilities
Business: need floating point & arrays for Management Information System
1964
IBM manufactured a computer capable of handling both needs
idea came for both scientific + business applications
1964: The new language: PL/I combined features from FORTRAN + ALGOL + COBOL
Results:
Too large and complex
Programmers have very hard time understanding
Contributions:
First exception handling
Pointer data type
Can refer cross sections of arrays
Two Early Dynamic Languages
SNOBOL
1964
Farber, Grisworld & Polensky
Features powerful operators for string pattern matching
Slower than other languages – no longer used for writing text editors
APL: A Programming Language
1960
Kenneth E. Iverson
Originally as tool to describe computer architecture
Have very large number of powerful operators that uses large number of symbols
These operators provide very high expressivity but difficult to read and implement
APL & SNOBOL
most noted features: dynamic typing & dynamic storage allocation
Untyped variables
Variable acquires type when it is assigned a value
Storage allocated only when variable assigned value
Beginning of Data Abstraction
SIMULA 67
1967
Kristen Nygaard & Ole-Johan Dahl
Primarily for computer simulation
Contributions:
Coroutines – subprograms that can be restarted where it stopped
Classes – concept of data abstraction began with this
Orthogonal Design
ALGOL
Year: 1968
Orthogonality in ALGOL 68:
Provide few primitive data types constructs=user can combine to create user-defined data types
Also featured dynamic arrays
Ideas in ALGOL 68 influenced: Pascal,C,Ada programming languages
PASCAL
Year: 1971 by Nicklaus Wirth(former member of ALGOL 68 Committee)
Designed for teaching structured programming
Largest impact was on teaching programming:
From mid-1970s until the late 1990s,it was the most widely used language for teaching programming
Small,simple
Programming Based on Logic
PROLOG
Year: 1972 by team led by Alain Colmerauer
Based on formal logic
Can be summarized as:
an intelligent database system that uses an inferencing process to infer the truth of given queries
Highly inefficient,small application areas
Non-procedural
History's Largest Design Effort
ADA
Based on
Strawman requirements
Woodman requirements
Tinman requirements
Ironman requirements
Steelman requirements
Commisioned by Department of Defense - huge design efforts that involved hundreds of people,money and 8 years
Contributions
Packages - support for data abstraction
Elaborate 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
Named ADA: after world's first computer programmer
ADA 95
Support for OOP through type derivation
Better control mechanisms for shared data
New concurrency features
More flexible libraries
Popularity suffered because the DoD no longer requires its use but also because of popularity of C++