Before we move forward it is often useful to look back. Today’s post is the first of a three-part series looking at the history of the major programming languages and technologies that underpin application development on the iOS platform.
In today’s post I want to examine the creation and subsequent rise of the C Programming Language, from its early inception at the AT&T Bell Labs through the efforts to introduce standardization, to its current ubiquity as one of the most used programming languages of all time. In doing so I want to help you understand the influence that C has had on the more recent programming languages such as Objective-C (the topic of the next post) and understand how Unix, the operating system that the C Programming Language was created to develop, remains at the core of the iOS platform today.
In the early days of computing code was mostly written in something called Assembly Language. Assembly language was a low-level language for programming computers where each statement corresponded to a single machine code instruction, a low-level instruction that could be implicitly understood by a computer processor. At the time, pages and pages of Assembly Language were needed to instruct a computer to do even the simplest of tasks.
In the early 1970’s Dennis Ritchie was working as a developer at the AT&T Bell Labs. He and his colleagues were working on developing a large multi-user operating system called Unix which they were writing using Assembly Language and another early programming language called ‘B’.
Developed between 1969 and 1970 by another engineer at AT&T Bell Labs, Ken Thompson, the B Programming Language was a higher-level language meaning that less code was required to program a particular task. The result was a significant increase in the speed at which programmers could program the computers and this in turn led to corresponding increases in productivity. However, the B Programming Language was not perfect.
And After B there was C
In 1971, spurred on by some of the issues he and his colleagues were experiencing with the B Programming Language, Dennis Ritchie set about trying to find a better solution. His approach was to keep most of the B Programming Language’s syntax and structure but over the course of the next two years he added a number of new features including data-types (a simple classification system that gave meaning to the underlying information stored by the computer) and the ability to represent structured data. The result? A brand new programming language he called ‘C’.
The C Programming Language was a powerful mix of both high-level functionality and detailed features and was ideal for Operating System programming. His new language was so well received that by 1973, most of Unix had been re-written in C.
Baked into the core of the first, and almost all subsequent, variants of the Unix operating system, the language was first documented in the 1978 seminal book ‘The C Programming Language’ where Ritchie teamed up with another of his colleagues Brian Kernighan. For almost 10 years this book acted as an informal reference for programmers using C.
Despite this, it wasn’t until 1989 that C was first standardized by the American National Standards Institute (ANSI) as ANSI C (or C89). A year later the standard was also adopted by the International Organization for Standards (ISO) (C90), with further revisions being published in both 1995 (to support internationalization) and 1999 (C99) (to support a number of new features including several new data types and support for single-line comments). For a further 10 years, there was little change to the ISO C standard until its latest revision in 2011 (C11). This latest revision added some major new additions to the language including enhanced support for internationalization and support for multi-threaded programming (a style of programming where the computer can be doing more than one thing at once), a necessity with modern computer hardware.
From its early beginnings to the modern-day, the C Programming Language remains one of the most widely used programming languages of all time. It has heavily influenced both the syntax and structure of many of the more recent programming languages including C++ and Objective-C. In the next post, we’ll take a look at these influences and investigate the history of Objective-C, the key language for development of applications for iOS Devices.