Sunday, 22 May 2011

The pain of choosing the right tool to work with

I've been programming in many languages. Some of them were easy to learn, some prove difficult even after months of intensive use. In the end the most important part of learning a language are the libraries provided with it. Until you know the name of that particular function, you spend tons of time looking it up in documentation.
A while ago I had to make a choice about what I'd use to program my little projects in. I wanted to use Python which I consider programmer's heaven - language wise. They don't say "batteries included" for nothing when it comes to Python. Just about anything you need is already provided for your programming pleasure. And it just feels natural to use it. If you're not sure, just type the code and to your surprise: it will usually just work. This language simply rocks!
Alas GIL, some performance issues and inability to protect my code turned me away from this beauty. So I started looking for other options. Compiled languages of old that I learned programming with and used them all my life. Surely they would provide me with more or less the same level of programming enjoyment so that I can finish my projects quickly and with minimal fuss?
I looked at Pascal, which was my primary language for years. Even in its latest incarnations I saw that I'd still have to write entire classes just to get me a simple sorted list of records. Not to mention that Borland is no more and the language itself turned to a niche player. FreePascal sure is a fine compiler and tool, but it still didn't evolve the language enough to even attempt competing with Python.
Then I looked at C++ which was never really an important language for me - Pascal was just so much easier. But it has one major advantage: just about everybody uses it. The compilers are the most advanced for this language and they exist for just about any platform you could ever think of. And it has templates and STL and libraries for just about any purpose all over the net. And pretty much everything comes with a C++ libraries and samples. However, C++ also wasn't even close to perfect. Despite all its advantages, it's still an archaic language which doesn't really evolve much and in the recent years it certainly didn't evolve into something modern.

So I looked around and I found what seemed lie a perfect candidate: D. It's a C++ derivate which took ideas from other modern languages and merged them into a language that seems the perfect mixture between Python and plain old C. I'd even go as far as to say that D is pretty much a strictly - typed Python, as much of it as can be implemented into strict types.
The problem with this language I didn't find in the language itself, but in its proprietor. For some reason Digital mars, the creators of this language, don't want to open the compiler source. Instead of them contributing to an open project, they continue to develop their own closed-source (partly open is still closed) compiler. Also the entire documentation about the language is hosted directly on the company's web site and not on a site devoted to the language itself. There are open source attempts, but they are obviously undermanned and thus too little. The entire thing smells too much of a - as in one single - company. There are simply too many what ifs.

In the end, C++ prevailed, but mostly due to its popularity. But with it came much pain. Following in the next blog entry.