The Evolution of Computer Programming Languages – Part One: From the 1940s through the 1970s
Author: Michael Herman, TotalTek Director of Business Transformation.
This is the first entry in a series that will follow the evolution of computer programming languages from the 1940s until the present day. We hope that you will find this series interesting and enlightening.
It took 66 years between the time Ada Lovelace wrote the instructions that ran Charles Babbage’s mechanical general-purpose computer, the “Analytical Engine” in 1883 to the creation in 1949 of assembly language. Since that time new computer languages have been created with regularity – a trickle at first, one every few years – and now a flood. Estimates vary on the number of actual programming languages now in existence – but the lower range is around 250 and the upper is 500! How did we get here and why do we need so many programming languages?
One of the most obvious answers to that question is that changing technology has been a significant catalyst for the creation of programming languages. For example, the development of C in 1972 was to fill the need for a language capable of efficiently running on the Unix operating system, which was then in its infancy. While changing technology has continued to spur the development of new programming languages, there are other motivations:
- To create features and capabilities existing languages lack;
- To better fit the specific use for which they are intended (e.g., gaming, mapping, website construction, etc.);
- To simplify development;
- To fit the strengths and aptitudes of developers;
- To update and/or refresh a language that has become outdated.
In most cases, as technologies evolve, they build on what came before them. This is certainly the case with programming languages in that they frequently incorporated elements of the languages that preceded them. What follows attempts to recount the evolution of programming languages from the development of Assembly to the emergence of no code/low code application development. Some of the more notable programs are listed in the timeframe they were developed.
1949 – Assembly becomes the first widely-used language
Before the advent of the first assembly language, machine-level languages used binary (or similar conventions). Without getting too deep in the weeds, assembly language basically eliminated the need for the use of binary by allowing for the use of names for instructions. Instead of a series of 1’s and 0’s communicating with the machine, instructions such as “add” would be used. Assembly languages are low-level languages that are converted into machine-specific language by an assembler program. Because an assembly language is machine- or CPU-specific, it must be rewritten if used on a different type of CPU. Assembly language uses include programs for device drivers, some embedded and real-time systems.
No discussion of the evolution of programming languages would be complete without a short description of the first programmable, electronic, digital computer – the ENIAC (Electronic Numerical Integrator and Computer). Assembled between 1943 and 1945, its original purpose was to calculate artillery firing tables for the U.S. Army. The ENIAC was not a stored-program computer. Programming was achieved through a combination of plugboard wiring and portable function tables. Each function table had 1,200 ten-way switches which were used for entering tables of numbers. Instructions were set up on the machine using nearly 40 plugboards which required that several wires be plugged for each instruction of a problem – thousands of them each time a problem was run. This required several days or even weeks to complete and additional days to test and validate. Even with the time required for problem mapping and “programming” ENIAC was 1,000 times faster than electro-mechanical machines as it could calculate a trajectory in 30 seconds – a calculation that would take a person 20 hours to complete.
Female mathematicians performed the majority of the ENIAC programming yet many of them did not receive recognition for their work during their lifetimes. In 1997 the six women who did most of this programming were inducted into the Women in Technology Hall of Fame.
The ENIAC cost $487,000 to build in 1947 (equivalent to just over $6 million today). It weighed 30 tons, took up 1,800 square feet of space, and consisted of 17,468 vacuum tubes, 70,000 resistors, 10,000 capacitors, and almost 5 million hand-soldered joints. Sometimes a bug found while running a program could be traced back to a single failed vacuum tube.
As part of the celebration of its 50th anniversary, the ENIAC was reimplemented using integrated circuit technology which allowed the room-sized computer to fit in the palm of your hand.
1950’s – The decade begins with a ton and a half computer
The decade began with the introduction of the SEAC (Standards Eastern Automatic Computer) built by the U.S. National Bureau of Standards. Its original instruction set included 11 types of instructions that enabled fixed-point addition, subtraction, multiplication, division, etc. It was later augmented to 16 instructions. The computer weighed in at 3,000 lbs.
In addition to these developments, the fifties were a time of some impressive advancements:
1952 – The first autocode and compiler were created for the Mark 1 computer. It is widely considered to be the first compiled programming language. The term refers to a family of “simplified coding systems” which morphed into what we refer to as programming languages. It is a generic term as autocodes for different machines aren’t often closely related.
1957 – FORTRAN was developed by a group of programmers working at IBM. Its name is an acronym derived from FORmula TRANslation as its goal was to offer the easy translation of math formulas into code – something not done up until then. This language is notable for many reasons:
- It’s considered the first high-level language and used the first compiler, unlike Assembly.
- The intent was for it to be relatively easy to learn, applicable to a wide range of applications, and to allow complex mathematical expressions to be written in a similar fashion to algebraic notation.
- It allowed programmers to create programs 500% faster than writing Assembly or machine language.
- FORTRAN’s compiler is widely acknowledged as the impetus for the compiler theory branch of computer science.
- Often thought of as a scientific computing language, the software written for NASA’s Voyager-1 and Voyager-2 spacecraft was written in FORTRAN.
Although FORTRAN is not widely used in industry anymore, it is still popular for scientific and engineering applications and is still widely used by NASA and in large-scale climate modeling. In January of 2022, FORTRAN was ranked 19th in popularity of programming languages in the TIOBE index. This is an impressive ranking as the language now approaches its 65th birthday.
1960’s – BASIC and COBOL emerge – and stand the test of time
The sixties might have produced a wealth of great music, but in terms of programming languages, there isn’t a long list of hits. Two languages did have significant impacts and staying power BASIC (Beginners’ All-purpose Symbolic Instruction Code) and COBOL (Common Business-Oriented Language).
BASIC, was designed by John G. Kemeny and Thomas E. Kurtz and released at Dartmouth College in 1964, their goal was to create an accessible language that students other than those in science or math could learn and use. In the mid-1970s with the emergence of microcomputers, many offshoots were created, including Microsoft BASIC, which was co-written by Bill Gates, Paul Allen, and Monte Davidoff. Eventually, BASIC would be used on a wide variety of systems and come to dominate the home computer market that emerged in the 1970s. As computers evolved in complexity and capabilities during the 1990s, the use of BASIC diminished. Microsoft developed Visual Basic in 1991 which combined an updated BASIC with a visual forms builder. Visual Basic evolved into VB.NET which evolved into C#. In a recent Tiobe Index ranking of language popularity C# was in 5th place followed by Visual Basic in 6th.
COBOL development began in 1959 with the first official specifications being released in 1960. The language became the choice for business applications owing much of its original popularity to IBM, an early adopter and one of the original collaborators on its development. Up until the 1990s, COBOL was hands down the most widely used language by businesses. As recently as 1997, 80% of the world’s businesses ran COBOL. The language was popular for many reasons: it could handle large quantities of data quickly, its portability across computer types made it versatile, and it was relatively easy to read. The COVID-19 pandemic has created something of a renaissance for COBOL in updating and/or maintaining legacy programs. Because so few younger developers know COBOL, there’s something of a shortage of experienced developers.
BASIC and COBOL weren’t the only programming languages to come out of the sixties, but they were the predominant ones. Here’s a brief rundown of a couple of the other prominent languages that came out of the sixties – and, in some cases, their family tree:
APL – Named after a book entitled “A Programming Language,” APL is notable for its heavy use of graphic symbols to represent functions and operators. The case has been made that APL is a calculation tool and not a programming language because of its symbolic nature. It is still used for areas such as healthcare, asset management, and other commercial and scientific purposes. Many languages were either derived from or were influenced by APL including MATLAB mostly used for engineering/science and Speakeasy.
Simula – As one might guess, the language’s name describes its purpose – performing simulations. It is the first object-oriented programming language (based on objects which can be data and code). SIMULA was never widely used therefore it is likely used sparingly if at all today. This is not to say that it wasn’t effective or to understate its impact. Simula-like objects appear in a variety of other languages including C++, Java, and C#, among others.
1970’s – The personal computer upends the status quo
For the evolution of programming languages, the beginning of the decade of 1970s was something of a continuation of the decade of the 1960s. When the decade of the ’70s began, the languages that had been prominent in the ’60s, including Fortran, Algol, and COBOL, were still the leading languages. In 1974 a small company named MITS created the Altair, the first personal computer. Although it would take another 6 years for IBM to launch the PC and start a major revolution in computing. Even before then the prospect of relatively small, affordable computers brought more interest in programming and fueled the advancement of programming languages that led to many of the languages widely used today.
One of the most prominent issues debated starting during the ’60s but continuing into the ’70s was “structured programming”. Structured programming results in programs that are easier for a reader to follow and comprehend. The execution of the program follows the written order of the code and strives to eliminate the keyword “goto” and reduce the likelihood of creating “spaghetti code,” or convoluted coding that is difficult to maintain. Object-oriented programming was also being further developed and refined during the late 1970s and into the early 1980s. Object-oriented programming defines data structures or “objects” each having its properties or attributes. Objects can also contain procedures or methods. Object-oriented programming offers several advantages over its predecessors including the capability to build programs from standard modules rather than rewriting code, breaking the program into bit-sized segments that offer easier problem solving, and reducing the time and effort spent on program maintenance. Although Simula, described earlier, ushered in many of the concepts associated with object-oriented programming, it was the language Smalltalk, developed in the 1970s, that fostered the application of object orientation at the language level.
Two of the more noteworthy languages that originated in the 1970s were Pascal and C.
Pascal – This language was influenced by its predecessor, ALGOL. It became widely used for teaching programming as it possessed tools for debugging and editing and support for the early microprocessors used in teaching computer science. It was also used for writing commercial software. One version of Pascal was readily portable to different platforms and a key platform became the Apple II where its use broadened and led to the language being used for the development of the Apple Lisa and later, the Macintosh. Although Pascal is not widely used in business, it is still used as a programming teaching tool.
C – Created by a computer scientist working at Bell Labs, C and its offspring are among the most widely used programming languages. It was originally designed as a minimalist language intended to create utilities running on Unix. Its design was intended to encourage cross-platform programming and a C program that is written to meet ANSI and ISO standards can usually be compiled for a varied array of computer platforms and operating systems without having to make major changes to the source code. Its general-purpose nature allows it to be used on enterprise applications and applications requiring calculations as well as games and graphics. C has been ranked in the top 2 of Tiobe’s index for the popularity of languages consistently since 2000 and is currently ranked in the number 2 spot.
The next segment of this article will follow soon. Stay tuned as we continue to follow the evolution of computer programming languages.