Last Updated on May 17, 2023 by Prepbytes
In this article, we embark on a captivating journey to unravel the story of C language’s inception and shed light on its brilliant inventor. While many technological advancements owe their origins to collaborative efforts, C stands out as a language that emerged from the singular brilliance of a visionary programmer. So, let’s step back in time to explore the origins of C and meet the brilliant mind who bestowed this language upon the world.
Our exploration takes us to the early 1970s, a period of significant development in the field of computer science. As the demand for efficient and versatile programming languages grew, one man’s pioneering work would forever reshape the landscape of software development. His name: Dennis Ritchie.
Dennis Ritchie who created C Programming language, a revered computer scientist, worked at Bell Labs, the birthplace of numerous groundbreaking innovations. Drawing from his experience in developing operating systems and programming languages, Ritchie set out to create a language that combined simplicity, power, and portability—a language that could empower programmers to build robust and efficient software systems. The result of his relentless efforts was the birth of the C language.
Who is the Father Of C Language?
The C language was developed at Bell Laboratories (previously AT&T Bell Laboratories) in the early 1970s by American computer scientist Dennis M. Ritchie. Minicomputers like the DEC PDP 7 had very less memory compared to the mainframe computers of the day, therefore C was developed as a simple language for use in operating system development. The UNIX operating system was being developed at the same time the language was conceived, between 1969 and 1973. It was constructed on top of CPL (Combined Programming Language), which was earlier compressed into the B programming language—a more straightforward computer programming language—created in 1969–1970 by American computer scientist Ken Thompson, Ritchie’s collaborator. By rebuilding and reinstating CPL features, Ritchie later created C, and he later built the UNIX operating system in the new language.
Let’s Discuss the journey of the different version C language and how C was developed by Dennis M. Ritchie.
Early Developments
The history of C is closely related to the development of the Unix operating system, which Dennis Ritchie and Ken Thompson first created in assembly language on a PDP-7 while taking advice from their colleagues. Ultimately, the operating system was chosen to be transferred to a PDP-11. The early PDP-11 Unix system was created using assembly language as well.
B
Thompson wanted to use a programming language to develop utilities for the new platform. At first, he tried to build a Fortran compiler, but he soon abandoned it. He came up with a compressed version of the recently published BCPL systems programming language instead. At the time, BCPL didn’t have a formal explanation, so Thompson altered the syntax to be less verbose and more like SMALGOL, a condensed form of ALGOL. The result was referred to by Thompson as B. According to him, B has "BCPL semantics with lots of SMALGOL syntax." Similar to BCPL, B offers a bootstrapping compiler to make it simpler to port to new systems. However, because of its slowness and inability to utilize PDP-11 capabilities like byte addressability, few utilities were finally built in B.
New B and First C Release
Ritchie began modifying B in 1971 to take advantage of the PDP-11’s more formidable capabilities. The addition of a character type was significant. His New B was this. The language’s evolution was driven by Thompson’s requirements as he started to use NB to design the Unix kernel. Up until 1972, the NB language incorporated more advanced types, such as int and char arrays. Pointers, the ability to create pointers to other kinds, arrays of all types, and types that could be returned from functions were also introduced. Pointers to arrays were contained in expressions. A new compiler was made, and the language was renamed to C.
Version 2 Unix, often known as Research Unix, includes the C compiler and a few tools created with it.
Structures and the Unix Kernel Re-write
At Version 4 Unix, which was released in November 1973, the Unix kernel was largely reimplemented in C. The C language at this stage had useful extensions like struct types.
The preprocessor was first released around 1973 at Alan Snyder’s request and in recognition of the worth of the file-inclusion techniques available in BCPL and PL/I. The initial version only provided included files and simple string substitutions (#include and #define of parameterless macros). Soon after that, firstly under the leadership of Mike Lesk and later John Reiser, it was extended to support macros with arguments and conditional compilation.
Unix was one of the first operating system kernels developed outside of assembly. The Master Control Programme (MCP), which was written in ALGOL for the Burroughs B5000 in 1961, and the Multics system, which was developed in PL/I, are older examples. Around 1977, Ritchie and Stephen C. Johnson made more language changes to improve the portability of the Unix operating system. Johnson’s Portable C Compiler was used to provide a number of C implementations for new platforms.
K&R C
Brian Kernighan and Dennis Ritchie initially released the C programming language in 1978. This book, known to C programmers as K&R, served as an unofficial specification of the language for many years. It talks about a C dialect that is frequently referred to as "K&R C." Because it was published in 1978, this item is also known as C78. The second edition of the book includes coverage of the ensuing ANSI C standard, which is described in more detail below.
K&R introduced several language features:
- Standard I/O library
- long int data type
- unsigned int data type
In order to eliminate the semantic ambiguity caused by constructs like i=-10, which had been interpreted as i =- 10 (decrement i by 10) instead of the potentially intended i = -10 (let i be 10), compound assignment operators of the type =op (such as =-) were altered to the form op= (that is, -=). Since many older compilers were still in use and since carefully written K&R C code can be legal Standard C as well, K&R C was for a long time still regarded as the "lowest common denominator" to which C programmers restricted themselves when maximum portability was desired. This was true even after the 1989 ANSI standard’s publication.
ANSI C and ISO C
In the late 1970s and early 1980s, when its popularity began to rapidly increase, versions of C were implemented for several mainframe computers, minicomputers, and microcomputers, including the IBM PC. The X3J11 committee was established by the American National Standards Institute (ANSI) in 1983 to develop a standard C specification. Although X3J11 based the C standard on the Unix implementation, the IEEE working group 1003 was handed the non-portable portion of the Unix C library to use as the basis for the 1988 POSIX standard. 1989 saw the approval of the "Programming Language C" standard, ANSI X3.159-1989. This language is also known as ANSI C, Standard C, and on rare occasions C89.
The ANSI C standard was modified in terms of formatting before being adopted by the International Organisation for Standardisation (ISO) in 1990 as ISO/IEC 9899:1990, also referred to as C90. "C89" and "C90" can both be used to refer to the same programming language.
ANSI, along with other national standards bodies, no longer independently creates the C standard; instead, the international C standard is maintained by the working group ISO/IEC JTC1/SC22/WG14. A national adoption of an upgrade to the international standard is typical within a year of ISO publication.
One of the goals of the C standardization process was to create a superset of K&R C that incorporated many of the unauthorized features that were later introduced. Other features added by the standards committee include preprocessing enhancements, void pointers, support for locales and character sets used outside of the U.S., function prototypes (which were derived from C++), and more. The syntax for parameter declarations was changed to use the C++ approach, although the K&R interface was still permitted to keep its source code compatibility.
C99
More changes to the C standard were made in the late 1990s, and as a result, ISO/IEC 9899:1999 (often referred to as "C99") was released in 1999. Since then, three corrections have been made in Technical Corrigenda.
A few of the new features that C99 introduced include inline functions, new data types (such as long long int and a complex type to represent complex numbers), variable-length arrays, flexible array members, improved IEEE 754 floating point support, support for variadic macros (macros of variable arity), and support for one-line comments beginning with //, as in BCPL or C++. Many of them have already been added as extensions by numerous C compilers.
C11
A second revision of the C standard was initiated in 2007, and it was code-named "C1X" until it was officially published as ISO/IEC 9899:2011 on December 8, 2011. The C standards committee developed guidelines to stop the addition of new features that had not been tested by current implementations.
The C11 standard introduces a number of new features to C and the library, including type generic macros, anonymous structures, improved Unicode support, atomic operations, multi-threading, and bounds-checked functions. Additionally, it makes a number of the current C99 library’s components optional and enhances compatibility with C++. C11 support is indicated by the 201112L specification of the standard macro STDC VERSION.
C17
C17, published in June 2018 as ISO/IEC 9899:2018, is the most recent standard for the C programming language. It does not add any new linguistic features; it merely fixes technical issues and clarifies C11’s shortcomings. The definition of the STDC VERSION default macro is 201710L.
C2x
The following (after C17) major modification to the C language standard is known informally as C2x. It would be known as C23 and is anticipated to be voted on in 2023.
Embedded C
For the C language to implement unusual features like fixed-point arithmetic, numerous distinct memory banks, and basic I/O operations, nonstandard extensions have historically been required.
In order to address these issues, the C Standards Committee extended the C language by establishing a consistent standard that all implementations had to adhere to. This technical report was published in 2008. Named address spaces, fixed-point arithmetic, and basic I/O hardware addressing are just a few of the capabilities it offers that are not included in ordinary C.
Conclusion
In the realm of computer programming, the invention of the C language stands as a monumental achievement that forever changed the landscape of software development. Through our exploration of the genius behind its creation, we have uncovered the remarkable journey of Dennis Ritchie who created C, a visionary programmer who single-handedly crafted a language that would leave an indelible mark on the world.
Dennis Ritchie’s dedication and expertise, coupled with his profound understanding of operating systems and programming languages, led to the birth of C—a language that seamlessly combined simplicity, power, and portability. Its impact was immediate and far-reaching, as programmers quickly recognized its potential to build robust and efficient software systems.
FAQ related to Who Invented C Language
Q1. Where was the C language invented?
Ans. The C language was invented at Bell Labs, a research and development center owned by AT&T.
Q2. What motivated Dennis Ritchie to create the C language?
Ans. Dennis Ritchie aimed to develop a programming language that combined simplicity, power, and portability. His experience in operating systems and programming languages drove him to create a versatile tool that could empower programmers to build robust software systems.
Q3. What are some key features of the C language?
Ans. The C language is renowned for its simplicity, efficiency, and low-level programming capabilities. It provides a wide range of features such as control structures, data types, and modular programming, making it suitable for various applications.
Q4. How has the C language influenced programming?
Ans. The C language has had a profound influence on programming. Its design and philosophy have inspired the development of numerous other programming languages, including C++, C#, Java, and Objective-C. C’s emphasis on efficiency and portability has made it the language of choice for operating systems, embedded systems, and low-level programming.
Q5. Is the C language still relevant today?
Ans. Absolutely. Despite being over five decades old, the C language remains highly relevant in modern programming. It continues to be widely used for system-level programming, firmware development, and building efficient software. Its simplicity, speed, and compatibility make it a preferred language for many developers.
Q6. What is the legacy of the C language?
Ans. The C language’s legacy is far-reaching. Its influence can be seen in the foundations of modern programming languages, operating systems, and software applications. The elegance and power of C have made it an essential tool for generations of programmers, and its impact will continue to shape the field of computer science for years to come.
Q7. Did Dennis Ritchie receive recognition for his contributions?
Ans. Yes, Dennis Ritchie’s contributions to the field of computer science were widely recognized. He received numerous prestigious awards, including the Turing Award in 1983, which is considered the highest honor in computer science. His work and the invention of the C language have solidified his place as one of the most influential figures in the history of programming.