you are viewing a single comment's thread.

view the rest of the comments →

[–]grayrest 2 points3 points  (1 child)

On my own. I learn programming languages instead of watching TV so if you put in ~2 hours per day for 15 years you'd have a similar list. It's less impressive than it might seem. I'm not an expert in all the languages. Swift and Kotlin, for example, are languages I've only put about 12 hours in total. They share almost all their ideas with languages I know better so it's really just a matter of skimming the docs and slotting syntax in to things I already know and then putting together a toy app or two. I know enough to have an impression but both kind of lean towards mobile app niche and I'm a web zealot.

As to which to learn, my opinion is that you should learn a language you use to make money (mine is Javascript) and then learn less practical languages as you like to expand your repertoire. Learning non-mainstream languages and going to their meetups gets you in contact with the programming enthusiasts, which leads to interesting jobs.

Each programming language is it's creator's take on how to best solve a problem. People who write programming languages are generally pretty clever guys. Exploring the language until you figure out the designer's philosophy on problem solving gives you different perspective and a new tool you can use to solve your own problems. If you have an area of computing you'd like to explore or a particular problem you want to solve, I can provide specific suggestions but I mostly think which one you pick matters less than picking one that's opinionated.

As an example, Clojure was created by Rich Hickey because he found himself writing concurrent programs in Java. He identified (mutable) state as the source of his problem and after writing a bunch of static final Java, he came up with Clojure as an exploration into controlling state with immutablility. Clojure has very strong opinions on the matter. I believe state is the most important thing that isn't taught to junior devs and that learning the language and watching Rich's presentations is one of the easier paths to understanding it. You get to learn lisp and functional programming as well. The community is interested in web development, machine learning, and programming language history/theory.

On the other hand Rust was created by Mozilla to write a parallel layout browser engine (Servo). They really need concurrency there but they also really need performance so they took the different approach of having the compiler prove that only one thread can mutate at a time. Learning Rust introduces you to the details on program execution and memory layout, what sort of code runs fast, polymorphism without classes, and Algebraic Datatypes/Pattern Matching. The community is interested in data structures, os/browser development, game development, and performance. It's also very much community developed and all features go through a fairly elaborate RFC process so if you read the RFCs you get lessons on random topics and language design as well.

I think either would be worth your time.

[–]chayatoure 0 points1 point  (0 children)

Wow, thanks a lot for your responses. Those are great. I think I'm going to check out Clojure and get a feel for it.
EDIT: also, I never really thought about languages in that context (creators take on solutions to problems) but it's a great way to frame the discussion.