History of Computer Languages
and Their Evolution
Timeline of general-purpose programming languages
By Nathaniel Os. Omoragbon
Selection criteria: A programming language enters the history if it has
a compiler or an interpreter or if it has inspired other programming languages.
New languages with innovative features are listed if we can produce programs
in this langage.
| First language |
| Ada Lovelace and Babbage and its nephew were writing programs
for the project of "difference engine", and then the "analytical
engine". In 1945, the german K. Zuse, inventor of the Z3 computer would have defined an evolved language for this engine (with arrays and records). Few documents of the epoch about this language exist. |
| Assembly |
| Fsd Simtel |
| 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... |
| Autocode - 1952 |
| Alick E. Glennie |
| Implemented firstly on Mark 1, then on other computers, this is a symbolic code. |
| IPL - 1956 - Information Processing Language |
| A. Newell, H. Simon, J.C. Shaw |
| Low-level list processing language. Implements the RECURSIVITY. |
| Fortran - 1954-1958 - FORmula TRANslator system |
| John Backus and other researchers at IBM |
| Fsd |
| Language
dedicated to mathematical calculations. Fortran II (1958) introduced SUB-ROUTINES, FUNCTIONS, LOOPS, a primitive FOR control structure. Identifiers were limited to six characters. |
| Lisp - 1958-1960 - LISt Processing |
| Mac Carthy |
| Fsd |
| Functional language for list processing. It is purely recursive, and not iterative. There is no difference between code and data. |
| IAL - 1958 - International Algebraic Logic |
| First name for Algol 58, never implemented. |
| Algol - 1960 / Algol W - 1966 / Algol 68 - ALGOrithmic Language |
| Defined by an international consortium of computer science specialists, coordinated by IFIP. |
| Algol Génie |
| This was the fist universal language to be machine independent. Introduces the use of the BNF (Backus Naur Form) grammar to create a syntax parser. Introduces BLOCKS of STATEMENTS, and LOCAL VARIABLES inside a block. Recursivity was implemented but with reticence as this was considered as useless! Uses DYNAMIC ARRAYS, and this means that following language (Pascal, C) have regressed by using static arrays, for better performance. It has IF THEN ELSE, FOR, the := symbol for assignment (used then by Pascal), a SWITCH with gotos, the BEGIN END markers, the WHILE loop. Algol W by Niklaus Wirth in 1966 was using RECORDS, that are dynamic data structures, CASE, passing parameters by value, precedence of operators. The same year, Niklaus Wirth has created Euler, a language between Algol and Pascal. Algol 60 was still oriented toward mathematical calculations. To try to reach the original goal of a general purpose language, a new version has been started in 1964, Algol X, renamed further Algol 68. Algol 68 was using the =+ sign to merge both assignment and add. It has introduced UNION and CAST of types. It owns IF THEN ELIF FI, CASE, GOTO, user-defined operators. Incremental compiling was not allowed. |
| Cobol - 1960 - COmmon Business Oriented Langage |
| Defined by a committee, the CODASYL, COnference on DAta SYsystems Languages |
| Fsd |
| The committee under the auspices of the Department Of Defense,
and manufacturers, universities and users, worked from may 1959 to april
1960. Grace Murray Hopper, who had designed Flow-Matic, a compiled language in the 50's, has participated to the committee. Cobol is a classical procedural language aimed at enterprise management, in wich a program is divided in 4 divisions: identification, environment, data, procedure, and they may be divided in sections. It was founded on data and a program must describe precisely the hardware and input/ouput data format. It introduced the RECORD data structure. Programs are documented by the syntax and are all but ligthweight... |
| APL - 1964 - A Programming Language |
| K. Iverson |
| Fsd Simtel |
| Language using a mathematical notation, with lot of operators.
A unique type, the array. Defined from 1957 to 1960, implemented in 1964. |
| Basic - 1964 - Beginners All-purpose Symbolic Instruction Code |
| John Kemeny, Thomas Kurtz |
| Card |
| 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! Sub-programs were called by GOSUB to line numbers. The first PC from IBM, (in 1981) was using MS-DOS from Microsoft and its interpreted Basic (Basica). In 82 Microsoft produced its first compiled Basic (Quick Basic). Pascal and C have replaced Basic in the same decade. Microsoft still uses Basic. Visual Basic for application, ASP for the web, and applications are extended with a language (macro) that is basic also. True Basic, by the original authors of the language is compiled and no longer uses line numbers.
|
| Iswim - 1965 - If You See What I Mean |
| P. Landin |
| First purely fonctional language, in the mathematical sense. The first to use LAZY EVALUATION. |
| Attribute grammars - 1965 |
| Donald Knuth |
| Completing the BNF method, attribute grammars describes the semantic of languages to be made of functions. This type of grammar helps the building of compilers. |
| Simula 67 - 1962-67 |
| Ole-Johan Dahl, Kristan Nygaard |
| Fsd |
| The Simula project started in 1962. The goal was to build
a tool to describe discrete event system, or network, and a language to
program simulating real world. Was firstly designed as an Algol extension. In 1964, Simula 1 has been implemented on Univac 1107. It was used to control administrations, airports, planning, transport, or social systems. This was a specialized tool. In 1966, it has been decided to make it an universal language. Several projects has been launched with the help of several makers (IBM, Univac, Digital) and this leaded to Simula 67. This universal language has introduced CLASSES, INHERITANCE and OBJECTS that are instances of classes. Classes allow to link functions (methods) to objects. |
| Logo - 1966 |
| Fuerzeig, Seymour Papert, and others |
| Aimed to teach programming to children, near Lisp, and based on moving a "turtle" on the screen. |
| Snobol 4 - 1967 - StroNg Oriented symBOlic Language |
| D. J. Farber, R. E. Griswold, F. P. Polensky at Bells Labs |
| 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. |
| CPL - Combined Programming Language |
| 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. Typed
language with the "any" joker type. Had list and array. |
| BCPL - 1965? - Basic CPL |
| Martin Richards |
| It has been intended to be a simplified version of CPL. Was using these control structures: FOR, LOOP, IF THEN, WHILE, UNTIL, REPEAT, REPEAT WHILE, SWITCH CASE, etc... Owns procedures and functions, unlike C. Block delimiters were $( ..... $) which has inspired probably /* ... */ in C. |
| PL/1 - 1965? - Programming Language number One - Originally NPL (New Programming Language) |
| IBM |
| Ibm for links on compilers. |
| 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. |
| Pascal - 1970 - Named from the french mathematician Blaise Pascal |
| Niklaus Wirth |
| Card |
|
Language aimed to ease the building of compilers, and to lead teaching
by forcing to a structured programming. |
| Forth - 1971 - Fourth reduced to Forth by the constraint of 5 letters of the IBM 1130 |
| Charles H. Moore |
| Forth.org Simtel |
| 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 |
| Alan Kay and the Software Concept Group |
| Fsd |
| This is a fully object oriented language wich runs always inside a graphical environnment, with windows, mouse, etc... |
| C - 1973 - C is the successor of B, which is the successor of BCPL |
| Dennis Ritchie |
| Card |
|
It was firstly destinated to program the UNIX operating system, but
has become quickly universal thanks to its portability and speed. The += operator comes from Algol 68 (but was written =+) |
| Prolog - 1970+ |
| A. Colmerauer, D. Roussel |
| GNU Prolog |
| Has been developped both in France at Aix-en-Provence and
at Edimburg. Has introduced LOGIC PROGRAMMING. A program is made of Horn clauses. Prolog is declarative, its system of logic inference is an engine of resolution. |
| Sql - 1970+ - Standard Query Language |
| IBM |
| mySQL |
| Language of query for relational databases. Successor of the Square language. |
| Awk - 1974 - First letters of authors' names |
| Aho, Kerninghan, Weinberger |
| Fsd |
| Word processing language based on regular expressions, using a pattern-action principle. |
| Scheme - 1975 - From "schemmer" |
| Gerald Jay Sussman and Guy L. Steele at MIT |
| Chez Scheme Stklos |
| Language derived from Lisp but simplified. The types are
boolean, integer of indefinite size, rational and complex, characters,
symbols, vectors, oriented pairs, lists, associative lists, hash tables.
The S-expression generic type is used to extend the language. It is often used as a scripting language, by the Gimp for example. Standard. The language and development tool Hop from Inria is Scheme extended into a functional HTML dialect to build Web 2.0 application. |
| Plasma - 1975 |
| Carl Hewitt |
| Language of actors. Implemented in Lisp. |
| Sasl - 1976 - Saint Andrews Static Language |
| D. Turner |
| Aimed to teach the functional programming. Comes from Iswim, unlimited data structures. |
| Icon - 1977 |
| Griswold |
|
Procedural language, with word processing function as Snobol4, and
powerful constructs. |
| ML - 1973? - Meta Language |
| R. Milner |
| Functional language inspired by Iswim. Its goal was to proof theorem at the Edimburg University. Functions are replaced by pattern models. Implemented in Lisp. |
| Modula 2 - 1979 - MODUlar LAnguage |
| Niklaus Wirth |
| Fsd |
| Modula 1 would be defined in 1977. Implemented on
the Lilith workstation at first. The idea is to reduce the risk of error with coercive programming rules. However, it adds to Pascal some features of the C language. A call of function without argument is written f() as in C rather than f as in Pascal. A program is splitted in modules with local scope, and interfaces for other modules. Use coroutines. Allows access to the hardware. Was only used in Universities, because these new features has been added also to Pascal by the makers of compilers (the units of Turbo Pascal mainly). |
| Ada - 1980+ - Nickname of Ada Byron de Lovelace, first woman to program |
| Designed by a committee leaded by Jean Ichbiah, for the U.S. Department Of Defense. |
| Fsd |
| Inspired by Pascal and Algol W. Is rather heavy. Introduces GENERICITY of algorithms and a kind of primitive object orientation, but becomes really object oriented later. Introduces PACKAGES, that are independent modules. |
| C++ - 1981-1986 |
| Bjarne Stroustrup |
| Card |
| Object oriented version of C. Introduces OPERATOR OVERLOADING. Methods may be inline. Use // for one-line comment, that comes from BCPL, of which C is a successor! Further, multiple inheritance and template (generic classes or functions) has been implemented. Objective C, invented by Brad Cox in 1984, is another objet oriented version of C, inspired by smalltalk. No operator overloading. Used to write NextStep, the operating system of the Next computer. |
| Standard ML - 1984 |
| R. Milner, University of Edimburgh and Cambridge and Inria |
| Search for Standard ML Moscow on a search engine. |
| An implementation of ML. |
| Eiffel - 1985 |
| Bertrand Meyer |
| Card |
| Procedural language fully object oriented , implementing persistency
and programming per contract (using precondition and postcondition on functions).
Was designed for security of software. Compiled in C. May be interfaced with other langages. Has features of functional languages, generic classes, garbage collector. An open source version exist, Sather, (from the name of a tower at Berkeley). |
| GAP - 1986 - Groups, Algorithms and Programming |
| Johannes Meier, Werner Nickel, Alice Niemeyer, Martin Schönert and others |
| Gap Software |
| The language has been defined to program mathematical algorithms. It is interpreted, interactive an untyped. List and records are complex variables. The syntax is that of Pascal with some differences. Comments for exemple are introduced by #. An end of bloc is denoted by inverted keywords: if fi, do od. The for loop has the forms: for in list, for in from to. The language has procedures and functions. What made it apart if that variables point out values and not memory addresses, and the form of a definition of function is as a call: x := function(arguments) body. A function may be embedded inside another function. |
| 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. |
| Caml - 1987 - Categorical Abstract Machine Language |
| Suarez, Weiss, Maury |
| Inria |
| Caml and Objective caml in 1996, has implemented ML. |
| Perl - 1987 - Practical Extracting and Report Langage |
| Larry Wall |
| Perl |
| 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 |
| Simtel |
|
Successor of Modula 2 (and Pascal). |
| Haskell - 1990 - Nickname of a logician, Haskell Curry |
| Haskell |
| Purely functional language. Inspired by Miranda and Sasl. Functional arrays, pattern matching. |
| ABC 1980-90 - ABC (equivalent to EZ in english) |
| CWI - Meertens, Pemberton (et Guido Van Rossum) |
| CWI Simtel |
| Scripting language elaborated at CWI in Netherlands, and
the goal of which was to become a successor to Quick Basic or scripting
languages of Unix. Perhaps the first to use INDENTING to denote statements of a block: no markers as begin/end. Another innovation, there is no file management, but rather persistency of the global variables: the value is stored from a session to another! There are five types: number, string, list, composed (structure without fieldnames), array. |
| Python - 1991 - From the english TV movie "Monty Python Flying Circus" |
| Guido Van Rossum |
| Card |
|
Scripting language with dynamic types. This is a replacement to Perl. |
| Pov-Ray - 1991 - Persistence Of Vision (title of a mediocre science-fiction book). |
| D. & A. Collins, and contributors |
| PovRay |
| Pov-Ray is a language for describing 3D images. |
| DisCo - 1992 - Distributed Co-operation |
| Reino Kurki-Suonio |
| Disco |
| 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). |
| Ruby - 1994 - As the jewel, analogy with Perl |
| Yukihiro Matsumoto |
| Ruby-Lang |
|
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. |
| Java - 1994 - Java (coffee) |
| James Gosling and other programmers at Sun |
| Card |
|
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. |
| PHP - 1995 - Personal Home Pages Hypertext Processor |
| Rasmus Lerdorf |
| Card |
|
Multi-platforms scripting language, embedded inside HTML. |
| JavaScript - 1995 (Has been firstly named LiveScript) |
| Brendan Eich at Netscape |
| ECMAScript |
|
Scripting language to embedd procedural code into web pages. |
| UML - 1996 - Unified Modeling Language |
| Standard by OMG (Object Management Group) - Grady Booch, Jim Rumbaugh, and Ivar Jacobson |
| Resources |
|
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 by the european standardization organisation E.C.M.A. |
| More |
|
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 |
| Rebol |
|
Interpreted, extensible scripting language that produces compact code.
It is aimed at communication on Internet and distributed computing. |
| C# - 2000 - (C-sharp), want to succeed to C++ |
| Anders Hejlsberg / Microsoft |
| Card |
| 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 improvments: 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. Other new features come with this language: - structs are now special kind of object, passed by values. - literals are objects also, with methods.. - attributes are descriptive objects attached to elements of the program and used by the runtime. - properties: methods that may be used as variables (prop = 5 is equivalent to prop(5). - foreach() to scan arrays (new only for Java and C++). - delegate replaces pointer of functions of C. There are improvements on Java also: - event management is improved. - operator overloading is present. - simpler access to the the native system. |
| AspectJ - 2001 - Aspect for Java |
| Palo Alto Research Center |
| Card |
| Aspect J is a Java extension that implements aspect oriented programming. A technique that modularizes crosscutting concerns. The unit is not the class, but a concern, that spans multiple classes. Concern may be, for example, properties, area of interest of a system and AOP describes their relationship, and compose them together into a program. Aspects encapsulates behavior that concerns multiple classes. |
| Scriptol - 2001 - Scriptwriter Oriented Language |
| Denis G. Sureau |
| Card |
| 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. Blocs of statements and control structures are not closed by "end" or "}" but, as in XML, with the form "/if", " /for", "/while" and so ones... 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. |
| Scala - February 2004 |
| Ecole Polytechnique Federale de Lausanne |
| Scala Lang |
| Scala is a pure object oriented language that implements some Python features in Java syntax. It is statically typed and both procedural and functional. It currently runs on JVM and .NET. |
| E4X - June 2004 - EcmaScript For XML (E four X) |
| ECMA |
| Ecma |
| E4X is not a language but an addition to a language. In the same manner Scriptol uses XML as data structure with attributes and methods, E4X allows to assign XML to ECMAScript variables, and to access elements by indices or attributes. |
| JavaFX Script - 2005-2007 |
| Sun - OpenFX |
| 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:
|
|
Resources and informations
|

No comments:
Post a Comment