Sometimes I have trouble focussing on a single project. I then justify my behaviour with stuff like “Der Weg ist das Ziel” (the way is the goal). I just like programming. So I investigate as much as I can during my spare time in my quest to find the best tools of my trade. Over the years I have looked into all kinds of programming languages, but the only ones I actually wrote programs in with some sense of certainty are, in descending order of subjective familarity/frequency of use over the years, PHP, (Type|Java|Coffee|Action)Script, Java, C#, C/C++, Python, Java, Delphi, HLSL, Scala, Haskell, Clojure, x86 Assembly (MASM/NASM), Pascal, Go, Ruby and Bash.
There are lot more that I just spend some time in tutorials with, such as F#, Boo, Smalltalk, Common Lisp & Scheme, Ceylon, Objective C, Erlang, Groovy, Lua, ML, OCaml, Dart, Kotlin and Rust. And I’m not going to even get started with domain- and program-specific languages and variations like C-Script, Mathematica, Matlab, R, JavaFX Script, Processing, and so on.
The sheer number of different programming languages out there is mind boggling. Some are more similar to each other, some entirely different. After seeing so much you get the feeling that once you saw one, you’ve seen them all. Knowing the general concepts and theory behind programming (which I spend some quality time with in the library when I wrote my Master Thesis about functional programming), you can learn all languages easily enough, given the time. But syntax isn’t everything. Getting to know the different ecosystems with their tools, libraries, and best practises takes a lot of time and more knowledge than anyone could store in their short-time memory at any given time.
Being able to pick up and understand code in different languages is awesome. But as my patience is getting smaller and smaller productivity is increasingly important to me. To be able to really just knock out an idea in short hours, I don’t want to rely on looking up documentation on every other occasion. Mastering few languages, even if they may not be the best tool for the job or don’t offer the newest trending features inspired by languages that we already had in the 60s and 70s, for me that’s the key to achieving a good “flow”. Getting to a level where you can just seamlessly transform your ideas into code without thinking too much about the techniques or libraries you are using is one of those things that makes programming fun. Maybe even more than being able to play around with new concepts and toys.