Personal context: I've been learning C++ formally the last 6 months at university. Prior to this I dabbled in JavaScript for a year. Now I am considering learning Python during a month off school.

By splitting my focus early in the learning process am I degrading the efficiency of my learning? Should I spend the month off continuing in C++? Or is it never too early to learn a new language?

  • 6
    If you understand programming in general then learning new languages should help you become a better programmer. If you're new to programming and haven't grasped things like flow control, data types, functions/methods etc then I would wait to learn other languages. Aug 22, 2012 at 4:45
  • I'm quite comfortable in C++ with everything you mentioned. Aug 22, 2012 at 5:27
  • 1
    I will place your question into perspective. Within the first 6 months of being at a university I had already been introduced to 5 different programming languages. Assembly( I forget the exact Moto platform it was), C, C++, Visual Basic 6, and Java. I later went on to learn Basic, C#, Visual Basic .NET, x86 Assembly. After college I have learned at least 5 additional programming languages within the first 2 years.
    – Ramhound
    Aug 22, 2012 at 12:52
  • 2
    If you can multitask and prioritize and have a disciplined approach to learning, then by all means go ahead and learn a second language. Usually its best to focus on and master the first language. However, its also important to learn various programming paradigms. Read the programming section of the following links to see what I mean: What Every Computer Science Major Should Know and Programmer's Competency Matrix
    – Anthony
    Aug 23, 2012 at 12:38

5 Answers 5


My experience with Python is limited to some play code only slightly more complex than hello world, so this won't be a very in-depth answer for python specifically, but I can tell you this:

The differences between the languages is in details like the syntax and certain language specifics will be different (like the different ways errors are handled, I/O capabilities and how compilers convert your input into something executable), but C++ and Python both offer the same paradigms, so problem solving can be done in much the same way with both languages. Both C++ and Python are Imperative and Object Oriented, so you're probably going to pick up python quite fast if you're comfortable with C++ once you've mastered the new syntax using problem solving techniques you've picked up with C++. If you want to, you can use Python for functional programming as well, but I've never touched that part, so I can't tell you much about it.

Is it too early? I can't really tell from your story in a definitive yes or no. Are you already confident enough to write full (GUI) applications with C++? (i.e. use libraries, more complex language features like generics and/or templating etc.) I think that learning a new language paradigm is much harder than learning a new language in the same paradigm family. When you step out into new paradigm territory, you'll have to spend much more time for getting a good idea of how to solve problems with that paradigm. Between OO languages there are differences as to how inheritance is dealt with, and how data is passed in the memory when you pass a parameter/argument to a function affecting performance. But to get going these are usually of minor concern at first.

My guess is that if you're confident enough with C++ to do something more than hello world in a fancy way, you're ok for launch. Learning many languages superficially will help you understand code samples regardless of the language used, but creating your own code requires a bit more understanding of how the languages work and how they differ from each other.

P.S. When I want to learn how to use a new language superficially, I'll usually try the following things to get a feel for the language syntax and superficial workings:

  • Hello world (Text on screen)
  • Hello world written to a file (teaches you the basics on file I/O for that language, and very often other kinds of I/O as well)
  • Doing some standard calculations with different bases (10, hex, octal), both integer and floating point. (teaches you about truncation and number notation)
  • Try to use some graphical library to show hello world in a fancy dialog. (teaches you how to use libraries and external code)
  • The concluding remarks in the last paragraph are excellent. While I'm not quite to full applications in C++ I appreciate your argument about broadening the scope of what I am familiar with, even if it is just superficial. Aug 22, 2012 at 5:35

Well of course it is.

No doubts about it, it is sometimes too early to learn a new programming language.

The simplest case is if an el-stinko language comes out and before anyone points out its unsuitability, by learning it you damage your brain. A couple that come to mind include BASIC, FORTH, and APL.

For a more complicated case, one of the great computer scientists has described this problem which very briefly stated is that practice makes permanent, and there are many disciplines that should be learned before learning computer languages so that the language does not distort the more fundamental understanding. In his words:

The tools we use have a profound and devious influence on our thinking habits, and therefore on our thinking abilities.

The opponent of just diving into to programming is named Edsger Dijkstra and he had a very distinguished career. He was awarded the ACM Turing Award with the following citation:

For fundamental contributions to programming as a high, intellectual challenge; for eloquent insistence and practical demonstration that programs should be composed correctly, not just debugged into correctness; for illuminating perception of problems at the foundations of program design.

The paper where he blasts premature learning of programming languages is:

"On the Cruelty of Really Teaching Computer Science" http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

Also, please don't flame me, I am just the messenger.

  • "I started with BASIC and have been scarred for life" - doesn't that kind of disprove your point? If you had been introduced to other programming languages early on, BASIC wouldn't have made such a strong impact?
    – tdammers
    Aug 22, 2012 at 18:15
  • I guess I needed an emoticon. If it helps, I have deleted that sentence. Aug 22, 2012 at 22:23

Is it ever too early to learn a new language?

I would say yes. If you're still wrapping your head around the very concept that the computer might actually do what you tell it, then learning a second language will probably just confuse you.

But if you are past the point where you realize that the computer does exactly what you tell it to, no matter how stupid it is, then chances are that you have a reasonable enough grasp of your first language that looking at a second (and third!) language doesn't break your focus.


Can't you do both?? I would do a project in C++ and learn bits of Python (just because it is so awesome), you could solve problems at ProjectEuler.net using Python

In general, I think its a bad idea to learn a language, leave it and start learning a new one. One should be flexible working with different paradigms at the early stages. But that is just what I think.

  • ProjectEuler.net looks awesome! Thanks for the recommendation. Aug 22, 2012 at 5:30

To a practicing programmer I would unreservedly say learning a new language is almost never a bad idea. To a university student, I would urge a little caution, depending on what classes are coming up. The reason is, in a school exam you frequently have to recite language details without the benefit of a compile/execute environment that will easily point out your mistakes.

Especially when you only have a few month's experience, it's very easy to mix up the details in your mind. If you care about your grades and are taking a class with exams like that, I would be careful. In the real world, that's not a concern.

edit: I originally said syntax, but non-syntactic details are just as important to professors, and there are a lot more of those.

  • If as a student you cannot remember the differences between syntax between languages you have a problem. You won't always have a compiler to check your syntax, there are some very real situations in this field, where you need be able to recall the syntax on the spot.
    – Ramhound
    Aug 22, 2012 at 12:54
  • I'm not saying it's impossible to remember, just that it makes it a lot harder for a beginner. Large syntactic differences are fairly easy, but professors can be annoyingly picky about details like append() vs. push_back() for a list, which is something even experienced programmers have to look up if they haven't used a certain feature in a certain language in a while. Being able to recall syntax on the spot undoubtedly helps, but for the vast majority of jobs it is never required. Aug 22, 2012 at 15:24

Not the answer you're looking for? Browse other questions tagged or ask your own question.