This is a useful C++ roadmap for beginners

Hello everyone, especially newbies to C++.
After many years using C professionally in real time embedded applications - communications, TCP/IP, instrumentation, control systems - I eventually began using C++ back in 2003. C++ was a blessing as at that time I - and many colleagues - were always striving to keep code/modules/projects in a practical way for others to understand and maintain them.. The closest we ever got to Object Orientated Programming, ( OOP ), was the separate tasks/modules we used in our multi-tasking operating systems, ( RTOS ), such as Vertex, Nucleus and the rest. Nowadays, C++ for me is second nature. But it wasn't always like that! The process of learning was a slow one as there wasn't much information around - even then. Over the years I have seen/read many articles, tutorials and books on the subject. It can be quite bewildering at times, with each article expressing his/her own opinions on various aspects of the language. An example is the age old argument as to whether we should use 'friend' functions and classes as they break the rules of Inheritance/Containment and data hiding. The list goes on.
So I'll get to the point of this topic, ( at last you say! ). My nephew is on his 1st year studying Computer Science at Southampton University, UK, and asked me for advice on learning C++. I gave him the following advice in September 2012. Today he is quite the programmer and we can easily converse. To start with I suggest he acquire a good free IDE. The type does not really matter as their are many around. Then simply follow this list.

Download the PDF version of the excellent C++ Language Tutorial from this site;

http://www.cplusplus.com/doc/tutorial/

This is one of the best tutorials around and will give you the outline/basics of the knowledge you will need in the future.
Next is a site that you can use either as another tutorial or as a reference to the above one;

http://www.learncpp.com/

This goes a little deeper into each subject covered in the first one but uses real world code snippets that you can use to learn with. Explanations are excellent and easy to follow. There is also a chapter on the new C++11 version.

Together, these 2 tutorials will give you all the information you need to achieve a reasonable competence in C++.
There is also a FREE PDF book at;

http://www.2shared.com/complete/Mx1d48Yn/Sams_Teach_Yourself_C_in_21_Da.html

from the Sams libraries. When downloading only click on the bottom button.
This book contains excellent exercises along with answers only in the Appendix and workshops to help you practise.

Remember, you also have the full knowledge of the good people at this forum who are always ready to help you with any problems.

I really hope this helps and wish you the best of luck.

Zilog32.

PS My handle, Zilog32, comes from my respect to the designers of the Zilog 8-bit Microprocessor - and then the mighty 32-bit version - that was not just used in the Sinclair Z80 machines but was widely used in the automotive industries.
closed account (3CXz8vqX)
I'm...not sure how useful this is as a 'road map' to learning C++.

Surely a Roadmap has at least six points, not just, "Go to this tutorial...then...use this one which is pretty much exactly the same".

A better roadmap might be...

Learn how to use variables ( Bonus: Learn this technique)
Learn how to use functions.

Write a program that uses variables and functions and pass by value. (Bonus: Learn about pass by ref)

Learn about pointers ( Bonus: pointers to functions ).
Learn about classes...

This would be more of a roadmap because it gives the learner a path to follow when flicking through a book on C++, particularly the reference book.

As for learncpp, while it is undeniably a good resource, trying to learn C++ from two tutorials at the same time is very tricky and very confusing especially since they both use different styles and don't explain why most of the time. Not to mention that (from how follow it) learncpp was written on Microsoft for Microsoft, while cplusplus is more cross platform independent. (Better code).
Beginner giving flawed beginner advice maybe?
Hi Ravenshade,
I agree about 'road map',. I could have been more detailed as you suggest.
However, as far as learning how to use variables etc they are all contained within the information I have provided. All that is required is to follow the tutorials. The reference to learncpp is to provide an alternative/different view and use of what is contained in this site's tutorial and I do suggest to use it as a reference.
Incidentally,, the code at learncpp is quite platform independent. I have tested much of the code myself and I only use Linux. The code there also runs very well on the Greensmiths compiler cross compiled for Motorola targets running the Vertex32 RTOS, but that's another story.

Overall, my intention was only to help newcomers get through the maze of C++ learning curve and I thank you for your comments.

zilog32.

Beginner? Oh dear.
Last edited on
I would also not recommend the "21 Days" type of books. I'd go more with something like Accelerated C++ or Thinking in C++.
Everyone learns different which is why there is no roadmap to it.
closed account (3CXz8vqX)
Doesn't stop cplusplus having a go =D. While everyone learns differently, for those trying to get into C++, a roadmap...say how cplusplus progresses from one chapter to the next; is almost essential as a guide to speedy learning. Otherwise we'd be all still pondering the C++ Reference manual and getting nowhere quickly. Breaking things down into smaller chunks.

Of course, I'm sure you mean we like to learn different things in different places...but that's if we know what we want to learn. If someone turns up and just says, "I want to learn C++". And you tell them, "Here's the manual...off you go." They're likely to get disillusioned really quickly. Instead you could tell them, "Sure, you're going to need to be able to do this, this and this to start with. Here's a tutorial and here's what you need to be able to make after learning this..." there's a destination, someone has pretty much outlined on a map where to go and even provided some basic supplies to get there.

...I've been playing far too much Skyrim
Cplusplus isn't supplying a roadmap. They are supplying a tutorial that is designed to teach the basics of the language. After that you are left to make use of the forums or find your own way.

I don't recall the tutorial recommending any books, projects or anything else to continue your learning. And A, B, C list doesn't work for everybody and that is why you will never find such a list. You will find programmers make recommendations for lists, but general those are just that, recommendations and not a roadmap of what to do.

I suppose I have a different concept of what roadmap is because I take that to mean:
A) Follow Tutorials to Understand C++ basics
B) Get Book for Intermediate and Advance C++ features
C) Make xyz programs to practice each
D) Make simple address book
E) Make simple text adventure
F) Make simple 2D game
G) Make ....etc etc etc

You should pick things that interest you and build them. Outside of that you will just be wasting your time to code what others tell you to make as you will likely get bored. The only advice I can give is read a tutorial and do everything they say, get one good programming book to skim and do all the exercises out of and then finally jump into coding your own projects. That is the best roadmap you could probably get. Short and straight forward I think:

A) Read a tutorial
B) Buy a programming book, skim parts you want to learn, do every exercise
C) Jump into your own projects

After that you can decide if you want to get a book for reference (like I have The C++ Programming Language Special Edition by Bjarne Stroustrup and C++ Primer).
closed account (3CXz8vqX)
Well a tutorial is a roadmap...>.>; It certainly feels like it's handwalking me through.

You're extending the roadmap to it's fullest is all.

As a learner myself...and having 'tried' to jump further ahead repeatedly... you really do need a firm understanding of the basics, right up to and including classes and inheritance. Trying most things before then is....going to be one of those failed light bulbs...that Eddison made.
Ravenshade trolling again ....

Another example of criticism of: sound advice from a professional programmer.

How about you actually learn some code before provoking comment about tutorial styles when you know hardly anything yourself?

If you want to blog - go on a blogging site, don't waste peoples time here a forum. There is a big difference between forum sites & blogging sites, just so you know.

Another clue about trolls: Offering advice to others with very little knowledge of their own. I have seen some of your other posts, I get the impression you are just posting to get your post count up.

There is are big differences between seeking info in order to learn; offering sound advice to help others; and provoking comment that does neither of the first two.

@everyone I would recommend not replying to Ravenshade.
Last edited on
closed account (3CXz8vqX)
I actually have learned some code, thanks....and I have written many tutorials. (Not on C++) So I do know a little about them.

I don't see how my post could be interpreted as a troll and if so it wasn't meant that way. Learning the basics fully before moving on to more advanced concepts is a given and obvious. Trying to jump from not even fully understanding the basics into 'writing a game' is a) foolish, b) unless you're really really really lucky, not going to work. Sure have a go to see what you don't understand but surely you need to know what your tools are for?

Therefore a roadmap, in my opinion is there to encourage people to take everything in bite size chunks, that concentrates on and then reinforces the foundations. I'm not sure how this is intended to 'provoke' comment.
Thx for your post Zilog. I'll check out those links.
@TheIdeasMan I've told many people on this forum to ignore whatever this troll named Ravenshade has to say, may be its high time we report him to the site's administrators. He's been adding total useless comments on very important posts where users need urgent help. I knew the dude had nothing to offer but to get "comment-count".
Ravenshade wrote:

It certainly feels like it's handwalking me through.

I don't know of very many 'handwalked' or more commonly called 'handheld' programmers that amount to anything because they never take the initiative to progress their learning on their own. Once you start getting your hand held too much you end up wanting someone to help you on everything rather than be self-reliant.

Ravenshade wrote:

Learning the basics fully before moving on to more advanced concepts is a given and obvious. Trying to jump from not even fully understanding the basics into 'writing a game' is a) foolish, b) unless you're really really really lucky, not going to work.

You really don't know much about programming in C++ do you? All you need to make a simple text adventure is input/output (cin/cout), variables, and if statements for branching.
Topic archived. No new replies allowed.