To truly understand C++ and it’s culture we must look to it’s pioneers.
To see further, we sometimes have to stand on the shoulders of giants. Those, who have made their mark on the path we now take. Fortunately for programmers, the field is young enough that some of the pioneers are still alive. And we can tap into their wisdom, and see how their viewpoint may have changed since then.
Bjarne Stroustrup, the creator of C++ is a Danish Computer Scientist and is 68 years old. He created C++ while working at Bell Labs in the 80’s. The creators of C1, on which C++ is based (along with Simula), were also working there at the time.
I’m a strong advocate for acquiring knowledge from the source, if at all possible. I think an idea is so much easier to grasp when you understand the original problem and how it was solved. The steps that were taken, the thought processes.
By reading about a language from the viewpoint of the creator, you see the true origin of the language and follow its evolution. You get a glimpse of the why and the how, and let’s be honest; learning is at its most passionate when there is a reason for doing something and a detailed explanation of how it got done.
Working in academia for most of my adult life, and being a full time student before that; I have been privy to many a student staring into the abyss while a well intentioned instructor droned endlessly on. The students do not seem to care. In my opinion, this is a great fallacy in modern pedagogy. Students do care! However, things have changed drastically in the last few decades and knowledge simply is not assimilated the same way anymore. You just have to know how to captivate students.
If you look at the worldwide interest in courses like CS50 you see something different. Harvard’s Professor David Malan and his team seem to have figured out how to keep students interested. And each year the course improves. This year the course even has a trailer.
I think people love being engaged in something. I remember a story which moves me much longer than a lesson that I had to listen to in order to pass a course. I vaguely remember being taught about the Chernobyl disaster at school in history or science. I watched the TV series this year and I now know details about that nuclear reactor that I doubt I will soon forget.
Knowing that support for run-time polymorphism in the form of virtual functions was controversial when it was introduced will assist me in remembering what it is. It is a complex idea to grasp, and it helps to know that this is exactly why it was controversial.
Reading The Design and Evolution of C++ by the creator of language has not only made me appreciate the language more but has also endeared the author to me. By explaining his motivation and philosophy behind creating the language, I feel I got a glimpse of C++ that I would have never received by reading a generic textbook. No disrespect to the authors of these textbooks. The author of my current textbook Problem Solving with C++ , Walter Savitch, is a brilliant writer and explains difficult concepts very clearly.
However when I read the first chapter of The C++ Programming Language by Bjarne Stroustrup, I was drawn to the language. I no longer felt like a passenger but instead this book gave me the confidence to be part of something important. I want to purchase that book and keep it as a reference for as long as I code in C++. This month’s book purchase was a bit pricey so I cannot get another one immediately. I bought the 20th anniversary edition of The Pragmatic Programmer (review coming soon).
Reading those first sample chapters of Bjarne’s book makes me want to learn more C++ and eventually become a practitioner of the language. Being a part of a language which is such an integral component of most systems is intriguing. While reading books like these you may come across some outdated material (technology moves at a lightning pace) but you get to see the evolution of the language and more importantly you become aware of why things changed.
Cover Photo by Luca Bravo on Unsplash
- Kernighan’s name became widely known through co-authorship of the first book on the C programming language with Dennis Ritchie. Kernighan affirmed that he had no part in the design of the C language (“it’s entirely Dennis Ritchie’s work”). https://en.m.wikipedia.org/wiki/Brian_Kernighan ↩