The C Programming Language
The C programming language was developed in the early 1970s by Dennis Ritchie at Bell Labs. Ritchie was working on the development of the UNIX operating system and needed a programming language that could be used to write system-level software.
C was designed to be a high-level programming language that could be used to write code that interacts nearly-directly with the computer hardware. It was also designed to be simple and efficient, with a focus on performance and portability. For this reason, it was often referred to as “portable assembly”.
One of the key features of C is its ability to manipulate memory directly, which allows for efficient memory allocation and management. This made it well-suited for writing operating systems, device drivers, and other system-level software. Another factor that contributed to C’s popularity was its simplicity and ease of use. The language was designed to be easy to learn and understand, with a straightforward syntax that made it easy to write and debug code.
In the 1980s, the popularity of C continued to grow, and it became the de facto standard for systems programming. This was due in part to the growth of the personal computer industry, which created a need for software that could run on a wide range of hardware platforms.
Today, C continues to be widely used, particularly in the fields of systems programming, embedded systems, and high-performance computing. Its popularity can be attributed to its efficiency, simplicity, and portability, as well as its ability to interface with other languages and libraries. In addition, C has influenced the development of many other programming languages, including C++, Java, and Python. Its legacy can be seen in the design of modern programming languages and the way that software is developed and deployed.
In this class, we use the 1999 version of the C language standard, called C99, which is available for free online. This has also been ported to an unofficial html format for this course. Students should also refer to the community wiki-based C reference as a complement to reading the C standards themselves.