Evolution of Programming Languages
Evolution of Programming Languages
Before starting with the evolution of programming languages, I will discuss meaning of
BEFORE 1940:
The first programming languages predate the modern computer. At first, the languages were
codes.
The Jacquard loom, invented in 1801, used holes in punched cards to represent sewing loom arm
movements in order to generate decorative patterns automatically.
During a nine-month period in 1842-1843, Ada Lovelace translated the memoir of Italian
mathematician Luigi Menabrea about Charles Babbage's newest proposed machine, the
Analytical Engine. With the article, she appended a set of notes which specified in complete
detail a method for calculating Bernoulli numbers with the Engine, recognized by some
historians as the world's first computer program.
Herman Hollerith realized that he could encode information on punch cards when he observed
that train conductors encode the appearance of the ticket holders on the train tickets using the
position of punched holes on the tickets. Hollerith then encoded the 1890 census data on punch
cards.
Assembly:-Assemblers exist since the beginning of computers. They associate a symbolic name
to the machine-language code
for example
add bx, 4
cmp [adr], 3
jmp address
Assembly programming is no longer frequently practiced, even to build fast routines...
multitasking. IPL pioneered the concept of list processing, albeit in an assembly-language style.
Mac Carthy. Functional language for list processing. It is purely recursive, and not iterative.
There is no difference between code and data. Lisp is the second-oldest high-level programming
language in widespread use today. Lisp was originally created as a practical mathematical
notation for computer programs. It quickly became the favoured programming language
for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp
pioneered many ideas in computer science, including tree data structures, automatic storage
management, dynamic typing, and the self-hosting compiler
Algol - 68 - ALGORITHMIC Language
ALGOL was the first second-generation programming language and its characteristics are typical
of the entire generation. First consider the data structures, which are very close to first generation
structures. In ALGOL 60 the block structure was introduced: the ability to create blocks of
statements for the scope of variables and the extent of influence of control statements. Along
with that, two different means of passing parameters to subprograms; call by value and call by
name. Structured control statements: if - then - else and the use of a general condition for
iteration control were also features, as was the concept of recursion: the ability of a procedure to
call itself.
Has been designed in 1963, to be easy to learn and has been implemented in 1964. The first
version was compiled, then it becomes interactive and interpreted. Each line has a number to
allow GOTOs statements to jump to the line! Bill Gate and Paul Allen have win an international
contest by designing and implementing a fast and compact Basic, firstly for the Altair (in 4 kb
memory!) and then on other micro-computers.Micro-computers were delivered with Basic in
ROM until late 80.In 1977, the Apple II was sold with an integer Basic. Then the Applesoft
Basic of Microsoft with floating-point.Applesoft was using two-letter identifiers!
Logo - 1966
Aimed to teach programming to children, near Lisp, and based on moving a "turtle" on the
screen.
Snobol appeared in 1962.Snobol 4 is the first stable distributed version of Snobol, available in
1967.
This is a processor of strings, founded on the principle of pattern-matching, concatenation and
alternation.
It was the first language to implement associative arrays, indexed by any type of keys.
It allows to run code stored inside strings. Data types are: string, integer, real, array, table,
pattern and user-defined types.
Cambridge and London Universities .This was a combination of Algol 60 and functional
language aimed at proof of theorems. It was using polymorphic testing structures. It was heavily
influenced by ALGOL 60 but, instead of being extremely small, elegant and simple, CPL was
intended for a wider application area than scientific calculations and was therefore much more
complex and not as elegant as ALGOL 60. CPL was a big language for its time. CPL attempted
to go beyond ALGOL to include industrial process control and business data processing, among
other things. CPL was also intended to allow low-level programming and high level abstractions
using the same language.However, CPL was only implemented very slowly. Properly working
compilers were probably written by about 1970, but the language never gained much popularity
and seems to have disappeared without trace sometime in the 1970s.A later language based on
CPL, called BCPL (for Basic CPL, although originally Bootstrap CPL) was a much simpler
language intended primarily as a systems programming language, particularly for
writing compilers.
PL/1 - 1965? - Programming Language number One - Originally NPL (New Programming
Language):The language was designed to be general-purpose and modular.Keywords are
reserved only in the context where they are used as keywords. It is more hardware independent
than predecessors. These types are recognized: fixed, real, complex, character, bit, bin, pointer,
picture, file, etc.... Data have default attributes (as precision for example), that depends upon the
context.These compound types are built-in: array, structures, unions, and combinations of them.
IF THEN and SELECT .. WHEN .. OTHERWISE are conditional structures, and variations on
the DO structure allows various conditional loops.Storage classes are introduced: automatic,
static (life of the program), controlled, based. Exceptions are implemented.
1967-1978:
The period from the late 1960s to the late 1970s brought a major flowering of programming languages.
Most of the major language paradigms now in use were invented in this period. The 1960s and 1970s
also saw considerable debate over the merits of "structured programming", which essentially meant
programming without the use of Goto. This debate was closely related to language design: some
languages did not include GOTO, which forced structured programming on the programmer. Although the
debate raged hotly at the time, nearly all programmers now agree that, even in languages that provide
GOTO, it is bad programming style to use it except in rare circumstances. As a result, later generations
of language designers have found the structured programming debate tedious and even bewildering
Simula 67 - 1962-67
Simula is a name for two programming languages, Simula I and Simula 67, developed in the
1960s at the Norwegian Computing Center . Simula 67 introduced objects, classes,
subclasses, virtual methods, coroutines, discrete event simulation, and features garbage
collection. Simula is considered the first object-oriented programming language. As its name
implies, Simula was designed for doing simulations, and the needs of that domain provided the
framework for many of the features of object-oriented languages today. Simula has been used in
a wide range of applications such as simulating VLSI designs, process modeling, protocols
,algorithms, and other applications such as typesetting, computer graphics, and education.
Pascal - 1970 - Named from the french mathematician Blaise Pascal
Niklaus Wirth
Language aimed to ease the building of compilers, and to lead teaching by forcing to a structured
programming.UCSD Pascal, written by a group of programmers leaded away by Kenneth
Bowles is the first version for micro-computers. It compiles programs in P-code, that is portable
and interpreted (as Java later). It included a complete development environment, a principle used
successfully further by Turbo Pascal.In 1981, a role playing game written in Pascal, Wizardry,
has had a big success on Apple II.When Turbo Pascal (by Anders hejlsberg) appeared in 1983 ,
fast and having a complete IDE, the language gained success and is still widely used.Control
structures are near C ones.
Forth - 1971 - Fourth reduced to Forth by the constraint of 5 letters of the IBM 1130
Charles H. Moore
Defined during 60+, seems to have been implemented in 1971. Language for astronomical
instruments using a stack to replace variables.Its goal was to be the fourth generation language.
Smalltalk - 1972
Dennis Ritchie
It was firstly destinated to program the UNIX operating system, but has become quickly
universal thanks to its portability and speed. Allows incremental compiling. In 1965, ATT
programmers were using Bcpl to work on implementing Unix. Displeased with this language,
they made it evolve to a new version named B, then to a new language named C.
This was the evolving of the hardware that instigate to create C. Bcpl and B was using integer for
pointers, but this was not working on the new computers. Bcpl has no type (as Php or other
modern scripting languages!). The declarations int i, char b were created in C. Other types will
appear later.
Prolog - 1970+
Colmerauer, D. Roussel
IBM
Functional language inspired by Iswim.Its goal was to proof theorem at the Edimburg
University.Functions are replaced by pattern models.Implemented in Lisp. ML built a polymorphic
type system on top of Lisp, pioneering statically typed functional programming languages.
THE 1980’S:
The 1980s were years of relative consolidation in imperative languages. Rather than inventing
new paradigms, all of these movements elaborated upon the ideas invented in the previous
decade. C++ combined object-oriented and systems programming. One important new trend in
language design was an increased focus on programming for large-scale systems through the use
of modules, or large-scale organizational units of code. The 1980s also brought advances in
programming language implementation. The RISC movement in computer
architecture postulated that hardware should be designed for compilers rather than for human
assembly programmers. Aided by processor speed improvements that enabled increasingly
aggressive compilation techniques, the RISC movement sparked greater interest in compilation
technology for high-level languages
Niklaus Wirth
C++ - 1981-1986
Bjarne Stroustrup
C++ (pronounced "see plus plus") is a statically typed, free-form,multi-paradigm, compiled, general-
purpose programming language. It is regarded as an intermediate-level language, as it comprises a
combination of both high-level and low-level language features. It was developed by Bjarne
Stroustrup starting in 1979 at Bell Labs as an enhancement to the C language. Originally named C with
Classes, the language was later renamed C++ in 1983.
C++ is one of the most popular programming languages with application domains including
systems software (such as Microsoft Windows), application software, device drivers, embedded
software, high-performance server and client applications, and entertainment software such
as video games. The language began as enhancements to C, first adding classes, then virtual
functions, operator overloading, multiple inheritance, templates, and exception handling among
other features
Objective C -1983
Eiffel - 1985
Bertrand Meyer
Eiffel is an ISO-standardized, object-oriented programming language. The design of the
language is closely connected with the Eiffel programming method. Both are based on a set of
principles, including design by contract, command-query separation, the uniform-access
principle, the single-choice principle, the open-closed principle, and option-operand
separation.Procedural language fully object oriented , implementing persistency and
programming per contract (using precondition and post condition on functions). Was designed
for security of software.Compiled in C. May be interfaced with other languages. Has features of
functional languages, generic classes, garbage collector.
Johannes Meier, Werner Nickel, Alice Niemeyer, Martin Schönert and others
Miranda - 1989 - From the name of a Shakespeare's heroin (Miranda, means for admirable in
latin)
D.Turner
Inspired by Sasl and ML. Lazy evaluation: arguments of functions are evaluated only when they
are used. Embedded pattern-matching, modules.
Larry Wall
Destinated to replace the command line language of Unix, Sh, Sed and Awk, it kept the same
ugly syntax. Used mainly for system administration, CGI scripts.Includes lists and associatives
arrays. The FOREACH control structure allows to scan lists.
Oberon - 1988
Niklaus Wirth
Successor of Modula 2 (and Pascal).Several commonly used constructs are suppressed to reduce
the risk or error! A garbage collector is added to.
THE 1990’S:
The 1990s saw no fundamental novelty in imperative languages, but much recombination and
maturation of old ideas. This era began the spread of functional languages. A big driving
philosophy was programmer productivity. Many "rapid application development" (RAD)
languages emerged, which usually came with an IDE, garbage collection, and were descendants
of older languages.
All such languages were object-oriented. These included Object Pascal, Visual Basic, and Java.
Java in particular received much attention.
Purely functional language. Inspired by Miranda and Sasl.Functional arrays, pattern matching.
Python - 1991 - From the english TV movie "Monty Python Flying Circus"
Scripting language with dynamic types. This is a replacement to Perl.Inspired by ABC, but is
extensible with C libraries, and object oriented.As ABC, used evolved types: tuple, list,
dictionary.The slicing operator [a : b] allows to extract a sub-list from a list.There is a version
that compiles in Java bytecode, jython and ports for .NET.
Reino Kurki-Suonio
Disco is a specification language for reactive systems with Pascal-like syntax. Constructs of the
language are objects, event-driven functions (named here actions), and relations. A function is
activated when a state of the system occurs and may be overwritten, this is named "refinement"
in the language. Disco focuses on collective behavior. Layers are modules of the language. It is
an system oriented language with objects and behavior (not action oriented as it is said in the
presentation).
Yukihiro Matsumoto
Ruby has been designed as successor to Perl and alternative to Python, to be clearer than the first
one, and more object oriented than the second one. The syntax comes from these two languages,
it want to be without surprise and natural but may be complex.There is no new control structure
as in Scriptol, but a lot of minor innovations to make the code smaller.It is an interpreted
language easy to extend. Statements are terminated by end of line. Blocks of statement and loop
are delimited by "end". Most Python's features are present: associative arrays, iterators...
The originality is the dynamic object feature (adding methods to instances) and scope of
variables denoted by a prefix.
Conceived at the beginning, in 1991, as an interactive language named Oak, was unsuccessful.
But in 1994 has been rewritten for Internet and renamed Java. In 1995 navigators can run
applets. In january 1996, Javasoft distributes JDK 1.0, the Java Developpement Kit.
Java is a classical procedural language, near C++. It compiles in bytecode, interpreted on any
computer. ..It is simpler than C++: one class by file, automatic memory management, no
pointers. No multiple inheritance nor operator overloading, but integrated multi-tasking. Unlike
C and C++, has only dynamic arrays.
PHP - 1995 - Personal Home Pages Hypertext Processor
Rasmus Lerdorf
Multi-platforms scripting language, embedded inside HTML. Near C but not typed. Variables
are prefixed by the $ symbol as the shell of Unix or as Perl. The interpreter parses a html page
that embeds php code and delivers a pure html page. An extended library of functions allows
webmasters to build dynamic pages.Microsoft uses an equivalent language under Windows,
ASP, near Basic.
Scripting language to embedd procedural code into web pages.May be used to other applications,
XML based languages for example.Share the syntax of C or Java, but with untyped variables.
The element of the web page (window, table, etc...) are accessed through the Document Object
Model.
Standard by Object Management Group- Grady Booch, Jim Rumbaugh, and Ivar Jacobson
UML is the union of three modeling languages designed by the three authors above. The
language uses a graphical notation to design software projects. A source is a diagram expressing
objects and their interactions. A model is made of views and the combination of them describes a
complete system. The model is abstract and domain-independent.
ECMAScript - 1997
Standard to the langage invented by Netscape, to let dynamic HTML pages client-side.
Rebol - 1997 (The design is older) - Relative Expression Based Object Language
Carl SassenRath
AFTER 1990’S
C#
This is the main language of the .NET environment, to program software working thought
Internet. As Java, it keeps the C syntax, a 34 years old language, with same improvements:
garbage collector, no pointer, interfaces, multi-tasking... C# compiles to intermediate language,
the MSIL (MicroSoft Intermediate Language), and uses a multi-languages library, the CLR
(Common Language Runtime). The originality of the .NET system is that various language may
be compiled to MSIL and share their classes.
Denis Sureau
The most recent, the most powerful among procedural languages. Scriptol is either compiled in
PHP or in C++ or native, giving it a great portability. It is both a language for applications, for
scripting and to make dynamic web pages.The language has new control structures: "for in",
"while let", "scan by", etc... The "composite if"structure eases to implement rules.
Variables and literals are objects. Basic object (number, text, etc...) and compound ones are
created by direct assignment of a value or a list of arguments to the name.
Scriptol is destinated to evolve and to have, along classes, other high-level structures to allow
programs to be nearest human thought. Since October 2003, Scriptol allows to use XML as
internal data structure.
This language which is built on Java, incorporates and expands its syntax. It is intended to create
rich graphical interface for the Web. It is used with NetBeans.The langage was designed en 2005
and named F3 (Form Follows Function), but after the company has been bought by Sun, it was
renamed JavaFX Script and open sourced.
The future
Some trends:
Scripting languages
Several modern scripting languages offer a simple, natural syntax: NetRexx, Python, Ruby,
Scriptol. Python is the most widely used for now. Ruby is mainly used for the Rail library.
Internet languages
These languages allows to embed code inside HTML page and thus to combine
statements and data. PHP, ASP, JavaScript are the most used ones. The .NET platform
will allow any language to be embedded into HTML.
Markup languages
C++0x, will be probably C++09. This new version will include as standard a lot of
external libraries. It will have tuples and garbage collector and an extended standard
library with regular expression and threads.
SQL
Thanks to Web applications and dynamic sites of the Web 2.0, SQL trends to be more and
more popular, and so is now a part of modern programming.
Conclusion
The .NET or compatible platforms will ease to put code inside data, but XML may be an
alternative. C# will be a leader language of such platform at start, but its success is due
mainly to that programmers are used with the C++ and Java syntax.
The development of mobile phones with their multiple operating systems foster HTML 5
as a development platform and related technologies: SVG, Canvas, CSS. JavaScript
becomes the dominant language for client-side web applications.