Today, we write code in languages that seem understandable, in the sense that they use words from the English language combined with some special syntax. However, I have seen a lot of people wonder how the first programming language was created. Did the first person actually write code in 0’s and 1’s?!
The answer isn’t straightforward, but in a nutshell, the answer is yes- the first people to work with computers wrote 0’s and 1’s. To be more precise, they worked with machines that we can call computers in a broad sense, but these computers were only capable of solving very specific problems. As a result, the languages used at the time also required very limited functionality.
For a computer, a 0 stands for a switch being off (zero voltage), whereas a 1 stands for a switch being on (high voltage). To write a “program” in the most early stage, people had to actually change the wiring in the machine. This is what is equivalent to writing a program in 0’s and 1’s.
The language of 0’s and 1’s is known as machine code, and even today, this is what a computer understands. At the heart of a computer is a processor, and the processor has several pins attached to it, where we can connect wires. Every 0 or 1 given to a processor simply dictates whether some pin needs high voltage or low. Today, the machine code is often represented in a hexadecimal number system, which is a system consisting of 16 digits (0123456789ABCDEF).
The next leap in programming languages was when the first ever compiler was created using these 0’s and 1’s. A compiler simply refers to a program which can convert one language to another. In this case, the compiler that was created would convert a program to 0’s and 1’s.
This gave rise to the concept of an assembly language. An assembly language was a language that had a one-to-one mapping with machine code. This means that one machine code has a single assembly equivalent instruction- meaning if two assembly level instructions have the same machine code, then these two instructions do the exact same thing!
Assembly languages are, however, processor dependent. This meant that if a different computer was used, the same program would no longer work. The challenge now was to create a language that was machine independent. The way a language is made machine independent is to design the compiler in such a way that it converts the language to assembly code that is specific to the computer it is running on.
The first machine independent language to come up was COBOL (COmmon Business Oriented Language), and programs written in COBOL could be run on any computer with very minor changes. COBOL was very popular among businesses, since that was the purpose it was built for. Another popular language that was used in the early days was FORTRAN (FORmula TRANslation), which was used widely for scientific calculations.
Using the assembly language itself, the first C compiler was written, and C continues to be among the most popular programming language, often also taught as the first programming language to students. Using the C language, compilers for new languages could be written. Also, once the first C compiler was written, later compilers for C itself were written in C. This has now become a general practice that later compilers in a language are written in the language itself. Only the first compiler needs to be written in a different language. For example, the first Java compiler was written in C.
Today, there exist hundreds of programming languages, used for different purposes. I’m not going to go in detail about these languages in this article, but I’ll definitely write on about them sometime, so stay tuned for it! I hope you had fun reading this article, and got to learn something new about the history of programming languages.