At this moment in time, if people (tech giants) want they can design their operating system within a matter of a few days or months. Anything can be possible nowadays due to the availability of a wide range of resources on the internet and high-minded open-source collaborations.
Let's go to fifty years back, where no internet & community collaborations were there. Without these supports, what were the challenges faced by computer scientists in developing an efficient operating system? Are they succeed in producing the efficient one? If succeed, which programming language they had chosen? and why? We'll find answers to all these questions in this article.
The Birthplace for world-class inventions
AT&T Bell Laboratories is the place where the actual development of the C language was done. Not only C but the most popular and notable inventions such as Telephone, Laser, Transistor, Solar cells, Communication satellites and many more came from this place.
It was around 1961, where the actual development of the Multics operating system was started by three organizations such as MIT, General Electric and Bell Laboratories.
Bell invested a huge amount of manpower and money in the Multics project. But later in 1969, Bell Labs was decided to withdraw from the Multics project because as per the planning schedule Multics operating system was not completed and there were no guaranteed dates regarding the delivery of the operating system. After the withdrawal, the people who are working from Bell in the Multics was returned to the Bell Labs.
Rise of Unix Operating system
After the Multics project team came back to Bell Labs, Ken Thompson, Dennis M Ritchie and few other team members started working on a new operating system with the knowledge they have gained in the Multics project.
Within a few years, the entire team worked ceaselessly and developed a new operating system. Before introducing this new operating system to the outside world, as an experiment, Bell started using this for their internal works.
At that time, MULTICS (Multiplexed Information & Computing Service) was one of the most popular multitasking operating systems in the world. But coming to Bell's new operating system is a Uni-tasking Operating system. So scientists were decided to name it UNICS (Uniplexed Information & Computing service) because its pronunciation is a bit similar to MULTICS.
But later, the operating system was transformed from Uni-tasking to Multi-tasking but the name was stuck over there and then eventually changed to UNIX.
The birth of Assembler
Initially, computers were programmed using a low-level language called Machine language or Binary language. Binary language is a combination of 0's and 1's. The problem with Binary language is, It is complete platform-dependent and requires more time to understand and implement a new feature.
To reduce this complexity, computer scientists came up with a new programming language called "Assembly level programming".
Ken Thompson wrote a program called Assembler which will convert the program written in "Assembly level language to Machine language".
With the help of Assembler, the complete Unix operating system was written in ALP.
The Developer's wrong choice
As the requirements were changing day by day in the world of computer science, scientists felt difficult to code in assembly language. They wanted to bring up a more portable and easy-to-write programming language.
At that time (1967), Martin Richard's BPCL was the trending programming language. From BPCL, Ken Thomson developed a new programming language called "B". Few of the Unix developers were thought to replace assembly level language with B. But later they concluded that "B" is not an efficient programming language to design an operating system.
Why B is not an efficient language? Because "B language" is a type-less programming language. There was no concept of data types in B. In B Every variable will occupy a word-sized memory.
Because of no data types, it might be an easy-to-write programming language but not an easy-to-maintain programming language. It means that the compiler doesn't throw any warnings or errors for invalid variable assignments at the compilation phase. Which may lead to unexpected crashes during runtime and create hard to debug situations.
Evolution of C language
By adding extra features to B, computer scientist "Dennis M Ritchie" came up with a new programming language called "NB (New B language)".
In NB language, Dennis Ritchie came up with solutions to every problem that B was unable to solve. He designed C in a well-structured manner and introduced concepts such as structures & datatypes, which made C a strictly typed programming language.
Later in 1972, NB was officially named a C and Unix was completely re-written in C language.
C language got a huge response among developers and over a wide range of communities throughout the world. To help the communities Kernighan and Ritchie authored a Book known as "The C Programming Language" also known as "The K&R standard".
Later in 1989, ANSI standardized C language and the name changed to ANSI C or C89 and after a year ISO adopted C and the name gradually changed to ISO C or C90.
Later on, many revisions were done on C such as C99, C11, C18 were released and many new features were introduced into it.
"C++ and Java, say, are presumably growing faster than plain C, but I bet C will still be around"