Saturday, 21 July 2007

First post

Hello there!

For now, this is a place holder, but I mean to use this blog to try to organize my thoughts on (programming) language design.

My views on programming languages is shaped by my past experiences so here's a short recapitulation:
  • I've started like my many kids by learning BASIC, which was quite nice to start (the line numbering and global variables were tedious though) due to the quick feedback and the ability to draw easily with the language.
  • As the BASIC was too slow, I learned the 6809 assembly language, it was interesting as I learned how CPU worked, but I didn't do much with this language: too many things to write before you're able to do anything interesting, fast but risky..
  • After this, I discovered Pascal at school, which was for all practical purpose as fast as assembly language but much easier to use. A big downside of Pascal was its lack of standardisation (or more precisely the standard part was so reduced as to be not very useful), a not so minor point was its verbosity.
  • Then, in my engineering school I saw many other languages: Vax and RISC assembly languages, the C language (I liked its portability, its terseness, but not its ugly syntax for variable declaration and its many pitfalls), Lisp (not my cup of tea), Smalltalk (weird syntax which makes it hard to grasp at first, but very nice), Prolog (an alien), the shell (very useful in many ways, but very frustrating also), the C++ (first version i.e. without templates)..
  • At work, as a software engineer, I learned C++ (second version with heavy usage of templates and multiple inheritance, bleah) and Perl which I liked at first but it's curious: the more I program in Perl, the more I hate it.
  • For a personal project, I learned Java, a not very interesting language despite the hype, at the time (1999), the libraries were very buggy and Sun took years (truly) to fix them.
  • For curiosity I studied:
    • Ada: a nice language if too much verbose.
    • D : C++ well done, but still a work in progress and a syntax which could be better.
    • Eiffel: the book Object Oriented Software Construction by B. Meyer really helped me understand the 'object oriented' way, plus DbC is nice
    • Limbo: a very nice syntax, a language which should have deserved more attention.
    • OCaml: not bad, but I prefer Scala.
    • Ruby: a very nice language (I studied it before RoR became fashionable) but I haven't managed yet to convince my boss to drop Perl and to use Ruby instead :-(
    • Scala: an interesting bland of object-oriented and functional language with a nice syntax.
So a broad experience (if not very deep) which convinced me that the current winners in their own category: x86 assembly language, C, C++, Java, Perl are definitely not the best language possible.

For the x86 assembly language, well I think that we're doomed to keep using it (x86-64 is better than x86 though)..
But for the other language, in an ideal future, D would replace C++, Scala would replace Java and Ruby would replace Perl (with some extension Ruby could replace shells also).

Still, I'll try to discuss the thoughts that all these language have given to me, mostly for myself to clarify my thoughts, but maybe some other will find them interesting, hence the creation of this blog!