A journey through time – History of programming Part 2
Let’s take a deep dive in time and look at how the world of computer science and history of programming languages began. Follow us as we go through the ages and look at the timeline and the major personalities and events that through their ingenuity paved the road to our current Technological and Digital Era.
The journey through history of programming continues
Want to see the father of computers and the first ever programmer as they struggle in the 1800’s; or check out how a 17th century philosopher helped us develop binary code that helps YOU read these words on your screen. Well then you absolutely should check out our earlier entry in the series.
And if you’ve just finished that one, lets do a recap of where we left off.
Last time we started our journey in the early 1800’s and followed it through to 1954. We saw the first computer – the analytical engine, and the first programmer.
Later we looked at the birth of binary code and then we moved to the first iterations of hypothetical programming languages, we’ve learned what is a “GL” (x Generation Languages) as well as saw the first compilers.
When we left, our programmers were still writing low-level languages on paper and manually inputting opcode/ASM into the machine. Mind you, this without a screen or a keyboard as we understand it. And that brings us to…
Part 1: FORTRAN and Jacquard’s Legacy
FORTRAN (Aka Formula Translator) – the first high-level programming language that sees practical broad use. Created by John Backus and his team from 1954 to 1957 and used in the IBM 704 – the first mass-produced computer with floating-point arithmetic hardware.
In typical programmer fashion John Backus once said:
“Much of my work has come from being lazy. I didn’t like writing programs, and so, I started work on a programming system to make it easier to write programs”.
Fortran code is said to be 20 times shorter than its analogue in handwritten assembly code. The community was doubtful of it at the time due to performance concerns, but the fact that programmers could write more code quicker, it was an easy choice from the economical viewpoint.
And this is how the famous “Hello, World!” would look in Fortran:
PROGRAM HELLO WRITE(*,*) ‘Hello, world!’ END
Thing is that you didn’t type all that into a computer and it would come up on the screen, they didn’t have screens yet… or a keyboard really.
A typical Computer Program at the time
They had to encode it into punch cards just like Mr. Jacquard more than a hundred years ago. Except, this is an IBM mainframe we’re talking about, and you couldn’t touch the IBM mainframe. You had specific people whose job it was.
As a programmer you write your program with a pencil onto this paper:
Then you take this stack and hand it over to one of the High priests of IBM and they in turn create the punch-cards and input into the machine. Only after all that you get the errors that come out on the other side.
And you complain that C++ takes too long to compile…
Part 2: An improvement to Fortran
While we’re with Mr. Backus lets jump ahead to year 1958, to the creation of Algol by a committee of European and American computer scientists of which John Backus takes part of.
Algol (aka Algorithmic Language) is a high-level imperative computer programming language, which introduced a plethora of features which later influenced and used in creation of Pascal, C#, C++ and Java among others.
Matter of fact most languages now days have syntaxes inspired by Algol and it’s considered amongst the most influential programming languages ever.
It’s said that Algol was an attempt to improve on some intrinsic problems met with Fortran and its wildly considered as an “evolution” of sorts.
While we’re on the subject, John Backus along side Peter Naur developed the Backus-Naur Form of describing programming languages based on ALGOL 58-60. So, you could consider Backus as one of the original fathers of many languages we use today.
Here’s how “Hello, World!” looks in Algol-60:
BEGIN DISPLAY (“Hello, world!”) END
This is starting to look quite reasonable.
Part 3: Let’s get some clojure for computer sciences
We’re still in the 1958 as we’re about to witness another giant of “programming languages”, and a father-language to many revolutionary ideas at this time – be born.
LISP (aka LISt Processor) – a list depended high-level programming language (3GL) developed by John McCarthy at “Massachusetts Institute of Technology”. The language has a long history of changing dialects (like Racket, Clojure, Common lisp and Scheme).
Originally intended as a formal notation for computations influenced by lambda calculus and artificial intelligence; it surprised everyone after being introduced into the IBM 704 and turning out to be a fully functioning practical tool for solving problems.
Lisp is notable for pioneering many ideas in computer sciences like: tree data structures, dynamic typing, conditions, automatic storage management, recursion, high-order of functions and self-hosting compiler.
It is also notable for giving students a migraine, due to its overreliance on parenthesis, so much so they gave it nicknames like “Lost in stupid parenthesis” or “Lots of irritating superfluous parenthesis”.
And here’s how “Hello, World!” would look in Lisp:
(PRINT “Hello, World!”)
Though in 1958 Lisp is still in its infancy and doesn’t see much broad use, this brings us to…
Part 4: An old acquaintance
At this current time most of if not all computers are working in either low-programming languages like opcode/ASM or the only high-level programming language available Fortran. And if by some reason you want to upgrade your computer, you’ll have to write all that code from scratch.
So, let’s make a small leap to end of 1959. We’re going to meet someone, we’ve already discussed.
Now however she’s attending the CODASYL or the “Conference on Data System Languages” as a technical aide and main expert.
The committee is formed in an attempt to guide the development of standardization of programming languages or create a single language that could be used across different machines regardless of hardware.
Primary goal of COBOL was to lower the barrier of entry into programming; before the creation of High-level languages, programming was a realm exclusive to computer scientists and experts.
Now however, other enthusiasts from different professions like businesspeople, doctors, engineers, teachers and many other could incorporate computation into their work.
To deal with underlying hardware each computing machine had to have its own COBOL compiler. But critically these compilers could accept the same COBOL source code. The notion of “Write once, apply everywhere” was created; for at this time, most computers use machine code or assembly which is very CPU specific.
Let’s see how “Hello, World!” looks in COBOL:
IDENTIFICATION DIVISION. PROGRAM-ID. hello-world. PROCEDURE DIVISION. DISPLAY "Hello, world!"
That folks, is what we call a “language designed by committee”.
Part 5: The arrival of the minicomputer
Hey mama welcome to the 60’s!! Wo-oh-oh-oh… Oh sorry, old habits.
But as you might have guessed, 1960’s has rolled around, and someone had a bright idea.
How about we stop writing code in pencil and spending weeks on encoding it into punch-cards and use the conveniently invented teletype machines that news agencies and governments use to send messages to each other; and use those to “talk” with the computer?
With that sorted, humanity paved the way to a more general-purpose high-level programming languages designed to be used by everyone, everywhere.
And with the emergence of minicomputers on the market, there was a sharp need of a programming language/compiler compact enough to meet the demand.
Thus, BASIC was born – “Beginners’ All-purpose Symbolic Instruction Code”
“Minicomputer” – PDP-11
So compact in fact that it is generally considered as the first commercial “interpreter” being able to make use of all those 4 kB of memory available on those “mini”-computers.
“Basic” was amazing for teaching programming principles, it was easy to understand and follow; especially for people who didn’t have a strong understanding of mathematics or computers in general.
Now days we know BASIC under its many dialects that appeared after its inception in 1964 – Microsoft BASIC; Visual BASIC; Atari BASIC; Commodore BASIC; Applesoft BASIC and dozen other variations. However, they all come from the “Dartmouth BASIC”.
Aside from being the originator Dartmouth Basic ran with an interactive programming environment available to all students and teachers called “Dartmouth Time Sharing System” (DTSS); the first time-sharing operating system!
10 PRINT “Hello, World!” 20 GO TO 10 120 END
Part 6: The golden age of programming has begun
With the 1960’s in full swing, technological advancements in computer hardware making leaps and bounds almost daily, we started developing more and more languages.
Let’s speed up and look at more new languages as they appear!
Family tree of programming languages.
Most of the following have their roots deep down in the languages we’ve mentioned earlier. By 1970s and onwards to 1980s we had:
Part 7: History of programming – End of todays session
We believe went too fast over there and overloaded the capacitors; we seem to be going back into 2021!
Well, I suppose that’s it for now, something went horribly wrong and I’m afraid we’re stuck in our time again. Perhaps later we’ll be coming back to the 70s and exploring more how our programming world evolved through the ages.
This was our take on the history of programming from the 1950s to 1960s.
If you think it’s a great idea, maybe leave a like and a comment saying so? What do you think is the most fascinating part of programming history?
While you ponder that, I’ll go back researching the incredible ways you can improve your business and tech company with digital transformation.
Stay classy tech and business nerds!