Felix Rambles

Another step to taking back control

Programming languages are not a given

14 February 2019 — Felix Ple┼čoianu

Having just brought a project to a good stopping point, and wanting to rest a little before diving into the next one, no matter how impatient I am, it occurs to me that this blog needs a little love. By pure coincidence, it's Valentine's Day. And because I happen to be in love with the craft of programming, it seems like a good idea to write down a bunch of thoughts that went through my mind a lot recently.

Most programming language research for at least the past decade seems to happen in the rarefied heights of type theory. Hardly anyone can be bothered to spare a thought for the syntax and API of languages programmers have to use in real-world conditions. Never mind the ease of implementing compilers and interpreters that someone will have to, you know, maintain. And so we're stuck with variations on the hoary old C syntax. Even when a daring computer scientist comes along to bring us something like Lua, people balk and go right back to their familiar punctuation soup.

(Speaking of which: don't you dare mock Perl programmers. They at least know to be wary of "line noise" code, and actively try to avoid it. Whereas C code often resembles APL in production.)

I've been interested in programming language implementation for ten years now, though I could never read more than half of SICP even after repeated attempts, and never progressed past interpreters and transpilers. These efforts culminated in a 2016 book, and more recently a 2K-word article, itself the culmination of many attempts, some successful, some failed. You can see the latest results for yourselves. Let me just point out a few things.

We need to think more and deeply about our most important tools. Not just packaging, build and deployment systems: those wouldn't have anything to work with if it wasn't for interpreters and compilers with which to make software in the first place. And communities of practice are lacking. There is an esoteric language wiki and a concatenative language wiki; the Tclers Wiki and the Portland Pattern Repository also have much on (types of) programming languages. All that is good.

However I couldn't seem to find a community of practice for Lisp-like languages, even though it's one of the most numerous families on Earth. Let alone for the more general category of homoiconic languages, or prefix-notation languages. There used to be one for Basic dialects, but it shut down, as that particular family has been dying out.

More importantly, with all the people out there who would benefit from knowing how to program but are afraid of it because reasons, I'd like to see a deliberate community of practice for friendly languages that don't look like programming. Purely declarative languages would help a lot here, but those crashed and burned along with Prolog. There are some visual languages, but they're big systems (and that's a problem, see above), fiddly to work with and give people the wrong idea.

Either way, please spend some time looking into the issue. You could end up doing everyone a big service.

Tags: programming, philosophy

Comments? Tweet