0% found this document useful (0 votes)
53 views

Evolution of Programming Languages

The document discusses the evolution of programming languages from the early 1940s through the 1960s. Some of the earliest programming languages were codes used on machines like the Jacquard loom in 1801 and Ada Lovelace's notes detailing a method for calculating Bernoulli numbers in 1843. Assembly languages emerged in the 1940s. The 1950s and 1960s saw the development of many influential early high-level languages like FORTRAN, LISP, COBOL, ALGOL, APL, BASIC, LOGO, and Snobol. Each new language introduced important new concepts and capabilities that advanced the field of programming.

Uploaded by

Aarthi E
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views

Evolution of Programming Languages

The document discusses the evolution of programming languages from the early 1940s through the 1960s. Some of the earliest programming languages were codes used on machines like the Jacquard loom in 1801 and Ada Lovelace's notes detailing a method for calculating Bernoulli numbers in 1843. Assembly languages emerged in the 1940s. The 1950s and 1960s saw the development of many influential early high-level languages like FORTRAN, LISP, COBOL, ALGOL, APL, BASIC, LOGO, and Snobol. Each new language introduced important new concepts and capabilities that advanced the field of programming.

Uploaded by

Aarthi E
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

EVOLUTION OF PROGRAMMING LANGUAGES

Before starting with the evolution of programming languages, I will discuss meaning of

programming languages and its importance.

What is Programming language


A programming language is a language designed to communicate instructions to a machine ,
particularly a computer. Programming languages are used to create programs that control the
behavior of a machine or to express algorithms precisely.
A programming language is a notation for writing programs, which are specifications of a
computation or algorithm. Some, but not all, authors restrict the term "programming language" to
those languages that can express all possible algorithms.
Importance
The role of language in programming has been downgraded in favor of software methodology
and tools; not just downgraded, but totally repudiated when it is claimed that a well-designed
system can be implemented equally well in any language. But programming languages are not
just a tool; they furnish the raw material of software, the thing we look at on our screens most of
the day. I believe that the programming language is one of the most important, not one of the
least important, factors that influence the ultimate quality of a software system.
Programming languages exist only for the purpose of bridging the gap in the level of abstraction
between the hardware and the real world. There is an inevitable tension between higher levels of
abstraction that are easier to understand and safer to use, and lower levels of abstraction that are
more flexible and can often be implemented more efficiently. To design or choose a
programming language is to select an appropriate level of abstraction, and it is not surprising that
different programmers prefer different levels, or that one language may be appropriate for one
project and not for another. Within a specific language, a programmer should understand in
depth the safety and efficiency implications of each construct in the language.
EVOLUTION

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...

1950’S AND 1960’S:


In the 1950s, the first three modern programming languages whose descendants are still in widespread
use today were designed:
 FORTRAN (1955), the "FORmula TRANslator", invented by John Backus et al.;

 LISP [1958], the "LISt Processor", invented by John McCarthy et al.;


 COBOL, the COmmon Business Oriented Language, created by the Short Range Committee, heavily
influenced by Grace Hopper.

IPL - 1956 - Information Processing Language


Newell, H. Simon, J.C. Shaw.
Low-level list processing language. Implements the RECURSIVITY. The language
includes features intended to support programs that could perform general problem solving,
including lists, associations, schemas (frames), dynamic memory allocation, data types,
recursion, associative retrieval, functions as arguments, generators (streams), and cooperative

multitasking. IPL pioneered the concept of list processing, albeit in an assembly-language style.

Fortran - 1954-1958 - FORMULA TRANSLATOR system


John Backus and other researchers at IBM. Language dedicated to mathematical calculations.
Fortran II (1958) introduced SUB-ROUTINES, FUNCTIONS, LOOPS, a primitive FOR control
structure. Identifiers were limited to six characters. Often referred to as a scientific language,
FORTRAN was the first high-level language, using the first compiler ever developed. It was
designed to allow easy translation of math formulas into code.

Lisp - 1958-1960 – LIST Processing

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.

APL - 1964 - A Programming Language

APL is an interactive array-oriented language and integrated development environment which is


available from a number of commercial and non-commercial vendors and for most computer
platforms. It is based on a mathematical notation developed by Kenneth E. Iverson and
associates which features special attributes for the design and specifications of digital computing
systems, both hardware and software.APL has a combination of unique and relatively uncommon
features that appeal to programmers and make it a productive programming language.

Basic - 1964 - Beginner’s All-purpose Symbolic Instruction Code

John Kemeny, Thomas Kurtz

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

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. 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

Alan Kay and the Software Concept Group

Smalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk


was created as the language to underpin the "new world" of computing exemplified by "human–
computer symbiosis." It was designed and created in part for educational use, more so
for constructionist learning
C LANGUAGE - 1973 - C is the successor of B, which is the successor of BCPL

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.

The C language simplified the writting with the { and } symbols,


Union and cast come from Algol 68.++ was already in the B language.
The keyword "include" comes from PL/I. The preprocessor was implemented in 1973, and C has
been used from this date to write Unix, but Ritchie worked on it since 1969. The language has
evolved until 1980. .

Prolog - 1970+

Colmerauer, D. Roussel

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

Language of query for relational databases. Successor of the Square language.

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. 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

Modula 2 - 1979 - MODUlar LAnguage

Niklaus Wirth

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

Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-


level computer programming language, extended from Pascal and other languages. It has strong
built-in language support for explicit concurrency, offering tasks, synchronous message passing
(via guarded task entries), protected objects (a monitor-like construct with additional guards as in
conditional critical regions) and nondeterminism.

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

By Brad Cox , is another object oriented version of C, inspired by smalltalk. Objective-C is


a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C
programming language. No operator overloading. Used to write Next Step, the operating system of the
Next computer.

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.

GAP - 1986 - Groups, Algorithms and Programming

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.

Perl - 1987 - Practical Extracting and Report Langage

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.

Haskell - 1990 - Nickname of a logician, Haskell Curry

Purely functional language. Inspired by Miranda and Sasl.Functional arrays, pattern matching.

ABC 1980-90 - ABC (equivalent to EZ in english)

Python - 1991 - From the english TV movie "Monty Python Flying Circus"

Guido Van Rossum

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.

Pov-Ray - 1991 - Persistence Of Vision (title of a mediocre science-fiction book).


D. & A. Collins, and contributors

Pov-Ray is a language for describing 3D images.

DisCo - 1992 - Distributed Co-operation

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).

Ruby - 1994 - As the jewel, analogy with Perl

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.

Java - 1994 - Java (coffee)

James Gosling and other programmers at Sun

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.

JavaScript - 1995 (Has been firstly named LiveScript)

Brendan Eich at Netscape

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.

UML - 1996 - Unified Modeling Language

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 by the european standardization organisation E.C.M.A.

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.

Scriptol - 2001 - Scriptwriter Oriented Language

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.

JavaFX Script - 2005-2007

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

A recent trend is to turn XML documents into executables.


- XML is embedded into Scriptol sources as a data structure, that is usable by any
statement in the source. This is a next step beyond object oriented programming.
- XUL is a Mozilla project that embeds JavaScript into XML to easily produce GUI (the one of
Mozilla for example). On the Web with Firefox or locally with the XULRunner runtime.
- SVG is a format to embed graphics in webpages supported by all modern browsers. It
may replaces XUL (Mozilla only) and XAML (.NET required) to design a user interface.

A new C++ language

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.

You might also like