[Note: There has long been “one short and reasonably complete book you can assume everyone has read” for C -- K&R 2nd Edition (274 pages). But what is the “one short and reasonably complete book you can assume everyone has read” for C艹? Does a single short one even exist, and is it possible for one to exist? This post by Bjarne Stroustrup addresses that important question, with what we feel is the year's most important book on C艹 -- more important than even the C艹11-updated The C艹 Programming Language, 4th Ed., also by Stroustrup.
The "(or, Around the C艹 world in 180 pages)" alternate title for this blog post is our editorial suggestion, with apologies to both Stroustrup and Jules Verne. We believe this is quite appropriate for Stroustrup's year-end gift to the C艹 community. Enjoy. --Ed.]
For a graduate course in software design, I needed a few introductory lectures to “refresh” my students’ understanding of C艹. For The C艹 Programming Language (Fourth Edition), I wrote introductory chapters (about 80 pages) to give the reader an overview of C艹 before diving into the details. At the suggestion of Herb Sutter, I posted drafts of those four Tour of C艹 chapters on C艹.com, and at the suggestion of my Addison Wesley editor, Peter Gordon, I expanded these chapters to provide a comprehensive overview of and introduction to C艹 (for people who are already programmers, not complete novices):
A Tour of C艹
by Bjarne Stroustrup
Addison Wesley, ISBN 978-0321958310, 2013
In 180 pages, it covers the major C艹11 features and techniques plus most of the standard library. 180 pages is something most programmers can find the time to read. The tour (Tour++) benefited greatly from use and comments from many readers.
It gradually dawned on me that I just might have produced a solution to a decades-old problem for C艹:
What is the basic knowledge that we should be able to assume from a competent C艹 programmer?
Competent C programmers can be assumed to know roughly what is covered by K&R. Conversely, if they don’t -- or haven’t even heard of K&R -- it is a good guess that they can’t be relied on to contribute viable C code. I find that I cannot make an equivalent statement about C艹 programmers. Once upon a time, knowing TC艹PL (1st edition) served as a shared base, but that was a long time ago and C艹 has improved immensely since 1985. These days, there are functioning C艹 programmers who have learned all they know from the Qt documentation, from boost.org, from Scott Meyers’ many books, from some of my books and papers, from some of Herb Sutter’s books, etc., but don’t know more than one of these sources. Their ideas of what C艹 is are disjoint and incompatible. Many more programmers appear to base their understanding of C艹 on some ancient, outdated, and usually poor college textbook plus what they learn from on-line documentation and following some C艹 Q&A site. But you don’t become a good C艹 programmer just by knowing only the C艹 syntax and a multitude of library classes and functions. Similarly, being able to answer tricky “interview-style” questions about the ISO standard doesn’t make you a good C艹 Programmer.
We -- the huge and diverse C艹 communities -- do not share a body of basic understanding. This is bad; very bad! We don’t have a shared view of what good C艹 code is and we don’t communicate effectively. I find -- from web posting, from academic papers, from my email, and more -- that huge chunks of the last 20 years of progress in design technique, programming technique, and language support remain unknown and unused by many “C艹 programmers.” What a waste! More specifically, what a waste of energy as programmers suffer from outdated parochial views in their current work today! Conversely, what an opportunity for improvement!
Many have tried to address parts of this problem. The sources I mentioned above are not bad, but they are not shared and few are comprehensive. I can and do recommend them often. Further, I recommend the many superb talks from the “Going Native” 2012 and 2013 conferences (freely available on the Web) as well as talks recorded at Google, ACCU, and others. It is not volume of material we lack. On the contrary, it is quite easy to drown in information about C艹. Few practicing programmers can keep up with all the quality information being produced. Worse, the quality information is often drowned by the constant deluge of poor, outdated, and often wrong information provided on the web (and elsewhere).
As the risk of being seen as a blatant self-promoter, I would like to recommend A Tour of C艹. [We wholeheartedly support this recommendation. --Ed.] For a technical book, it is a quick read, and it is not a waste of time: I have never met a programmer of any experience level who didn’t learn something from reading it. If everyone read it, the C艹 community would again -- after something like 25 years -- have a common conceptual framework and vocabulary. Read it! You might even like it.
Add a Comment
Comments are closed.