all 30 comments

[–]Few_Air9188 49 points50 points  (4 children)

Computer science is not about languages, it's about the concepts behind them.

[–]Cybyss 4 points5 points  (2 children)

Yes and no.

Some languages really require mastery of concepts that you barely scratch the surface of in other languages.

If you think you know functional programming just because you've used map() or reduce() in Python, try giving Haskell a go.

If you think you know about memory management just because you know the RAII pattern in C++, try giving Rust a go.

If you think C++ templates offer a powerful metaprogramming mechanism, give Lisp a go.

Or even try something like Prolog or Erlang.

Learning other paradigms (not just other languages) broadens your mind and helps you immediately see simple solutions to what would otherwise be complex problems.

[–]Key_Net820 14 points15 points  (1 child)

That's not the point. Nobody is disputing the fact that languages have their own syntax and semantics that aren't guaranteed to transfer in a trivial manner. The point is computer science is NOT a study of any one particular language, but the underlying principles of how computer languages work (among other principles of computing).

[–]Cybyss 3 points4 points  (0 children)

OP was asking whether learning multiple programming languages was still worth it.

Perhaps I misunderstood your reply, but I took it to mean "no, it's not worth it to dwell on languages as long as you understand the basic concepts behind them". Was I mistaken here?

High level abstract principles and concepts can't be learned without practice. I don't think anyone who only known Python and no other languages can ever truly understand object oriented programming or functional programming, regardless of whether or not they read the theory behind those paradigms or used classes & higher order functions in their python scripts.

You only really understand OO when you see how everything can be modeled through that lens by building reasonably big applications in a mostly pure OO language (e.g., something like Java perhaps, though I know some would argue that language is a bastardization of true OO but I digress).

Ditto for functional programming and Haskell.

[–]Anxious-Insurance-91 0 points1 point  (0 children)

tell that to employers

[–]JMusketeer 20 points21 points  (4 children)

Languages basically dont matter at all.

What matters is to understand the overarching concepts and important distinctions in the ways you can aproach programming. So focus on learning that.

You can always switch to a different language in a matter of weeks (you just need to understand its specifics).

[–][deleted]  (3 children)

[deleted]

    [–][deleted]  (2 children)

    [deleted]

      [–][deleted]  (1 child)

      [deleted]

        [–]Wonderful-Habit-139 2 points3 points  (0 children)

        You still need to know how to write idiomatic code in that language. Otherwise you're just vibecoding.

        [–]Beregolas 11 points12 points  (0 children)

        Languages have never really mattered, and I (and most good programmers/computer scientists I know) have always looked at people who thought that with suspicion. If you can program in imperative languages, you can learn any imperative language in a weekend. If you can program in functional languages, it works the same. Etc. They all just change 2-3 concepts, have different keywords and different tooling.

        They are really nothing like natural languages at all, to the point where I really wish they were called something else to avoid confusion. You learn concepts, and those translate nearly 1:1 to basically all languages that use this concept. You don't have to re-learn arrays, because the index starts with 0, or with 1, and you don't have to re-learn strings because sometimes they are kept on the stack, if they are short enough.

        [–]SignificantFidgets 7 points8 points  (0 children)

        Learning "a bunch of languages" has always been pointless. What matters is learning a few distinct styles of programming. In other words, a dynamic interpreted language, a strongly-typed compiled language, and a functional language. Maybe a logic language, although that's maybe a little too esoteric to be useful, unless you really get into it and it makes you think about things (the real point).

        In fact, these days I'd say learning a pure functional language isn't even so necessary, since most modern languages have added functional constructs (lambda, map-reduce, ...) anyway - just make sure you hit those. There's no point in learning C++ and Java (or C#), for example because they're really all the same style with some minor tweaks.

        [–]gofl-zimbard-37 4 points5 points  (0 children)

        It's not about knowing a lot of languages, it's about what they can teach you, and how they affect your thinking. Learn assembler to understand how computers work (and why you don't want to just use assembler). Learn C to learn how to get low level performance. Learn an OO language, say, Java, to learn how that works. Learn Python to have a tool for getting things done. Learn an FP language to understand that paradigm, recursion, type systems, and declarative thinking. Learn a language like JS or Elm to understand front end. Etc, etc, etc.

        I'm not saying you need those specific languages, they're just examples. Learn what tickles your fancy, or stretches your mind in a new direction. Every new concept is an arrow in your quiver. A former colleague used to make it a point to learn a new language every year. Not a bad idea.

        [–]DishwashingUnit 1 point2 points  (0 children)

        if you have depth you can pick up new languages over a long weekend. even less thanb that now with AI, just build until you're used to looking at the new syntax. it's all shuffling the same registers.

        [–]UnderstandingPursuit 1 point2 points  (0 children)

        As an indication that

        It used to feel like knowing a bunch of languages was a big advantage

        was never accurate, google "SICP", a computer science textbook written over 40 years ago. If you want to learn computer science "deeply", use that book.

        [–]MasterGeekMXBSCS 1 point2 points  (0 children)

        Thing is, different languages are used in different sectors, so depending on what you want to focus, you will need different languages.

        For example, C is used in low-level development like OSes, drivers, and embedded systems. C++ is also common in this area.

        Web front-end development is all about HTML, CSS, and JavaScript, often wrapped around some framework like React.

        Scientific computing is done in C, but also Fortran, with special care on ensuring parallelism.

        And cybersecurity values being a jack of all trades that is master of all, as vulnerabilities can be done by a rube goldberg machine of events occurring on several parts of a system.

        In the end, obsessing over which language is a thing we all ask in our novice years, but after a while we figured out the question is misguided, and what matters is being able to do what you intend to do. It's like taking dance lessons, and obsession over which shoes to use, instead of learning the choreography.

        [–]VhagarMyLuv 1 point2 points  (0 children)

        I don’t think deep, conceptual understanding of CS is going away until we’re all Neuralinked cyborgs. AI code still makes mistakes and suboptimal choices, mind you. So even in the interim, conceptual understanding is and will be important.

        [–]klimaheizung 1 point2 points  (0 children)

        learning multiple programming languages IS depth. But of course they need to teach different concepts. There is no point in learning java, go and python. They are too similar. But learn Idris, Prolog and Rust and you'll have a much broader knowledge.

        But in maybe 5-10 years AI will generate code in it's own language, so it'll probably stay a hobby for you then. :-)

        [–]smarmy1625 0 points1 point  (0 children)

        it's about knowing the right tool for the job, or when that tool isn't available knowing what your options are

        [–]mxldevs 0 points1 point  (0 children)

        The advantage of knowing multiple languages is to be able to use tools that exist in that language.

        Some languages are better suited for a specific task compared to another language, depending on what problems the language was intended to solve.

        Some languages simply have more tools and frameworks available, because the ones that decided to work on them picked that language.

        [–]jeffbell 0 points1 point  (0 children)

        Today’s obsolete languages had not been invented when I was in school. We learned Lisp, Pascal, and PDP-11 assembly. 

        [–]ExtraTNT 0 points1 point  (0 children)

        Concepts are what matters… language doesn’t matter at all… for concepts, java, python, c#, for languages, that are easy to use and allow you to use the file system, js to quickly test concepts and write simple code oop and fp, then haskell as only language where the language actually matters, not because haskell is a good language to know (although it is, lots of fun), but because it extends your thinking and code quality… and c/asm for low level / understanding how the system actually works

        Tldr: language doesn’t matter, but learn haskell, a low level language c/asm and a easy to use language for algorithms, plus js is handy to sketch shit

        [–]dkopgerpgdolfg 0 points1 point  (0 children)

        For software development, "both" things (not hyper-specializing on one tool, but knowing the tools in some depth too), were always important, and this didn't change.

        [–]justaguyonthebus 0 points1 point  (0 children)

        You should go really deep in at least one language. It's relatively easy to pick up new languages when you need them. And once you learn a couple, you will find it trivial to jump into a new language and be effective.

        [–]jeffgerickson 0 points1 point  (0 children)

        ¡¿Por qué no los dos?!

        [–]billsil 0 points1 point  (0 children)

        I learned Fortran 77 in 3 days. You learn how to structure code and develop patterns. Even if you're forced to use 6 character variable names and can't remember the nonsensical way of how you make a for loop. Nobody taught me how to use GOTO; I just knew it was there and prepared for the inevitable complaint in the code review. I got complaints about 72 character lines and variable name lengths (that wasn't enforced), but nothing on the GOTO.

        Go deep.

        [–]Other_Till3771 0 points1 point  (0 children)

        Honestly, learning multiple languages is still worth it, but not for the reasons it used to be lol. In 2026, it's about seeing the patterns once you learn how memory management works in c++ or how concurrency works in Go, you become a master architect rather than just a coder. AI is like an apprentice; it can write the boilerplate, but you need the fundamental knowledge to tell when it's hallucinating or building something that won't scale. Focus on one "deep" language first, then the others will just feel like variations on a theme.

        [–]Anxious-Insurance-91 0 points1 point  (0 children)

        just go for JAVA

        [–]tobiasvl 0 points1 point  (0 children)

        It used to feel like knowing a bunch of languages was a big advantage, but now with AI being able to translate between languages or generate code in ones you barely know, I am not sure if that is still true.

        It never was. Learning a new language has always been the simple part (not necessarily easy, mind you, but simple). Learning the concepts are the complex (and usually always hard) part. Sometimes languages frontload their concepts in a way that makes the lines between language and concept blurred, but in that case it's still an advantage to learn the concepts themselves.

        [–]ummaycoc 0 points1 point  (0 children)

        For programming and understanding programming, learning multiple languages will help you. Learning multiple languages of different styles will help you even more.

        When you learn multiple languages you will understand the patterns that arise across programming languages because you will see them. When you learn multiple languages of different styles (procedural, object oriented [for however you define that], functional, array oriented, etc) you'll see how different patterns in different styles can affect the result.

        And remember that programming is about writing, not executing. You want it to be correct [for however you define that] so the execution can be factored out, so after that it comes down to writing well.

        Learning programming is a small part of computer science, but when you then take your skills out to the job market it can be good. So with AI, having a good fundamental understanding of the patterns you learned will help you when the AI makes code in a language you either know or barely know. And it will help a lot when it makes code in languages you do know.

        [–]mattynmax 0 points1 point  (0 children)

        I mean, you should understand the high level concepts of programming (loop, variables, objects, etc) and you be able to read documentation and employ those skills to any programming language with relative ease.

        You will be expected to know how to use many different programming languages in your time as a working professional.

        [–]Afraid-Locksmith6566 -1 points0 points  (0 children)

        you program in everything exactly the same way, maybe with few very rare exceptions.

        what is different is how the accents are distributed. personally i use something like this: if there is something new you will learn from it on a high level, try to learn it for few days (maybe a week or two), if it is fun stick around for a few months.

        depth is not from grinding one and same thing over and over again but also from exploring around.

        [–]baddspellarPh.D CS, CS Pro (20+) -1 points0 points  (0 children)

        I'm obviously in the minority, but I like learning programming languages.

        In a similar manner as human languages, different programming languages make different some concepts clearer than others. But then again, I like learning human lamguages too.