Bjarne Stroustrup: The 5 Programming Languages You Need to Know | Big Think


Bjarne Stroustrup: The 5 Programming Languages You Need to Know | Big Think
“Nobody should call themselves a professional if they only knew one language.”
New videos DAILY:
Join Big Think Edge for exclusive videos:
Bjarne Stroustrup is a computer programmer most famous for having designed and implemented the computer programming language C++, one of the most widely used programming languages in the world. His book “The C++ Programming Language” is the most widely read book of its kind and has been translated into at least 19 languages. In addition to his five books, Stroustrup has published hundreds of academic and popular papers. He currently holds the College of Engineering Chair in Computer Science at Texas A&M University.

Question: What are the five most important languages that programmers should know?

Bjarne Stroustrup: First of all, nobody should call themselves a professional if they only knew one language. And five is a good number for languages to know reasonably well. And then you’ll know a bunch, just because you’re interested because you’ve read about them because you’ve wrote a couple of little programs like […]. But five isn’t a bad number. Some of them book between three and seven.

Let’s see, well my list is going to be sort of uninteresting because it’s going to be the list of languages that are best known and useful, I’m afraid. Let’s see, C++, of course; Java; maybe Python for mainline work… And if you know those, you can’t help know sort of a little bit about Ruby and JavaScript, you can’t help knowing C because that’s what fills out the domain and of course C-Sharp. But again, these languages create a cluster so that if you knew either five of the ones that I said, you would actually know the others. I haven’t cheated with the numbers. I rounded out a design space.

It would be nice beyond that to know something quite weird outside it just to have an experience, pick one of the functional languages, for instance, that’s good to keep your head spinning a bit when it needs to. I don’t have any favorites in that field. There’s enough of them. And, I don’t know, if you’re interested in high-performance numerical computation, you have to look at one of the languages there, but for most people that’s just esoteric.
Follow Big Think here:

✉ E-mail:



  1. With C I learned the basics of programming.
    With Assembly I learned what's behind C.
    With Java I learned OOP and design patterns.
    With Matlab I learned to see computation in terms of vectorial operations.
    With Python I learned the elegance of simplicity, high-level features of modern languages, the basics of functional programming.
    With JavaScript I learned the pain to work with a shitty language.

  2. Please, I beg of you, don't use Python. If you learn it in school, great! Just don't use it ever in production and use your experience learning Python to learning a better language like C/C++/Lua (These all go hand in hand with each other and provide literally the holy trinity of languages). Python uses so many CPU cycles that it financially costs companies upwards of 10 times the cost if running in the cloud, with the added benefit of libraries breaking every other year and different versions being incompatible, yet still maintained because of said previous point leading to more fragmentation. If you really want to learn a "simple" language, just learn FreeBasic or C. Just for some reference, my code from 8 years ago in Python broke due to library changes whereas my RPG made in C from 8 years ago still compiles with the newest C standard (C 1999 -> C 2011). I just would highly advise away from Python if you're going to be doing performance critical things like games, data processing, or anything with graphics/visualization. It has been a serious problem for businesses although not very evident since most people are oblivious of it.

  3. C++, checked.
    And recursively so.
    Along the way came all the other languages, because they all want to be strongly typed like you know who, and you became impatient, possibly with a deadline.
    Yet you know better.
    And the journey continues.

    Many people suggested English in their comments. If they were not being funny or sarcastic, they meant symbolic (i.e. mathematical) logic. You can't possibly master metaprogramming if you don't know metamathematics.

  4. Don't bother. Every employer is looking for the cheapest possible pos they can get from any corner of the world. Be a Lawyer or an MD.

  5. SmallTalk to learn the originals concepts of OOP: encapsulation, isolation, decoupling, modularity, reusability, generics etc. Lisp to learn about metaprogramming, recursive data structures and how to process/construct/descontruct then, and other common functional stuff. Erlang to learn to deal with concurrency problems in a elegant and powerfull way, and more functional stuff. C to learn the do it yourself stuff. Assembly to learn the hardware stuff. (Bonus: Rust to learn a cool contemporary language that have a compiler that hates you but you love it anyway)

  6. Maybe the question should be more like, "Which paradigms should I learn about?"
    Language is just a tool and the number of languages you know doesn't have much to do with professionalism. Functional paradigm is something very few people look into. It's underrated, people should definitely look into languages like Haskell, Elm, Clojure, Elixir, Erlang, etc. Functional paradigm eliminates run-time exceptions, making debugging super easy, and makes programming much more human friendly!

  7. I just finished taking a course on C and I would like to know what other languages can I learn that will benefit me in my field of study and work?

    I am studying computer and electrical engineering at my university and I plan on doing graduate work in AI and control systems. So far I really enjoyed C's low-level features and I plan on learning C++ (the object-oriented part of it) and Python since I heard it is being used a lot in robotics for deep learning.

  8. C++ is the worst language ever created. Who, instead of adding the keyword 'abstract' to the language, sets functions to zero to show the same idea and calls them pure virtual functions? This guy. The programming languages you need to know depend on what you want to do. If you want to feed your family learn JavaScript, Python and C# or Java.

  9. It really surprised me he named C# in the end. There are just a bunch of known programmers that put that on their top five list. That really is a pity as C# is such a great language.

  10. Top 5:
    1. C++ or C because it is the king of languages
    2. JavaScript with NodeJS because webdevelopment is a must
    3. Python because sometimes, we want to be done as soon as possible
    4. Assembly because you need to know how your programming languages speak
    5. Shell, because you want to order your system

  11. I never enjoyed c++. I'd rather stick with c and implement some basic data structures there (Red-Black three, Linked List, Array List) just for learning the basic of pointers. Because I'm a math/statistics guy, my list would be:

    1) Java – For learning basic programming and oop principles.
    2) C – For learning manual memory management.
    3) PHP – For back end development.
    4) Javascript – For the obvious reasons.
    5) Python – For numerical calculations and graph plotting.


Please enter your comment!
Please enter your name here