# Is it okay to teach C++ to my 7 year old brother?

I was thinking this for quite long, should i teach my little brother about programming in the age of 7-8? Because it will help him in the future in 12th standard and in university life. I want him to learn C++, Java, Html.

What do you think should i start teaching him or let him grow more till 10 or 12?

• Does he seem interested? Can you give some more context about why your question is substantively different than this one? – Ben I. Nov 11 '18 at 13:54
• The tags on this seem wrong. – Buffy Nov 11 '18 at 15:55
• I have removed tag-highschool (7 year olds don't go to high-school). – ctrl-alt-delor Nov 12 '18 at 10:39
• C++ is the language of the (language) lawyers. I believe nobody should program in it, unless one is forced to (e.g. by clock cycle requirements). C++ programs 'done right' tend to be overly complex and large (there are some nice presentations by John Lakos if you are interested) – lalala Nov 12 '18 at 18:29

I want to tack on to Buffy's answer by focusing on one line from your question: "I want him to learn C++,Java,Html" (emphasis added).

The bigger question should be "What does he want to learn?"

Part of the beautiful challenge that is teaching is getting students to want to learn what we want to teach them. What has your brother shown interest in? What has he told you that he wants to learn? What are his hobbies? How could something about those hobbies be expressed/constructed in a program? Above all else, where do his interests align with what you can teach him?

I'd encourage you to read this thread about starting students in Python, this thread on engagement with computing, this thread about programming languages for teenagers (shout out to Processing!), and our recent HNQ about the age at which students should begin learning programming.

Make it fun and engaging for him. Have him build a game, one that he himself would want to play. The language skills will come with time (and intellectual maturity). What you can do now is two-fold: pique his interest for the future and teach him the essential concepts of computational thinking that underpin programming in any language.

C++ seems like an awfully steep climb for someone that age with no experience. I'm not sure what educational resources are available directed at that age.

I'd suggest that you start out with something more forgiving. Python has been a pretty good choice and has an OO core without quite so many "guns, knives, and clubs" which was an original description of the difference between Java and C++.

Most important, however, is that there are materials available for both Python and Java that are directed at younger learners.

In Java, for instance, the Greenfoot system provides a graphical system that provides both a visual environment and a fairly strong programming support environment that is amenable to younger learners.

I don't know of anything quite comparable in Python, but there may be some things.

One of the things that you might want to think about is that a new learner doesn't need to start with a bare screen and no support, building everything as they go. Virtual worlds can be constructed, by teachers or authors, that enable a beginner to do interesting things much earlier than they can if they just start by learning int variables and if statements. If you spend all of your time learning syntax and low level ideas you may not get to do anything interesting and so get bored easily. Better in many ways to work in and modify an existing system (in well considered ways) than to have to build up from nothing.

I have tried to learn and teach C++, I have seen others try to learn or teach it. I have seen people come out of university, having “Learnt it”. I have seen no success. None of these people have learnt it well, few have learnt it at all.

The only exception are those that first learn another OO language.

The best OO language to learn first is Eiffel. However I would not start with OO (For anyone). For a 7 year old, I would start with Scratch.

Consider also, not using a computer at all until age 11. That is no computer at all: no desktop, no laptop, no tablet. There is much computer science that can be learnt without a computer. See CS-unplugged.

It's okay, but I think it's a bad idea.

I've taught my kids C++ when they were age of 9 using a beginner book on building a game using C++ after they had a brief education on Scratch and Python. They liked it, but I thought it was a waste of time because the language, toolsets and many of study materials are not kids friendly. Almost everything about C++ slows them down compared to higher-level languages such as Python and JavaScript.

The better order for kids to learn programming is Scratch -> Python -> JavaScript. Once they build a solid foundation how to program and solve problems with Python and/or JavaScript (this will take at least a year or two), you may consider teaching more advanced languages such as Java and/or C++.

Unlike olden days when there were good reasons to learn Java or C++ as a language of choice, the benefit of learning Java or C++ is shrinking fast for beginners these days because there are so many materials and opportunities available for easier languages and growing support for those languages. For example, many programming competition websites and event the UASCO training site support Python. In the past, many of sites only supported Java and C++.