Click on the “Zero One Vision” above and select the “Star” public account
Resource-rich content delivered promptly
Assembly language still forces programmers to think about which registers and memory addresses to use. If you suddenly need an extra number, you might need to change a lot of code. Let’s think about that.
1. Patching “Bugs” with Tape
Dr. Grace Hopper (as a naval officer, she was one of the first programmers of the Harvard Mark I computer) faced this issue as well. This massive electromechanical beast was completed during wartime in 1944 and helped the Allies in combat. Programs were written on punched tape and fed into the computer for execution. By the way, if there was a bug in the program, it was literally patched with tape.
The instruction set of the Mark I was very primitive, lacking even a JUMP instruction. If the code needed to run more than once, the ends of the tape had to be connected to create a loop. In other words, programming the Mark I was a nightmare.
2. The First Compiler
After the war, Hopper continued to work on the forefront of computing. To unlock the potential of computers, she designed a high-level programming language called “Arithmetic Language Version 0,” abbreviated as “A-0.” Assembly instructions corresponded one-to-one with machine instructions, but a single line of high-level programming could translate into dozens of binary instructions. To achieve this complex transformation, Hopper created the first compiler in 1952. The compiler specifically translated high-level languages into low-level languages, such as assembly or machine code (which the CPU can execute directly).
Despite the allure of “making programming easier,” many were skeptical of Hopper’s idea. She once said, “I have a compiler that works, but no one wants to use it; they tell me computers can only do arithmetic, not run programs.”
But the idea was sound.
Soon, many attempted to create new programming languages, and today there are hundreds of languages! Unfortunately, no code from A-0 remains. So, let’s use Python as an example (a modern programming language).
Suppose we want to add two numbers and store the result.
Remember, if we were using assembly code, we would have to retrieve values from memory, deal with registers, and other low-level details. But the same program can be written in Python like this: without worrying about registers or memory locations, the compiler will handle those details, and we don’t need to be concerned with low-level specifics. The programmer only needs to create an abstraction representing memory addresses, called a “variable,” and name the variable. Now we can store two numbers in variables named A and B; you can name them whatever you like in actual programming. Then, we add the two numbers and store the result in variable C. At the low level, the compiler might store variable A in register A, but I don’t need to know that! Out of sight, out of mind.
This is an important historical milestone, but A-0 and its later versions were not widely used.
3. FORTRAN Dominated Early Computer Programming
FORTRAN, short for “Formula Translation,” was released by IBM in 1957 and dominated early computer programming.
John Backus, the project director for FORTRAN, said, “Most of the work I did was out of laziness; I didn’t want to write programs, so I created this language to make programming easier.” You get it, the typical “lazy person” creating their own programming language.
On average, programs written in FORTRAN were 20 times shorter than equivalent handwritten assembly code, and then the FORTRAN compiler would translate the code into machine code. People were skeptical whether the performance could match that of handwritten code, but because it allowed programmers to write code faster, it became a more economical choice, running slightly slower but significantly speeding up programming.
4. The Birth of COBOL
At that time, IBM was selling computers, so initially, FORTRAN code could only run on IBM machines. In the 1950s, most programming languages and compilers could only run on one type of computer. If you upgraded your computer, you might have to rewrite all your code! Therefore, computer experts from industry, academia, and government formed a consortium in 1959—the Data Systems Language Committee, with Grace Hopper as an advisor. They aimed to develop a universal programming language that could work across different machines, which ultimately led to the creation of a high-level, user-friendly language known as COBOL (Common Business-Oriented Language).
To be compatible with different underlying hardware, each computing architecture needed a COBOL compiler, and most importantly, these compilers could all accept the same COBOL code. No matter what computer it was, this was called “write once, run anywhere.” Today, most programming languages operate this way, eliminating the need to deal with CPU-specific assembly code and machine code, which lowered the barrier to entry.
5. Computers Become Mainstream Tools
Before the advent of high-level programming languages, programming was something only computer experts and enthusiasts would do, and typically as their main job. But now, scientists, engineers, doctors, economists, teachers, and many others can use computers in their work.
Thanks to these languages, computer science has transformed from an esoteric discipline into a mainstream tool. At the same time, the abstraction of programming has allowed computer experts, now called “professional programmers,” to create more complex programs. What might require millions of lines in assembly can now be done much more efficiently.
6. The Rapid Development of Programming Languages
Of course, the history of computers did not end in 1959; the golden age of programming language design was just beginning, rapidly evolving alongside hardware.
In the 1960s, languages like ALGOL, LISP, and BASIC emerged;
In the 1970s: Pascal, C, and Smalltalk;
In the 1980s: C++, Objective-C, and Perl;
In the 1990s: Python, Ruby, and Java;
In the new millennium, Swift, C#, and Go are on the rise;
Some of these languages may sound familiar—many still exist today, and your current browser is likely written in C++ or Objective-C. The names of programming languages I just mentioned are just the tip of the iceberg. New programming languages are continuously being created, aiming to provide smarter abstractions, making certain aspects easier or more powerful, or leveraging the advantages brought by new technologies and platforms, enabling more people to quickly create wonderful things.
Many believe that the “Holy Grail” of programming is to speak directly in English to the computer, which would then understand and execute commands. Such intelligent systems currently exist only in science fiction.
Recommended Reading
Interesting Learning: “The True Nature of Operating Systems”
Essential for Data Analysis: “Data Analysis with Python” Recommended
Interesting Algorithm Book: “Algorithms Illustrated” Recommended
Easy Learning of Network Knowledge: “HTTP Illustrated” Recommended

WelcomeFollow us to gain resource insights!