C Language Book Material
Updated Jun 09
Version 1.2 has been released. The 10.5M pdf can be downloaded from here.
The Shape of
Code blog contains observations on the shape of code, plus some
thoughts and musings on why this shape occurs.
Over 35 new references, mostly to papers published since the last version
was published (Jan 08).
Some new source code measurement tables and figures added and some existing
All known faults fixed.
See the new material list for
details (changes between version
1.0b and 1.1).
As well as providing a pdf of the complete book "The New C Standard:
An Economic and Cultural Commentary", for free, various material has
been extracted to create pdfs of specialist subsections and subjects.
The book "The New C Standard: An Economic and Cultural Commentary"
(version 1.2 dated June 24 2009, new
material list) is available as a free download here,
here and here in
pdf form (10.5M byte).
Articles and experiments based on the book.
0 provides an introduction to those areas of cognitive psychology
that are considered applicable to writing software and in particular
770 (used to be 766) discusses aspects of human vision thought to
be applicable to the interests of this book.
792 (used to be 787) discusses identifier naming in great depth.
and tables contained in this book.
(ISO 9899:90) and C++ subsections (i.e., no other subsections).
The Standard C sentences only (in Google searchable html form) are
available here along
with site specific Google search and a Firefox plugin.
Bugs that have been found in the previous version and corrected in
the next release can be found here
(last updated 24 Jun 2009).
WG14/N1256 can be found here.
Articles based on the book
The ACCU experiments.
Short term memory (its CiteSeer
entry). Presented at the 2002 MISRA C Conference.
article on coding guidelines.
Sentence 0 (introduction)
Establishes C's place in the world (history and C++ issues) and gives
a brief introduction to computer language translator technology.
Discusses coding guidelines from an economic and cultural perspective,
and provides an overview of human cognitive psychology, as it is seen
to apply to the human interaction with source code.
This is all the material from Sentence
0 (29 Jan 08) (previous version obtainable via its entry on CiteSeer).
Sentence 770 (reading)
This is all the material from Sentence 770
(30 Jan 08) (previous version btainable via its entry on CiteSeer).
Sentence 792 (identifiers)
This is all the material from Sentence
792 (30 Jan 08) (previous version obtainable via its entry on CiteSeer).
A lot of material on how people process character sequences that does
not seem to produce very many answers on how to create good
Usage, Figures, and Tables
This is all the figures, tables, and usage discussion only (30 Jan
08), not yet obtainable via an entry on CiteSeer, via this site Usage,
Figures, and Tables.
The programs and scripts used to analyse the source code and produce
the data displayed in many of the figures and tables is available for
downloaded. Note the the scripts have only
been tested under Red Hat 9 and Suse 10.0. You need to provide C
source (otherwise there is nothing to measure).
Only the C90 and C++ subsections (29 Jan 08) here.
Citations as a html file (24 Jun 09) or as a compressed BibTex file.
List of coding guideline documents.
Book (paper) publishing details
Addison-Wesley decided they did not want to publish the book (so much
for contracts). At the moment paper copies are not available from
any publisher. If you are a publisher interested in supplying paper
copies then get in touch. In the meantime people might like to
register their interest in obtaining a paper copy by adding the book
to their wish list at Amazon.
A write-up in The Inquirer here.
The Slashdot story.
A discussion of the number of downloads that occurred as a result of
the various announcements is available here.
Other coding guideline discussions
A critique of the MISRA C guidelines is available here.
Tools used in the production of the book include:
Epsilon for editing.
for drawing graphs (of the x/y axis kind).
GraphViz for drawing graphs (of
the directed and undirected kind).
Language Tool for grammar checking.
LaTeX for final pdf generation.
Saxon for xml processing.
pic for line drawings.
I have created a page dealing with automatically detecting
Please send any feedback to cbook "at" knosof dot co dot uk