No one can deny that programming and computers have revolutionized our society: the way we work, the way we communicate, and the way we envision the future – but how did it all start? So in this set of articles I will try to present a brief history of programming languages: when did it all start, and where are we headed.
Programming: before 0 and 1 existed
We are all used to terms such as: Pascal, C++, Java and names like Bill Gates, Linus Torvalds and others, but who ever heard of Joseph Marie Jacquard or Augusta Ada King?
The beginnings of programming can be traced back to 1801, to a machine named Jacquard loom (a loom is a device that weaves cloth), invented by Joseph Marie Jacquard. The Jacquard loom used punched cards in order to perform a sequence of operations, which is the same principle that was later used in computer programming.
But the first program was created by Augusta Ada King (Ada Lovelace) and it was an algorithm that calculated the Bernoulli number using the Analytical Engine created by Charles Babbage – although her code was never tested because the engine was never finished. But in 1953, Ada’s notes were republished and many recognized the engine (Analytical Engine) as an early computer, and her notes as the first computer algorithm ever created.
The first programming languages
The first computer codes were created for specific machines and applications, so they can’t be classified as a programming language. The very first programming language was Lambda calculus, which is one of the most basic programming language. Alonzo Church was the one who introduced it, in the 1930s, and its purpose was to formalize the concept of effective computability. This is a short code snippet that defines true, false and if in Lambda calculus:
(define (true a b) a)
(define (false a b) b)
(define (if c a b) (c a b))
Another vintage programming language is Plankalkül, developed by Konrad Zuse in 1945, after leaving Berlin at the end of World War II. Plankalkül is a high-level imperative programming language (a program that defines command sequences that the computer must perform), and some of its characteristics are that programs are reusable functions, functions are not recursive, variables are local to functions and it is a typed language. You can see below the code for “Hello World”:
R1.3() => R0 'H'; 'e'; 'l'; 'l'; 'o'; ' '; 'W'; 'o'; 'r'; 'l'; 'd'; '!' => Z0[: m x sig] R1.2(Z0) => R0 END
So this is a sum up of how programming languages were born, and although the startup was not so promising, what we have now is the result of these feeble communication attempts between us humans and our computers. In Part 2 of this post I will present a series of (more) “modern” programming languages that have been intensively used in their time, and which are used even today to a certain extent.
After seeing how programming languages have started, I will present a series of “vintage” programming languages, that helped develop modern programming.
FORTRAN (now Fortran) was developed at IBM beginning with the year 1953. The team of programmers led by John Backus created in 2 years what is called “the daddy of programming systems”, and as a recognition of this performance, John Backus received the W. Wallace McDowell Award.
FORTRAN is a scientific language (optimized for using mathematical matrices and formulas) and uses the first compiler that was ever created, giving FORTRAN huge advantages over the existing way of programming at that time (programming was done in assembly code, which was very difficult and time consuming). Programmers were able to write code in FORTRAN 500% faster than in assembly code, while the execution efficiency dropped by only 20%.
Here is “Hello World” writen in FORTRAN:
print *, “Hello World!”
end program hello
COBOL comes from COmmon Business-Oriented Language and is amongst the oldest programming languages. It was primarily developed by Grace Hopper (who served in the United States Navy Reserve, in World War II) for business and administrative systems for the enterprise area and governments.
Although COBOL was developed around 1960, its evolution continues even today. Object orientation was integrated in the 4th revision of COBOL in the year 2002, together with other features – such as: locale-based processing, pointers, bit and Boolean support, floating-point support, XML generation and parsing.
Here is “Hello World” writen in COBOL:
DISPLAY ‘Hello, world’.
C is one of the most know programming languages, and one of the most used today. Although it was created 40 years ago, its importance has never decreased. C is very well researched and this means that whatever problem you may have, you will find the answer somewhere. The popular C++ was born as an outcome to adding object oriented features (such as classes, virtual functions etc.) to C, in 1979, and is one of the most popular and powerful programming languages today, being compatible with all operating systems.
Pascal is an imperative, procedural programming language, which was created mostly for teaching structured programming to students, and also it was the primary language used by Apple Computers when developing Apple Lisa. Delphi was created by Borland as a successor to Turbo Pascal (en extension of Pascal) and it evolved over the years, supporting constructs (dynamic arrays, generics and anonymous methods) being added to it.
The Hello World! written in Delphi looks like this:
BASIC is a family of high-level programming languages, designed in 1964, by a team of students, under the guidance of John Kemeny and Thomas Kurtz. The language is based on FORTRAN II and ALGOL 60. Microsoft introduced Visual Basic in 1991, which became the macro language for Excel and a very popular programming language over the years, mainly because of its ease of use (its legacy also includes the popular VB.NET language).
This is Hello World! written in Visual Basic:
Private Sub Form_Load()
‘ Execute a simple message box that says “Hello, World!”
MsgBox “Hello, World!”
Programming languages evolved from low level languages (the syntax is assembly language) into high level languages (the syntax contains natural language elements), providing programmers faster ways of writing code, while increasing performance by using Just-in-time compilation (Just-in-time, or JIT compilers are compiling the code after the program has started).
While it all started with low level languages, high level ones are growing in popularity, and the future is headed in this direction: programmers will code using a language that is further and further away from assembly language, and closer to human understanding.