Comments on some interesting programming languages

Assembly

Assembly offers the ultimate control and freedom. Want to return multiple values? Sure, go ahead. Want tail calls? No problem. However, for understandable reasons, I have never written anything large scale in it.

C

C offers a simple execution model, efficient code, and fast compilation. It strikes a good balance between assembly and higher level languages. The main abstraction is the procedure, so make good use of it! Be sure to check out the C99 standard's extensions to initialize structures by field name.

C++

C++ is both brilliant and horrendous at the same time. I used to use C++ for all my projects, however I am getting more and more skeptical towards C++. Nowadays I tend use C instead of C++ whenever I can. Even as a relatively experienced C++ programmer, C++ still surprises me frequently, especially in group projects. New and subtle bugs crop up regularly, all caused by the complexity of the language more than anything else.

Haskell

Haskell is an extremely cool language, but sometimes a little frustrating too. It makes some hard things easy and some easy things hard. Monads cut down a lot of repetitive code, but combining different monads is difficult (for me at least). The defacto compiler for Haskell is GHC. GHC does an admirable optimization job, but the compilation is slow and the resulting executables are bloated -- 5 MB for a hello world program.

Common Lisp

Using common lisp feels like a big releif compared to many other languages. Like C, there's an air of freedom around it. It is great for prototyping/exploring something you don't have a clear idea of yet. However, there is an impedance mismatch with today's operating systems, and without static typing it is hard to do large changes without breaking something. I suppose unit tests will help with this, and I plan to use them next time I use CL for something largish.

Standard ML

When writing programs SML, it really feels like I am building something. I think SML's fantastic module system is to blame. There is something satisfying about compiling your code and seeing all the module signatures roll on the screen, summarizing the API of your work instantly. The standard library (the Basis library) is showing its age but is very down to earth and pragmatic. I wish SML was more popular.

Ocaml

Since I mentioned SML, I should mention Ocaml too. I don't like it as much as SML. but I am not sure why.

Back to articles index