Often, I spend time learning new programming languages and environements. It’s not that I need to. I’m curious to learn and I like to see how various orthogonal features fit together. Ideally, one day, I will build my own programming environment (I know it takes at least five years). Note that I prefer to say “programming environment”, which I will later explain. This post is an aggregate of the various knowledge I gathered from my studies which come to my mind.
Programming language versus environment
Overevaluating something happens a lot in the computer world. Maybe it’s because things are more abstract, which leaves some room for absurd ideas to overtake the rationals. Suddenly, the market decides that something is the future. This is how the market had major shift, for example balancing between thin clients and workstations. Suddenly, all software has to be “as service” and lots of computation that happened on the desktop take place on the server. Often, the right answer is right in the middle.
In the programming world, syntax of languages has often been the main comparison vector between two languages, and numerous useless threads has been started, on which language has the “nicest” or shortest implementation of the fibbonacci algorithm. If you think for two seconds you realize that: fibonacci is mathematically pure and not an indicator of real-world code ; second, this function would be implemented once per language and put in a library. Aren’t there other things we could argue on ? Do we, software developers, miss some good metrics to compare the languages ?
Let get back to the subject. I believe the language is only a small part of the experience the developper has while developping. There are tons of other things ( from the top of my mind ) : debugging tools, virtual machine (yes/no/characteristics), space constrains, deployment tools, editor support, and a special mention ; a good help system ! How much time I loose reading the source code (hello ruby) or searching google for examples is astouning. All of these things and more is what I call a programming environment. Everything that helps between the first lines of codes and the release, and then between the releases. Heck, even the operating system or a graphical editor.
That’s all for today. TODO: next time, let’s talk about orthogonal feature or language metrics. If you have some ideas, send me an email since I don’t have the time to implement and handle a commenting system.