Frequently asked questions, remarks about C++

Daniel Duffy

C++ author, trainer
Life is not simple. There's a number of gotcha catch 22 pitfalls.

Feedback welcome.


1. FACT: You need to know some C SYNTAX and savoir-faire before C++.

2. Can learn C++ w/o C but the experience can be painful.

3. C++03 was up until 2000; then came C++11 -> C++17 -> C++20 --> C++23.

4. Can you learn C++11 w/o C++03?

5. Do employers use C++03 for legacy libraries?

6. All these beginners books? How antiquated are they? (still in C++03 tar pit?)

7. Do books overly emphasise the (incorrect) use of inheritance?

8. How many books do a decent job of templates?

9. How much programming exposure have you had before C++? (and Java, Python are not necessarily all that useful, unfortunately).

10. Can you survive in C++ land w/o really understanding memory in C++03 and beyond?

11. What’s the capital of Assyria?
 
All solid points and great things to think about. My two cents on a few of these:
4. Can you learn C++11 w/o C++03?
5. Do employers use C++03 for legacy libraries?
It is not uncommon to see legacy libraries in C++03 + Boost, with new development in the system deliberately staying in 03. Migration of a large system is very costly.
6. All these beginners books? How antiquated are they? (still in C++03 tar pit?)
The classics will always be popular and useful; while some basic C++11 syntax and concepts may make its way into new beginner books, the majority of the new language features do not, as the fundamentals of C++ are immutable.

Learning generic programming, code structure, design, and honing debugging skills are far more important than learning most of the new language features. Most books do not adequately cover any of these topics.
10. Can you survive in C++ land w/o really understanding memory in C++03 and beyond?
Absolutely not; this creates the same problem with learning Java or Python prior to C++. It is also why learning some basic C before C++ is very useful.
 
2. Can learn C++ w/o C but the experience can be painful.

4. Can you learn C++11 w/o C++03?

I know in several MFE C++ courses, they don't require C as a prerequisite (or any prior experience for that matter) and go directly to C++11 and later. They probably spend 1 or 2 lectures on C syntax and pointers before going directly into OOP principles, STL, Threading, and Design Patterns.
 
Learning generic programming, code structure, design, and honing debugging skills are far more important than learning most of the new language features. Most books do not adequately cover any of these topics.
Any specific resources you like to look at to work on these specifically? (Besides both C++ certificates, one of which I am completing, and the other I have the intention of completing)

I know you emphasize looking at other people's code (which you also mentioned in April's virtual session presentation).

Up until now, I have been looking at previous students' questions on the forum and figuring out the answer I would give. Stackoverflow questions seemed too much of a jungle for me to get anything fruitful out of it (for now).

Open to any suggestions! @APalley @Daniel Duffy
 
Last edited:

Daniel Duffy

C++ author, trainer
Learning generic programming, code structure, design, and honing debugging skills are far more important than learning most of the new language features. Most books do not adequately cover any of these topics.

It might be interesting to know that I am writing a book with Harold Kasperink (who was one of my first Design Patterns students in C++ in 1994) on the topic:

Modern Multiparadigm Software Architectures and Design Patterns
with examples and applications in C++, C# and Python


Publisher: Datasim Press
pub date Q3 2023

More details later
 
Learning generic programming, code structure, design, and honing debugging skills are far more important than learning most of the new language features. Most books do not adequately cover any of these topics.

It might be interesting to know that I am writing a book with Harold Kasperink (who was one of my first Design Patterns students in C++ in 1994) on the topic:

Modern Multiparadigm Software Architectures and Design Patterns
with examples and applications in C++, C# and Python


Publisher: Datasim Press
pub date Q3 2023

More details later
I actually bookmarked another one of your posts talking about this book, a few weeks back -- waiting for its publication ;)
 
All these beginners books? How antiquated are they?

Of course they're antiquated: they're introducing people, often with little or no coding experience, to C++. The more recondite and au courant aspects of C++ can wait until a second or third pass. You can't learn to run if you can't even walk.

How many books do a decent job of templates?

I think the book by Vandewoorde, Josuttis, and Gregor is beautifully written.
 

Daniel Duffy

C++ author, trainer
I actually bookmarked another one of your posts talking about this book, a few weeks back -- waiting for its publication ;)
All the patterns and applications are finished in C++, C# and Python (Harold and I have been doing design patterns in industry since 1994).
When you start thinking like a designer you are not confined by the language in use.
 
Last edited:

Daniel Duffy

C++ author, trainer
I know in several MFE C++ courses, they don't require C as a prerequisite (or any prior experience for that matter) and go directly to C++11 and later. They probably spend 1 or 2 lectures on C syntax and pointers before going directly into OOP principles, STL, Threading, and Design Patterns.
wow, I spent 20 years trying to learn this stuff.
I reckon these courses are like intros?
 
Top