1. Turner 1
David Turner
Professor Powel
March 13, 2013
A Brief Discussion On The C Programming Language
Figure 1: Dennis Ritchie, Creator of C
(C Programming Language History)
Abstract
This report has been prepared to give a broad, underlying understanding of the C
programming language, its development, and how it relates to other programming languages.
The report is divided into a series of sections that describe the historical elements that led to the
creation of C on a strictly technical level, the conventional success and practice, and the ranging
potential for additional development and growth. This report expects a rudimentary
understanding in computer logic and design, though is not explicitly required.
Introduction
C: a simple, streamlined, systems-focused programming language concocted in 1972 by
Dennis Ritchie (Figure 1), a systems engineer at Bells laboratories, has since laid the
groundwork for nearly all high-level programming.While C was originally intended for the Unix
Operating system, dispersion, and the utter success of the company led to more contemporary,
general uses by other platforms. C‟s tremendous power, flexibility, and high level of
2. Turner 2
communicative portability have made it a very effective middle-level language, incorporating the
syntactical grace of higher level hierarchy along with the control of hardware specific data. It is
now used for a variety of different purposes (Dennis).
This report further explains:
The development and historical components of C‟s creation.
The core reasons for its financial success and popular usage.
The advantages of C programming and the list of capabilities that differ from
other established languages.
The basic, generic structure of C programming
The evolution and transcendence into other object oriented languages.
Ancestral Languages of C
The core principles and groundwork can be drawn from earlier predecessors, such as
Combined Programming Language (CPL), Basic Combined Programming language (BCPL), and
B (C‟s most recent ancestor, hence the sequential coincidence in the naming of C). These earlier
languages had similar, though less accomplished goals as C, which included low-level control
down to the single most bit and streamlined functionality so that composing programs was quick
and efficient. However, problems including size, run time, and OS specific coding -particularly
BCPL- keep them from reaching the heights of C (Dennis).
Reasons for Creating C
BCPL and B are small, deterministic, uniformly consistent languages written almost
primarily for the operating system. They are generally parallel with C in terms of logic and
3. Turner 3
design, though B is restricted to a more uniform, skeletal structure that promotes regularity and
simplicity over complex usage. Large libraries of complex functions and varying features of an
instruction set typically result in larger CPU times and higher memory costs. While B was
effective in many regards, clumsy, almost inexcusable problems related to its library procedures
and forms of string manipulation made for an ineffective, cumbersome process (Dennis).
C, originally a singularly purposed creation: a quick, efficient means of compiling the
Unix operating system, slowly became the language of choice, even replacing several well-
known languages such as PL/I and ALGL. Ultimately, it became necessary to create an
undeviating standard through the American National Standards Institute (ANSI) in 1990
(Introduction to C).
The Mainstream Popularity of C
While there are a number of programming languages designed for an assortment of
different purposes, some broad, while others more specific and simplified, C still remains a very
popular language to remain cozy in. It is a healthy, well-built language used for both systems
programming and portable, applications software. In fact, many other languages, such as Basic,
Pascal, and Fortran, have their compilers written entirely in C (Introduction to C).
The widespread popularity of C comes from:
Itsportability (meaning code is readable and applicable across platforms). The
low-level design of C allows finite control over small streams of data, making it a
go-to language when writing a complier or interpreter for another language.
4. Turner 4
Its speed and efficiency. Because of its similarity to assembly language, its wide
range of data types, and the regimented nature of its operators, the jump from
assembly to machine code is a quicker, more congruent operation than other
languages.
Its simplicity and ease of mastery. It provides a solid foundation, both
syntactically and in terms of understanding the operations on a more hardware-
intensive level, to other languages.
C was originally established to assist in the development of systems software, to work
with large, overarching programs that made up the operating system to build larger and better
tools, but never to the point where it was bogged down by needless boil code (The C
Programming Language).
However, because of its rapid speed, close in terms to code written in assembly, and its
ease of portability across platforms, it has become a general all-purpose language for all kinds of
applications. Such examples are:
Areas of practicality with C
*Embedded systems *Systems Programming *Artificial Intelligence
*Industrial Automation *Computer Graphics *Space Research
*Image Processing *Game Programming *Many more.
5. Turner 5
What sets C part from other Languages?
Choice in in programming language comes from the situation in which they are applied,
as each language is geared towards certain objectives over the other, so to describe any one
language as the „superior‟ victor to another is a moot point (The Differences).
The difference from C and many other languages is its similarity to assembly, and the
simplicity in its control structure. C is a form of procedural- typically sequential- programing,
that involves using selected functions to obtain desired results: a quick, instruction based system
that makes reading code slightly more readable. Other more advanced languages such as C++
(simply a superset of C), and Java –built from C- utilize object oriented design, meaning user
defined entities are manipulated by a barrage of methods and key, object specific features. In
other words, programming is revolved around objects rather than actions, data as opposed to pure
logic (The Differences).
Another core difference between varying languages is C‟s ability to manually allocate
and manipulate data with explicit control (a low-level perk that is both incredibly powerful and
potentially dangerous).
So in summary, a fairly effective way to think of C in terms of other languages –albeit
not a completely accurate summation- is the level of control it has over minuet functions and
unrelated hardware specifics, but without the luxury of built in safety hazards and the sense of a
layered, abstract flow of organization that is present in other languages.
6. Turner 6
The Generic structure of C programming
The C programming language is a simple, action-based language that operates on a small
instruction set to emphasize speed and consistency. It provides low-level access to hardware
specifics and basic language constructs that can be directly translated into assembly language,
which goes to further improve the performance of whatever program is running. C makes
exhaustive use of flow structures and functions, as any procedural language would, which allows
for a more physical, concrete manipulation of data. As stated before, C takes advantage of its low
memory access through memory addresses and the underlying understanding that memory is just
a long sequential array.
C allows subjective use of whitespace in organizing one‟s code, comments to clarify
specific chunks of code and what they mean in context of the program, and providesextensive
libraries of pre-written functions for static use. To signify statements for the program to act on,
the user simply needs to insert a semicolon at the end of a syntactically correct line of code
(Dennis).
A number of other rules and basic implementation have been made universal in much the
same way, making the process of composing programs a much easier task, allowing the user to
focus on the problem rather than dealing with how to effectively communicate with the
computer.
Reasons for this Structure
The ultimate goal of all high-level programming is to reach a form of pseudo-
englishthat‟s as close to real English as possible, without compromising performance. C has
made a very strong step in this direction.
7. Turner 7
Before the establishment of C,most code was written in some form of assembly, where
each line of code related to a single microprocessor instruction (A simple operation of addition
takes a number of instructions to access registers and modify their values). High level
programming is not held by those restrictions however, as a single instruction in C may represent
many machine-based instructions. The significance of condensing operations and functions into
compact, abbreviated forms reduces the chance of human error, increases efficiency in writing
programs, and creates readable, interpretable lines of finished code (Knowlton).
There are drawbacks to high-level programming however, as with anything else. The
problem with matching multiple instructions to a single line of code is that sometimes there are
operations that the user is unable to perform. However, with assembly, the user is able to
command any operation the computer has the capability of performing. C is a hybrid of the two,
existing somewhere between a robust, hyperactive form of assembly and a watered down,
compact high-level language (Knowlton).
The Evolution and Transcendence of C
Figure 2: Chronological Tree of Computer Programming Languages
8. Turner 8
(Why Object C is “weird)
The laser-focused, logical pillars that make up the core building blocks of C have
remained consistently true, and that framework has been the inception of languages that have
since come after C. The unspoken, global standard for the syntactical composition of code has
used C as its base point, with its similar scheme in modeling data types and larger abstractions in
the same scheme used by C. However, the similarities of syntax is not the only way in which C
has served the technological field, as some have been entirely modeled after it, such as Java.
Languages such as C++ and Objective-C have since come into existence with the prolific
use and emphasis on object oriented design over sequential, function-based programming. C++
and Objective-Cthough are merely extensions of classical C, but with added tools to allow a
more generic programming template.
The Effects of the C Programming Language
Made obvious by the diagram of Figure 2, there are a ridiculous number of programming
languages to choose from, each with its own purpose, history, and architectural make-up.
However, despite these differences, they are all merely methods of manipulating the actions on
the same environment. So with the creation of C, and its instantaneous spark of intuitive design
and blast of efficiency, the all-encompassing, intertwining chain that ties these languages
together was also pushed forward.
9. Turner 9
Works Cited
“C Programming Language History.”History of C Programming Language.N.p., n.d.
Web. 13 March 2013
“Introduction to C Programming.”Career Campus.GlobarenaIteknowledgec 2003.
Web. 13 March 2013.
Knowlton, Todd. Introduction to Computer Science Using C++.Boston MA: Course
Technology/Thomson Learning, 2002. Print.
Ritchie, Dennis M. “The Development of the C Language.” Chistory.
Association for Computing Machinery, Inc. Apr. 1993 Web. 13 March 2013.
"The C Programming Language."The C Programming Language.N.p., n.d. Web. 13 Mar. 2013.
“The Differences Between Java, C, And C++.” JAVA FAQ. Programmersheaven.com,
2011. Web. 13 March 2013.
“Why Objective-C is “weird” for the Contemporary Programmers.” Calvins RSS.N.p., n.d. Web.
13 March 2013.