The search for a forever language
08 Aug 2024
The idea of a programming language that i can learn and then use for most things, and keep using for ages and ages, is a nice one. There are obviously lots of contenders, the most obvious ones being the languages that were made in the twentieth century and have several implementations and are quite stable. Python doesn’t fall into this camp, but c does, for example. So would fortran, common lisp, and pascal.
Another pleasant feature of such languages is some kind of consistency and simplicity; the ability to hold the world in my head. C is probably quite good for this, much more so than common lisp, although common lisp arguably makes up for that in expressiveness. Pascal is still an option, but is so unknown in general that it loses out on a large package ecosystem, which is a nice to have.
Another option is scheme, an implementation with a lot of implemented srfis and committal to a standard, like chicken scheme.
Another option is a more modern language, but one that focuses on the values i’ve listed. Go fits this criterion, and seems to be very popular among the people that use it, including many people i respect a lot. On the other hand, in a lot of ways it seems to be a very old language with some poor design decisions. That’s nothing i couldn’t look past, really.
I have two more options i’m considering. The first is ocaml, which is another language with a long history. Although it’s very niche, it has some nice features. It also benefits from good integration with emacs. It has a fast compiler, and native compilation.
The other option is janet, a lisp inspired by clojure and lua. It is very new, and is in development by the same person who originated the fennel language. Of all the mentioned languages, this one certainly has the smallest community, the smallest package ecosystem, and the least chance of survival. But on the other hand, the language itself is quite simple and small, so could be easily maintained by me if necessary.
In conclusion, these are the contenders:
- Common lisp
- C
- Pascal
- Ocaml
- Chicken scheme
- Janet
I will look further and think harder about each one before coming to a conclusion.