Slashdot Mirror


Is It Worth Learning a Little-Known Programming Language?

Nerval's Lobster writes: Ask a group of developers to rattle off the world's most popular programming languages, and they'll likely name the usual suspects: JavaScript, Java, Python, Ruby, C++, PHP, and so on. Ask which programming languages pay the best, and they'll probably list the same ones, which makes sense. But what about the little-known languages and skill sets (Dice link) that don't leap immediately to mind but nonetheless support some vital IT infrastructure (and sometimes, as a result, pay absurdly well)? is it worth learning a relatively obscure language or skill set, on the hope that you can score one of a handful of well-paying jobs that require it? The answer is a qualified yes—so long as the language or skill set in question is clearly on the rise. Go, Swift, Rust, Julia and CoffeeScript have all enjoyed rising popularity, for example, which increases the odds that they'll remain relevant for at least the next few years. But a language without momentum behind it probably isn't worth your time, unless you want to learn it simply for the pleasure of learning something new.

22 of 267 comments (clear)

  1. No. by Anonymous Coward · · Score: 5, Insightful

    There is enough similarity between programming languages that there really is no point in learning any more than what you need. If you find yourself in a position where you need to learn a new one, as long as you have a pretty broad background it usually only will take a couple of days to get going and a couple of weeks to get really good.

    1. Re:No. by Anonymous Coward · · Score: 4, Insightful

      There is enough similarity between programming languages that there really is no point in learning any more than what you need.

      That's true with a lot of the "C-with-X" type programming languages that are out there (e.g. if you know Python/Perl/Ruby you probably don't need to also learn Ruby/Python/Perl unless you have to), but there are also programming languages that are built around a wholly different philosophy, and I would argue that people *would* benefit from learning one of them, even if you don't actually ever use it.

      The canonical example is Prolog. Not used for anything much in particular, but a completely different way of thinking about programming, and something that will definitely make you a more well-rounded programmer if you do learn it. Likewise, if you've never worked with a functional programming language, learning Scheme or Haskell will be a benefit. Something like Eiffel is good to learn design by contract. Heck, even esoteric languages like Brainfuck and Unlambda can be worth learning (but never using) for the different perspective they give on how to accomplish a programming task.

      Of course, by "learn" here I don't just mean learn the syntax. By "learn" I'm referring to knowing the concepts behind the programming language, and understanding what is "correct" or idiomatic for that programming language, rather than "can I transliterate this FORTRAN program into Scheme syntax?" It's not "will I ever use this language" or "will this look good on my resume" but "what is the philosophy of this programming language, and what can I learn from it"?

    2. Re:No. by Anonymous Coward · · Score: 1, Insightful

      OP was talking about people with a broad enough background where Haskell isn't inimidating.

      How did you reach that conclusion? It's a two sentence post from an AC that doesn't cite a single language or programming paradigm. Yet somehow you've managed to characterize his precise meaning.

  2. Correct answer, in the first 2 posts: It depends. by Anonymous Coward · · Score: 1, Insightful

    Post 1:

    Yes if you can afford the time (Score:2)

    /thread

    Post 2:

    No. (Score:2, Insightful)

    There is enough similarity between programming languages that there really is no point in learning any more than what you need. If you find yourself in a position where you need to learn a new one, as long as you have a pretty broad background it usually only will take a couple of days to get going and a couple of weeks to get really good.

    Additional commentary

    But really this is an ill-posed question, and slightly offensive. Why are we treating all "programming languages" the same? There are obviously different tools that come and go in terms of usefulness. The question, as it is posed, is nonsense. If it is little-known because it is no longer useful, then it might be worthwhile to learn if you are into the history of programming languages. If it is little-known because it was designed to be like that, such as Brainfuck, then it might be worthwhile to learn it if you are a masochist. And so on....

  3. Is the Lobster an auto-post? by xxxJonBoyxxx · · Score: 3, Insightful

    Every week I seem to see a slight variation on:
    "Is learning %s worth it?"
    "What is value of learning %s vs. %s?"
    "Would you learn %s to switch jobs?"

    I'm beginning to think this Dice account is just an autopost with a random list of possible values.

  4. Re:Yes if you can afford the time by houstonbofh · · Score: 5, Insightful

    And if you pick the right one. A "language on the rise" may not be a good thing if everyone is jumping on it. By the time you learn it, the limited but growing market may be flooded. You can even pick a language that is falling off, as long as the programmers are falling off faster. A good example is COBOL. It is truly a dieing language. But with many COBOL programmers in their 70s+ the need is actually growing. (That said, you could not pay me enough to program in COBOL)

  5. It's not about the nail by __aabppq7737 · · Score: 4, Insightful

    It's about training your mind to understand something hard. Learning a little language exercises will-power, discipline, and focus.

  6. Lisp-likes and CS background by chthon · · Score: 4, Insightful

    Start with How to Design Programs and work it through, from beginning to end, even if you are a good programmer.

    Then go to Structure and Interpretation of Computer Programs. Work through the chapters that you find interesting.

    Then start with learning Common Lisp. Even after 30 years existence, there is still no other programming language which implements everything that is possible with CL. There might be programming languages which are more specialised in certain language subsets that are also part of Common Lisp, but none includes everything that CL includes.

    Then learn Common Lisp macros, and realise that to get at the same level of possibilities in other programming languages, you need to embed a Lisp system. But that will be a slow interpreter, and Common Lisp can compile.

  7. Learning new mindsets by DarkDust · · Score: 4, Insightful

    Over the years, I've worked with about 20 different languages. I learned a lot of them purely out of interest. Even if you won't need it for any "serious" or paying work, it can be useful to learn a new language that is different from the languages you know. For example, if you know C# you won't learn that much by working with Java; they're too similar. By contrast, if you try learning a language like Haskell or Go instead you'll get introduced to new ways of thinking.

    In almost all languages, there are things you can do easily or "naturally" in it. These language (and framework) features usually influence how you would design a program in that language. And it's these concepts that are worth learning. For example, when I learned Ruby and later Haskell, I learned how powerful concepts like map/select or working with closures are.

    This knowledge then transferred to the languages I usually work with; my designs in my "traditional" languages changed because of the things I learned while working with other languages.

    So even if the new language is not "one the rise" it might pay off by indirectly improving your skills in the languages that you do get paid for.

  8. Re:Yes if you can afford the time by JMJimmy · · Score: 1, Insightful

    Not quite.

    The simple answer is that once you learn how to code it doesn't matter what the language is. Sure you need to learn where the limitations are, efficiencies of the language, syntax, etc but at their core most programming languages are the same.

    I taught myself PHP/JavaScript/etc back in the day, took a few courses with Java but never touched a lick of .NET/VB/ASP. Without knowing anything about how someone had coded a page in ASP.NET, simply looking at the output times, I was able to diagnose an issue, code & test a framework for a fix to be integrated into his code. It took me all of 2 hours and access to language documentation to "learn" ASP.NET and managed to triple the efficiency of the code.

  9. It's always worth learning a new way of thinking by nickovs · · Score: 3, Insightful

    Even if you never make use of the new programming language it is almost always worth getting your head around a new way of thinking about problems. You may not ever need to write code in Lisp but understanding what a functional language is and isn't good for is helpful in other languages. If you're building flight control systems then Python might not be the language to do it in but getting deep into it and start understanding why you'd want a metaclass in the first place can help you stricture your code better. There aren't a ton of job openings for Erlang programmers but there are lots for people who understand High Availability and Disaster Recovery and the background knowledge will stand you in good stead.

    In short, yes, it's worth learning all the languages your brain can handle. Even if you forget the details the concepts will stick around and help you later.

    --
    If intelligent life is too complex to evolve on its own, who designed God?
  10. Re:Yes if you can afford the time by flargleblarg · · Score: 5, Insightful

    The simple answer is that once you learn how to code it doesn't matter what the language is.

    I couldn't disagree with this more. I don't mean to be flippant or argumentative; I simply want to say that my experience has been quite different. I think the langauge you write programs in is incredibly important. You want the right language for the task at hand. Just as an example, I often prototype new ideas for algorithms in Perl as a prelude to rewriting them in C. Perl (and I'm sure Python is as well) is great for a quick prototype and for proof-of-concept testing. But it's terrible for speed (compared to C/C++), and is also terrible at type-safety. When I rewrite something in C, it often runs 100 or 200 times faster than the Perl version. (Not for parsing and string-based stuff, but for integer numerical analysis stuff). But exploring the data structures and getting them worked out first is easier in a high-level language like Perl, with its dynamic arrays, hashes, autovivification, and so forth. Anyway, I rarely prototype something C, and I rarely write production code in Perl. For me, the choice of the language is one of the most important decisions I make on a daily basis.

  11. Re:Yes if you can afford the time by Grishnakh · · Score: 4, Insightful

    One big factor, here, however, is how similar the language is to ones you already know.

    For instance, if you already are well-versed in C and C++, looking at some D or Rust code probably isn't going to be hard for you. However, looking at something in Haskell or Lisp is. A lot of languages these days are very C-like and either imperative or object-oriented (in an imperative way), so to me it's really rather trivial to learn them; it's just a matter of learning what's different. But if you start looking at languages which are really different from ones you know, then it becomes much more challenging. Looking at one with syntax unlike C will be one factor (like with Python), but looking at something entirely different like a functional language will be even harder.

  12. Re:ADA? by Anonymous Coward · · Score: 1, Insightful

    It is all ALGOL to me. I haven't encountered a new language in many years. Different dialects yes, but really new to the point where I need lessons beyond just quickly reading a book, no.

  13. Re:Yes if you can afford the time by JMJimmy · · Score: 4, Insightful

    The simple answer is that once you learn how to code it doesn't matter what the language is.

    I couldn't disagree with this more. I don't mean to be flippant or argumentative; I simply want to say that my experience has been quite different. I think the langauge you write programs in is incredibly important. You want the right language for the task at hand.

    I don't disagree with this at all. My point was that you don't need to go out and learn an entire language just because you think it might be useful to do. Once you know one or two languages it's not important that you know other languages, just that you know what situations other languages would be better suited for. When you run into one of those situations, it's just as easy to pick it up on the fly because you already have the core knowledge from the existing language(s) you've learned.

    I think of it this way... a decade ago my professor gave us a little anecdote about how, if you learned 10 new methods in Java every day for the rest of your life - you'd be dead before you learned everything that was in Java. Since you can't "know" a language because it's constantly being created/changed/etc the best thing to do is understand rather than know.

  14. Re:ADA? by Em+Adespoton · · Score: 3, Insightful

    I think ADA is finally on its way out. COBOL and Fortran will still be around for years though. and anyone who knows their way around MATLAB will also be in high demand for years to come. Pick any language on which deployed hardware depends, and you've got a language that will need people who understand it for years to come.

    I once new someone who helped a Telecom deploy their COBOL stack -- she was pulled out of retirement some 20 years later to help them migrate it to a more modern platform, as she was the only person from the team left alive who actually understood how it all worked.

  15. Re:Yes if you can afford the time by jythie · · Score: 4, Insightful

    This becomes an even bigger deal if you are talking about jumping entire language families. Moving within things like C, Java, C++, Python, etc, most of the thought patterns associated with how you solve problems goes with you. Throw that same programmer into a FORTRAN, LISP, or eris forbid Prologue, and there will be a larger learning curve than just the syntax and limitations.

  16. Re:Yes if you can afford the time by phantomfive · · Score: 3, Insightful

    I don't think you understood the GPs point. He is talking about choosing a language to learn, not choosing a language for a particular task. Certainly, the language you choose for a task is important.

    The reality is (and the GPs point) learning a new language shouldn't take you very much time. If you have to ask whether a language is worth learning, the answer is 'YES' because at that point you need more experience learning languages.

    --
    "First they came for the slanderers and i said nothing."
  17. Re:Yes if you can afford the time by jythie · · Score: 2, Insightful

    Though keeping with that analogy, cars might all be pretty much the same, but hand someone a motorcycle or a big rig and the learning curve makes it so knowing the rules of the road is barely even a start. And people handed a boat are really confused.

  18. Re:ADA? by gb · · Score: 4, Insightful

    If a skill set is sufficiently rare then it's not very cost-effective to advertise for it on the open market - but that doesn't necessarily mean it's not a very valuable skill set.

  19. Re:Yes if you can afford the time by master_kaos · · Score: 3, Insightful

    Actually, this is a good analogy. You can get from Texas to New York using an F150 or using a Yaris. But what is the purpose? Are you lugging your spouse and 3 kids for a vacation? Then maybe go for an SUV or minivan that provides comfort. Are you transporting some goods? Maybe a truck with a tailer. Is cost a concern? Maybe fuel efficient vehicle. Are you a hipster? Maybe a Tesla.
    But even with these different requirements, you still have choices.

  20. Is Java really a programming language? by IWantMoreSpamPlease · · Score: 3, Insightful

    Or is it a punishment?

    --
    So rise up, all ye lost ones, as one, we'll claw the clouds.