Google

Tuesday, January 8, 2008

10 programming languages, 10 projects, 12 months

Hello, I’m Sandy and I’m a programming languages junkie. From since I was a young nerd, I enjoyed playing with them, and to some degree I still do. As I get older and more serious about programming, through, I try not to get as subjective about them as I once was, or worse yet, attached to a particular technology too much. Sadly, I found such attitude to be rare, and good objective language evaluations hard to find, especially ones that would cover which disciplines which language is good for, except the obvious ones (like Perl for text processing). A good craftsman knows what tool to use for which tasks, this is pretty much established knowledge, even through some variation of opinions certainly exists. Yet in programming, other factors tend to play a major role in choosing the tool - large corporations support (if the project is a commercial one, or if you want to be useful in your work), personal taste, hype surrounding the language, ease of use etc.That said, as my 2008 blogging / programming project I want to make such an evaluation, or at least a draft of it. My schedule is very tight now, so it might be my only extra-curricular blogging/programming activity, so it better be good. The analogy between programming language and craftsman’s tools may or may not be right, but the experiment seems interesting to me anyway - throughout this year, I will try to build 10 practical applications in 10 different programming languages - 100 programs total. Of course, I won’t manage to write 100 projects of a significant size in one year, neither will I get a good understanding of any of the languages I’ll use for such a short period (not counting those that I’ve already played with before). Anyway, what I surely can do, is to get a good sense of which language feels like, how comprehensive are the standard libraries (having not much time this may be crucial) etc. I may also check out how the language affects the way you can solve a problem in a direct comparison. That’s why I want the 10 program ideas to be really interesting, doing useful and fun stuff, not just dry calculations or simple algorithmic problems. One nice example I saw other people did when doing such comparisons on a smaller scale was a ray tracer, and this is really nice - it combines some number crunching, file handling, graphic file formats handling etc. and the end result is a nice picture, so writing it gives some satisfaction.Here is where your help comes in - I need suggestions which languages to choose, and what projects to work on. Well, to be sincere, my languages list is pretty much set, and it probably will look like this:C++ with Boost / other third-party librariesLisp (SBCL?)Python (I always was a Ruby guy)FactorJScheme (PLT?)ErlangHaskellOCamlSmalltalk (Squeak?)I pretty much like this selection, but feel free to make any suggestions you like, I’m not exactly sure about the C++ part, but it may be a good reference point. Anyway, I’m much less sure about the projects list, besides the ray-tracer example the only thing that comes to my mind right now is a simple unit-testing framework, which is a great test for the language expressiveness and can be bootstrapped rather quickly. So, I’m waiting for your suggestions, and even if no-one will give any, I will try to post the complete list and maybe some first results in a few days.

No comments: