So my son has learnt Java and has come to a decision point. First, the flashback,:-

May, 2011--Back when he was 10 years old and didn't know Java, he gave C++ a try. He understood loops and variables. But when he reached the page teaching functions, he didn't understand a thing.

January to March 2012--Learnt Java from a book.

<flashback ends here>

Back to the present. Today he revisits the C++ page. Slowly functions start coming into his head.

Now for the question- I have seen that C++ and Java are similar as well as different. C++ includes some code that Java doesn't need. Java includes some code that C++ doesn't need. He understands a little more (not the whole tutorial, he hasn't studied the whole tutorial yet) C++. Should he learn C++? Please consider the above points before answering.

Recommended Answers

All 20 Replies

Should he learn C++?

This question is incomplete without the follow up answer for "for what purpose?". If for fun, C++ isn't fun to write, at least when compared to the newer breed of managed/scripting languages which make it a lot simpler to do stuff. If for curiosity and usefulness, sure. C++ is pretty much the new standard for native/low level languages. And of course, the third possibilty might be "just because he wants to", in which case it's not like anything can stop him. ;)

The challenge for you here would be to ensure he doesn't get frustrated. Moving from Java to C++ or vice versa can be frustrating because these languages look so similar but are quite different when it comes to expressing solutions.

Purposes being:-

  1. game programming
  2. capability(which can do what)
  3. difficulty(that is not such a big issue)

Also he wants to learn it. The reason is, he thinks it is awesome to know many languages.

What say?

If he thinks it's awesome to know many languages, C++ with its unique feature set and "close to C" performance should definitely be on the "to dabble in" list. Plus, C++ has tons of game engines written in which makes it a good practical language to write games in.

I'd say go for it! I'd recommend C++ primer and Accelerated C++ as starting points.

Any free books/ebooks?

There aren't many authoritive free resources on the internet for C++ that I know of. One is the free ebook (vol 1 and vol 2) offered by Bruce Eckel, found at: http://nyll.com/ebooks/index.html

If your kid starts enjoying the material in the above mentioned books, spending Rs. 440 on C++ Primer wouldn't be a bad option.

Should he read the article like, quarter way or halfway first and then buy the book? Or should he complete that Thinking in Java first? Also, that C++ primer book you showed me on flipkart.com was the 4th edition of the book. In my local library I saw the 3rd edition. Should I take the book?

Should he read the article like, quarter way or halfway first and then buy the book?

Which article? I linked you to the download page for Thinking in C++ in my previous post.

Or should he complete that Thinking in Java first?

One thing at a time; frequently jumping between stuff is bad and leads to confusion, especially when you are trying to learn/teach something new. If he has decided to start C++, concentrate on C++.

Also, that C++ primer book you showed me on flipkart.com was the 4th edition of the book. In my local library I saw the 3rd edition. Should I take the book?

4th Edition is the latest one so is definitely recommended over the old 3rd edition. Like already mentioned, start off with the Thinking in C++ books. If your kid expresses desire to learn more or in depth, grab the paperback copy on Flipkart.

isn't bit too early for him? 10 years old. There will be enough time later when he grow up, what will he do at univercity ? :)

BTW, where some features has gone 'theads where I posted in' for example?

Should he read the article like, quarter way or halfway first and then buy the book?

Which article? I linked you to the download page for Thinking in C++ in my previous post.

Or should he complete that Thinking in Java first?

One thing at a time; frequently jumping between stuff is bad and leads to confusion, especially when you are trying to learn/teach something new. If he has decided to start C++, concentrate on C++.

Also, that C++ primer book you showed me on flipkart.com was the 4th edition of the book. In my local library I saw the 3rd edition. Should I take the book?

4th Edition is the latest one so is definitely recommended over the old 3rd edition. Like already mentioned, start off with the Thinking in C++ books. If your kid expresses desire to learn more or in depth, grab the paperback copy on Flipkart.

Sorry, I meant "Thinking in C++" instead of Thinking in Java. I meant, should he read Thinking in C++ quarter way or halfway first and then buy the book? And also, Thinking in C++ is proving a little complicated for him. Do you think this website is appropriate?

~~~EDIT~~~:-

I am using Borland C++ from the command line and not Code::Blocks which was mentioned on the website.

~~~EDIT~~~:-

OS:Windows XP

BTW, where some features has gone 'theads where I posted in' for example?

According to cscgal:-

The old DaniWeb was really flawed :( It really was. This new system has much better bones but it's still an evolution process.

So according to her, Daniweb has changed.

Uhh... guys, he turned 11 on 4th April 2012. :D

Do you think this website is appropriate?

It seems like a decent free online choice. This thread from SO has a lot of resources for online C++ though over the years I have grown a bit wary of all the beginner resources available on the internet. But definitely worth a try if it helps.

I am using Borland C++ from the command line and not Code::Blocks which was mentioned on the website.

I think it'll be worthwhile to download the free version of Visual Studio since it has a pretty good C++ support (I personally use it to teach C++ programming to kids).

Sorry, I meant "Thinking in C++" instead of Thinking in Java. I meant, should he read Thinking in C++ quarter way or halfway first and then buy the book?

I think the kid should proceed at his own pace and ask you for buying the book if he thinks he wants to continue C++.

And also, Thinking in C++ is proving a little complicated for him.

The sad fact is that C++ is indeed difficult for beginners as compared to say Python or Scheme. I think C++ Primer is the lowest denominator C++ beginner text you'll find on the bookshelf.

BTW, has your kid looked at the CS-101 courses offered by Udacity and Coursera. The interactive learning material should definitely keep him involved.

The thread you gave me from StackOF, recommends two websites:-
1. The one I showed you.
2. This.

The sad fact is that C++ is indeed difficult for beginners as compared to say Python or Scheme. I think C++ Primer is the lowest denominator C++ beginner text you'll find on the bookshelf.

So should I continue Thinking in C++ or should I use one of the online resources? If the latter, which one? I will be sure to buy the book, but before that, some online education, right?

I think it'll be worthwhile to download the free version of Visual Studio since it has a pretty good C++ support (I personally use it to teach C++ programming to kids).

But people say you shouldn't use an IDE when you are new to a language. I am sure you are an experienced C/C++/Java programmer. What do you recommend?

BTW, has your kid looked at the CS-101 courses offered by Udacity and Coursera.

The course starts tomorrow. Isn't it a paid course? And also, half of the time, he will be at school, right?

So should I continue Thinking in C++ or should I use one of the online resources? If the latter, which one? I will be sure to buy the book, but before that, some online education, right?

He should drop back to online tuts if "TICPP" is turning out to be difficult for him. The trick here is to flow through tutorials and settle on the ones which your kid finds worthy of a complete run.

But people say you shouldn't use an IDE when you are new to a language. I am sure you are an experienced C/C++/Java programmer. What do you recommend?

I recommend IDE if using command line tools is going to get the learner frustrated. Mind you, the aim here is to first make your kid learn C++ and not the chops required for being a super-cool C++ hacker. Once the basics are out of the way, learning the toolchain becomes an important point. All that being said, it's wrong assumption on your part that Visual Studio is IDE only. It comes with a command line utility for compiling C++ code. The steps are:

  • Open up command line and navigate to the Visual Studio directory in Program Files
  • Now move to "VC\bin" folder
  • Run: vcvars32.bat
  • Run: cl.exe your_file.cpp (assuming the CPP file is in same directory)
  • The above will create a your_file.exe file in the same directory.
  • Run "your_file.exe" and watch your C++ code execute!

The course starts tomorrow. Isn't it a paid course? And also, half of the time, he will be at school, right?

The course isn't paid. Also, the lectures are not live/streaming and meant to be viewed at your own pace. They hand out lectures and exercises during each week which have to be completed by a given deadline to get credits. But you can always work out things at your own leisure and ignore the homework deadlines. The motive here is to get the most out of lectures, notes etc. There is also a forum dedicated for asking help related to lectures, homework questions etc.

My son decicded to learn the very basic stuff like variables and stuff like:-

#include<iostream>
using namespace std;
int main() {
}

etc from an online tut. The rest like file io and all he will learn from c++ primer.

I got this same book from my local library. Seems to be a breeze(for now, he has just started).

Why not stick with Java and learn it to a point where you can actually use it?

It's better to be an expert in one language than to be a fool in a handful of languages.

Pick Java so Oracle can sue you if you make money like they did with Google?

@Ene Uran-I half agree with you and half don't. Why would he be sued if he is not even working with Google? But still, I really agree with you-they shouldn't have sued Google. They should have made up some collaboration. Oracle should have negotiated with Google and made up some kind of deal. No offense though.

@Lardmeister-The point is, he wants to learn more than just one language. Upto a level, he can learna tough language like Java. Stuff like URLs and networking is beyond his understanding.

Where the heck is ~s.o.s~???

Koenig & Moo's Accelerated C++ is the standard recommendation for people who already know how to program in a language.

Personally I didn't have the mental capacity to learn C++ until I was 18. Other people could certainly learn it at a younger age.

He could always learn Python. Or Haskell.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.