My Favorite Programming Languages

This post from @lynn@a.bloodyno.se got me thinking:

what’s your favorite programming language? why? please boost i need to distract myself lol

The replies are about what you’d expect: a lot of people waxing lyrical about type systems, a lot of people praising languages they like but don’t actually use, a few people almost apologizing for the unpopular languages that they like because they do actually use them…

And I feel like I mostly fall on that latter end of the spectrum. I started on BASIC and then moved to x86 assembly language, on an out-of-date DOS machine. And then to various other languages on whatever cheap used machine I had at the time. So a common theme for me was trying to do things that the computer I had was probably too slow for and trying to squeeze out all the performance I could. And thus using whatever language best allowed me to do that (and was free or very cheap) so another theme was learning to see the abstract structures in verbose assembly language or whatever other clunky language I was stuck with.

So while in theory I like “elegant” languages, in practice I find them small-minded and limiting and I gravitate toward the untyped languages that just get on with things. I haven’t used Perl in a decade or two but I enjoyed it when I did.

I’ve just never met a type system that didn’t feel like it was trying to proselytize me and force me into its narrow religious cage rather than trying to give me tools to work in my own way “safely” or whatever its flavor-of-the-week is.

And I tried flavors of Lisp early, and I spent ten years playing with Forth, and I spent some time with Haskell too—all very malleable languages that let you define your own syntax. And while I do think that’s fun, it also means that I’ve seen how much people mostly use it as an excuse for endless hair-splitting arguments about trivial things and to build inscrutable personal dialects of the language instead of using the language to make interesting other things. And yeah, I’m as guilty of that as anyone. It’s just fun, OK?

And again, I did a lot of assembly language very early in my programming life: I can comfortably see through quite a bit of obfuscation.


Which is a stupidly long-winded way to say that, while I know people who love type systems or whatever principled language they love, and I have come to understand why they feel that way…

For me my favorite languages are:

  • JavaScript, because I can just write stuff that anyone with a web browser can run, without needing a tool chain that eats up a measurable percentage of my limited hard drive space for every project that uses it.
  • Lua, because it does so much with so little: the metaprogramming stuff does everything I need so much of the time but mostly it’s just a simple little language that I don’t have to think about. And also because of LÖVE2D which builds such a nice scripting interface on top of SDL and just lets me get on with building little graphical games with a minimum of fuss (and a minimum of higher-level support for game structures, yes, but that’s rarely what I’m looking for when throwing together little prototypes).
  • And then I have to throw in Forth for when I do feel like language shenanigans. I mostly reinvented it for myself as a teenager (years before I knew it already existed) so I have a real soft spot for it as one possible assembly-language programmer’s answer to “what’s the most trivial language that can actually be powerful and fun.” But it’s also a language that can be expanded to do about as much fancy metaprogramming as Lisp or Smalltalk (one of these days I really am going to sit down and experiment with making a tiny homoiconic Forth: I feel like there are stack languages that do this but IIRC they’re all bigger and I think it’d be fun to see how minimal you can get with the idea). But in practice I don’t use Forth much because programming in it (for me) still tends to devolve into puzzles about how to fit the thing into the language rather than just about making the thing.