Absolute numbers aren't really all that interesting. Much like human languages, the differences between programming languages are not all equal. I've been told by native Italian and Spanish speakers that, even absent any formal training, it's relatively trivial to become conversant in the other language. My wife is a native Turkish speaker, but she can tune in to the Azerbaijani news channel and understand everything the announcers say, though reading is essentially impossible (modern Turkish uses a modified Latin alphabet while Azeri uses Cyrillic). However, as a native English speaker learning Turkish, I can vouch that it's significantly more difficult than when I was learning French or German. (Turkish is, interestingly, something of an outlier when it comes to language families.)
Likewise, anyone capable of writing a program with Ruby should be able to pick up Python in a day or two. Java and C# are, for the most part, just a few syntax conventions apart. What's more impressive is if you can code, competently, in a pure object oriented language as well as a pure functional one.
If you already know Ruby, I'd wager your time would be much better spent learning Clojure or Haskell than Java or Python.
That's what I was thinking. On the one hand is the C family of languages (C, C++, Java, C#, Go) and then you can get mileage from the Lisp family of languages (Lisp, Scheme, Racket, Clojure) - you can get a lot of languages there but you're still only working within two language families.
Throw in some Haskell, Forth, Prolog and now you're getting interesting!
Comments
Absolute numbers aren't really all that interesting. Much like human languages, the differences between programming languages are not all equal. I've been told by native Italian and Spanish speakers that, even absent any formal training, it's relatively trivial to become conversant in the other language. My wife is a native Turkish speaker, but she can tune in to the Azerbaijani news channel and understand everything the announcers say, though reading is essentially impossible (modern Turkish uses a modified Latin alphabet while Azeri uses Cyrillic). However, as a native English speaker learning Turkish, I can vouch that it's significantly more difficult than when I was learning French or German. (Turkish is, interestingly, something of an outlier when it comes to language families.)
Likewise, anyone capable of writing a program with Ruby should be able to pick up Python in a day or two. Java and C# are, for the most part, just a few syntax conventions apart. What's more impressive is if you can code, competently, in a pure object oriented language as well as a pure functional one.
If you already know Ruby, I'd wager your time would be much better spent learning Clojure or Haskell than Java or Python.
That's what I was thinking. On the one hand is the C family of languages (C, C++, Java, C#, Go) and then you can get mileage from the Lisp family of languages (Lisp, Scheme, Racket, Clojure) - you can get a lot of languages there but you're still only working within two language families.
Throw in some Haskell, Forth, Prolog and now you're getting interesting!