History of C Programming Language
In this article, I will discuss the History of C Programming Language. Please read our previous article, where we give a brief introduction to C Programming Language. At the end of this article, you will understand the history and evolution of the C Programming Language in detail.
History of C Programming Language:
The Programming Language term started in 1950, with the Language called FORTRAN. Another programming language was developed from the FORTRAN language called ALGOL (Algorithmic Language). The beginning of C was started in the year 1968 with the language called BCPL (Basic Combined Programming Language). In 1970, BCPL, another programming language, was developed by REN THOMPSON. It is called B-Language (Basic Language).
In the year of 1972, DENNIS RITCHIE developed C-Programming Language at AT&T BELL LABORATORIES for developing system software. In the year of 1978, Ritchie and Kernighan released the next version of C-Language, i.e., “K and R-C.” In 1980, ANSI (American National Standard Institute) released the next version of the C Language called “ANSI-C”. In 2000, ISO Standard C was released called “C 99”. On the 8th of Dec. 2011, the latest version of C was released with the name called “C 11”. In alphabetical order, only the name C-Language is given. Given the name C++, there is a reason nothing but post features of C-Language.
Evolution of C Programming Language:
In the modern era, if any tech giant desires to design an operating system, he/she can design it within a matter of few days or months due to the availability of a wide variety of sources on the internet and community collaborations.
Let’s move back to fifty years when no internet and community collaborations existed. Without the above supports, imagine the challenges computer scientists faced in developing an efficient operating system. Did they succeed in producing an efficient Operating System? If they succeed, then what programming language they use? And why? We’ll find answers to all these questions in this article.
The Birthplace for World-Class Inventions:
The AT&T Bell Laboratories is where the actual development of the C Programming language was done. Not only the C language but also the most popular and notable inventions like the Telephone, Transistor, Laser, Communication satellites, Solar cells, and many more are developed in this lab.
It was around 1961 that the actual development of the Multics operating system was started by three organizations: 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 decided to withdraw from the Multics project because, as per the planning schedule, the Multics operating system was not completed, and there were no guaranteed dates regarding the delivery of the operating system.
After the withdrawal, the people working from Bell in the Multics were returned to the Bell Labs.
Rise of the Unix Operating System:
After the Multics project team returned to Bell Labs, KenThompson, Dennis M Ritchie, and a few other team members started working on a new operating system with the knowledge they had gained in the Multics project.
Within a few years, the 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 it for their internal work.
At that time, MULTICS (Multiplexed Information & Computing Service) was one of the world’s most popular multitasking operating systems. But coming to Bell’s new operating system is a Uni-tasking Operating system. So, scientists called it UNICS (Uniplexed Information & Computing Service) because its pronunciation is similar to MULTICS.
Later, the operating system was transformed from Uni-tasking to Multi-tasking, but the name was stuck over there and eventually changed to UNIX.
The Birth of Assembler:
Initially, computers were programmed using a low-level language called Machine or Binary language. Binary language is a combination of 0’s and 1’s. The problem with Binary language is that it is completely platform-dependent and requires more time to understand and implement a new feature.
To reduce this complexity, computer scientists developed 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 daily in computer science, scientists found it difficult to code in assembly language. They wanted to bring up more portable and easy-to-write programming languages.
At that time (1967), Martin Richard’s BPCL was the trending programming language. From BPCL, Ken Thomson developed a new programming language called “B.” A Few 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 B could not solve. He designed C well-structured and introduced concepts such as structures & datatypes, making C a strictly typed programming language. Later, in 1972, NB was officially named a C, and Unix was completely rewritten in C language.
C language got a huge response among developers and many communities worldwide. To help the communities, Kernighan and Ritchie authored a Book called “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. 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, and C18 were released, and many new features were introduced into it.
HISTORY OF C Language
‘C’ language was designed in 1972 by “DENNIS RITCHIE.” Ritchie is one of the software engineers in AT&T Bell Labs [ American Telephone & Telegraph], located at Murray Hills, New Jersey, USA.
C language was adopted [taken] from B language, designed by KEN THOMSON, AT&T Bell Labs programmer.
B language adopted from BCPL [ Basic Combined Programming Language], designed by MARTIN RICHARDS, a professor at CAMBRIDGE University.
BCPL was taken from ALGOL.
In 1989, ANSI [ American National Standards Institute] released a new version of c language with the name “ANSI-C,” which is familiar with the name “C-89”.
In 1999, IOS [ International Organization for Standardization] ISO [ International Standard Organization] released a new version of the C language with the name “C-99”.
Basically, C language was designed for rewriting the UNIX operating system.
We can create and execute a c program on most systems with any processor. Hence, C is called a machine-independent programming language. i.e., we can run the c program on 80386 / 486 / 586 / core i3 / i5 / i7 / i9 / AMD,…
The languages like 8056 / 8066 work only with 8056 and 8066 processors. Hence, they are called machine-dependent programming languages.
But c is a platform-dependent programming language. i.e., the c program created in one operating system cannot execute in others. Due to this, we can design only standalone applications like calculator, FM, media player, anti-virus, commercial programs, etc, and not web applications.
History of C Programming Language:
The C programming language has a rich history, deeply intertwined with the development of modern computing. Here’s a brief overview of its evolution:
Early Development (1960s – 1970s):
- Origins in BCPL: The roots of C trace back to BCPL (Basic Combined Programming Language) developed by Martin Richards in the mid-1960s. BCPL influenced Ken Thompson’s creation of the B language at Bell Labs.
- Creation of C: at Bell Labs, Dennis Ritchie developed C in the early 1970s. It evolved from the B language as a more capable and flexible language, initially used for developing the UNIX operating system.
Association with UNIX (1970s):
- UNIX OS Development: C gained prominence as it was used for re-writing the UNIX operating system, initially written in assembly language. This pairing of C and UNIX proved influential, as UNIX’s popularity in academic settings led to the adoption of C in computer science education and research.
Standardization and Growth (1980s – 1990s):
- K&R C: The first widely-known book on C, “The C Programming Language” by Brian Kernighan and Dennis Ritchie (often referred to as K&R), was published in 1978. It described what is now known as K&R C.
- ANSI C: In the 1980s, the American National Standards Institute (ANSI) formed a committee to standardize C, leading to the ANSI C standard in 1989 (also known as C89). This standard resolved inconsistencies and ambiguities, making C more portable across different platforms.
- ISO C: Following ANSI’s standardization, the International Organization for Standardization (ISO) adopted this as the international standard for C (ISO/IEC 9899:1990), often called C90.
Modern C and Its Influence (2000s – Present)
- Further Standards: There have been several updates to the C standard, including C99, C11, and the most recent, C18. Each version added new features, improved portability, and addressed issues in the previous standards.
Legacy and Ongoing Relevance
- Foundation for Modern Software: C has been fundamental in developing modern software and operating systems. Many contemporary operating systems, drivers, and system software are written in C or influenced by its design.
- Educational Importance: It remains a popular language for teaching fundamental computer science concepts due to its close relationship with the underlying hardware and its influence on later languages.
In the next article, I will discuss Library and IDE in C Programming Language. In this article, I try to explain the History of the C programming language. I hope you enjoy this article. I would like to have your feedback. Please post your feedback, questions, or comments about this article.
About the Author: Pranaya Rout
Pranaya Rout has published more than 3,000 articles in his 11-year career. Pranaya Rout has very good experience with Microsoft Technologies, Including C#, VB, ASP.NET MVC, ASP.NET Web API, EF, EF Core, ADO.NET, LINQ, SQL Server, MYSQL, Oracle, ASP.NET Core, Cloud Computing, Microservices, Design Patterns and still learning new technologies.