2015-06-26 Programming Languages

Opinionated guide to the programming languages that I have been using professionally:

  • *x86 machine code *is the native language of most computers (laptops, servers, …; not tablets, phones nor devices). It is a messy set of extensions to an originally 16bit CISC CPU, – ugly, but very useful to know, as that makes you aware of the capabilities of the machines.
  • C is the classical system programming language. The language is quite small, and nice. It misses some expressiveness, but you get a good access to the core machine.
  • C++ is tons of extensions to C, – depending on which parts of it you choose to use, it can be a leaner, more efficient version of C, or a bloated many-headed hydra. Cleanly written C/C++ code can be very efficient and portable, – as it is close to the metal, and can be used on almost any platform (even on top of JavaScript through emscripten).
  • Java is a friendlier, and safer language than C++. It looks a lot like object-oriented C++, similar to the way that a cat looks like a tiger. It is an industrial language with a good virtual machine and decent performance.
  • Php is a hack for making programmable webpages, – I still try to avoid it, even though it has improved over time. Useful for web.
  • CoffeeScript is a quick way to write JavaScript, – mostly a hack and best for smaller projects, where you do not need the tooling that has evolved around JavaScript.
  • Python has a nice focus on code readability and is generally a good scripting language, trading off performance and typing.
  • JavaScript is the most important platform(html5+hybrid-apps+nodejs+…) for end-user applications. Besides many very ugly quirks, it can be a nice langue if you understand it, and approach it in a consistent way.
  • ClojureScript is a modern lisp that runs on top of JavaScript. It has persistent datastructures and good support for functional programming. It has macros that allows it to assimilate features from other languages (logic programming, static type-checks, CSP / go-like channels, …). It is also in the process of maturing, so you might still run into odd bugs, or things missing, but in my experience, it is the most expressive way to write for the html5 platform.