Journal Articles

CVu Journal Vol 13, #2 - Apr 2001
Browse in : All > Journals > CVu > 132 (14)

Note: when you create a new publication type, the articles module will automatically use the templates user-display-[publicationtype].xt and user-summary-[publicationtype].xt. If those templates do not exist when you try to preview or display a new article, you'll get this warning :-) Please place your own templates in themes/yourtheme/modules/articles . The templates will get the extension .xt there.

Title: My Trail of 10 Books for Learning C++

Author: Administrator

Date: 03 April 2001 13:15:44 +01:00 or Tue, 03 April 2001 13:15:44 +01:00

Summary: 

Body: 

First of all, I want to apologize about my not so sharp English :), as Francis often writes in his reviews ... I guess that *** is not a native English speaker...

I am in my 3rd year of learning/programming in C++. I am also teaching C++ now, in a night college but I am far from being master of C++. The path to master C++ seems to be long and full of traps. I became addicted to this wonderful language thanks to my university lecturer (thanks Dr. Kimchi), during a course I took, which introduced me to C++, but I did most of my learning by myself, mostly by reading C++ books.

Yes there are many books about C++, many of them great, but many more are evil!

Almost every time, while wondering through C++ news-group, that I am subscribed to, I find question from a programmer or non-programmer who is looking for a book, to learn C++ from. In this paper I would like to offer my "Book path", hopefully it will help someone who would like to learn C++ from books as I did.

A first book

The first book is almost the most difficult to choose. It can influence your whole programming skills and habits later on. I have tried to begin with "The C++ Programming Language [1], but to be honest I was very scared after few pages (don't get me wrong - this is the book, it's time will shortly come). So even though it's the definite guide for the language, I can't recommend it as a first book.

If I had written this few days earlier I would recommend Accelerated C++ [3] as a first book. It's a wonderful book, I takes a new and nice approach of learning by real and not trivial example. As a reader you start to write complicated code in no time, and leave the syntax and other things for last. The samples were written in a good style and are very clear and, yes, even fun. When I read this book I really loved it. I have changed my C++ course, I am teaching, so it will follow this book's trail and I must say it's a better approach.

But, when I tried to give it to students or programmers who have learned only C before, to learn C++ from this book alone, they got lost. They couldn't use it by themselves. I really can't explain why, I thought it was very easy to follow, but it works when I teach it and they have this book by their side, but doesn't work when they try to learn only form it, without a teacher.

(It seems that I need to test a book on different people before I can recommend it, because my previous knowledge must be deceiving me.)

So I am left with the book that I learn from as a first book "C++ Primer [2], a really great C++ textbook, easy to follow and full of great exercises written in a clear and good style, following the ANSI/ISO standard. I loved it, and most of my students found it very good and suitable. So even though 3 years have passed since I learnt from this book, I still recommend C++ Primer [2] as a first book on C++.

What Next

So you have read your first book on C++, you understood the key features of the language, but there is so much more to learn. I would now get a hold of the C++ bible, The C++ Programming Language [1].

As I have said before it's the definitive guide for C++ , standard C++, C++ as it meant to be used. It's not an easy book, I understood it only after knowing a little C++ and doing some programming exercises in C++. It is the book that lies beside my computer, not on my shelf, beside another book, which I will mention later. I am always amazed of how much stuff this book contains. I always find the answers I need in its pages, although usually it is hidden in the text and only by reading the same paragraph 3 (or more) times do I get a hold of what I was looking for. If you are serious about your C++ programming skills you must have (and read :) ) this book.

Now, I would also recommend the reading of Accelerated C++ [3]. after C++ Primer [2] there is no excuse for not reading this great book, learn much more about what it means to write programs in C++, and improve you skills and your understanding.

After those three books I recommend a split in the trail. It's time to get into more details, knowing the standard library, writing more effectively, and learning about C++ conventions, style, idioms and patterns.

I would recommend learning in parallel these next two groups of books.

The Standard library

The standard library is your best friend when programming in C++. You don't know how much code you can save writing, because it was already written, more effectively, more safely, and much more user friendly by much more skilled programmers then you (The C++ Gurus, :) I apologize but if you can write better code, then you don't need my recommendations, right? ).

It's time to get deep into STL and what the standard library has to offer. For that I will recommend a great reference book, The C++ Standard Library [4]. It lies beside my copy of The C++ Programming language just near my computer, and it is my most used book even though I have had it for only a few months. Whenever I write a program in C++ that uses the standard library, this book is my trusted helper, giving me all the details I need, about the library and it's facilities. It's not only a reference book, you can learn about the standard library through it's wonderful explanations and sample code.

This book's author did a really great job. (Thanks Nicolai, your hard work saved me hours of work digging into my compiler help and reading the STL source code).

If you need more detail about the STL, some background, knowing why and how things where done, and a really handy reference about the STL I will also recommend Generic Programming and the STL [8], but I must warn you, you can't learn the STL from it alone with no previous knowledge.

There are some other good books dealing with the standard library, but you will need to find them by yourself, still haven't got to them yet. A good place to start looking as always is the ACCU books reviews section.

Writing Effective C++

The other branch that you should take (as I said before, I recommend that you do it in parallel) is dealing with learning from other people's experience.

Believe me, there is always much to be learn from other programmers and these next books will convinces you of that. Effective C++ [5] and More Effective C++ [6] are two must have books. These books teach you how to write more effective code, make you think about things you have never thought about before, show you tricks that you surly will want to use, and sharpen you understanding of key features in C++ like inheritance, exceptions, class design and much, much more.

You maybe consider me as a nerd :), but I really smiled with joy (and even laugh sometimes thanks to Meyers great writing) when I read those books, there are no boring sentences in these books and I wish that more books like them were available. Take your time to digest those books, all of them.

After that and after doing some programming in C++ there are more interesting books I would recommend. Exceptional C++ [7] will take you through 47 engineering puzzles, programming problems and, :) not to worry, solutions. It's a very interesting and challenging book, that teaches you the lesson of learning from other programmer's experience.

Two more interesting books that you can enjoy reading are Ruminations on C++ [9] which was great fun to read, while covering many C++ ideas and techniques, again with many nice and really challenging examples. And Advanced C++ [10] which is 'heavy' but very deep book that will teach you about some, very important, advanced C++ techniques and idioms.

That is where I am now.

Those ten books are behind me, and by my side. I have really learned from each and every one of them.

This is not the end of my trail and I don't think I could ever say that. Two books are already on my "SAVING MONEY TO BUY" list Generative Programming and Modern C++ Design.

I hope that more great books like those I have mentioned here will be written.

Enjoy your reading.

My 10 Books

[ 1] The C++ Programming Language - Bjarne Stroustrup - 3rd ed. - Addison Wesley

[ 2] C++ Primer - Stanley B. Lippman & Josee Lajoie,- 3rd ed Addison Wesley

[ 3] Accelerated C++ - Andrew Koenig & Barbara E. Moo - Addison Wesley

[ 4] The C++ Standard Library" - Nicolai M. Josuttis - Addison Wesley

[ 5] Effective C++ - Scott Meyers - 2nd ed. - Addison Wesley

[ 6] More Effective C++ - Scott Meyers - Addison Wesley

[ 7] Exceptional C++ - Herb Sutter - Addison Wesley

[ 8] Generic Programming and the STL" - Matthew H. Austern - Addison Wesley

[ 9] Ruminations on C++ - Andrew Koenig & Barbara E. Moo - Addison Wesley

[10] Advanced C++ Idioms - James O. Coplien - Addison Wesley

Notes: 

More fields may be available via dynamicdata ..