Programming languages: how it all started - Part 1
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
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.
No comments yet.