Empirically Minimal


I’m wrapping up the JavaScript version of Software Design by Example and hope to finish the Python version early next year. Writing these has convinced me that it’s harder to teach with languages like Python or JavaScript than it used to be. These languages have features and libraries that make industrial-strength coding more productive, but that richness is bewildering for newcomers: every online search for “how do I XYZ?” throws them into a sea of concepts, terms, and APIs that they haven’t yet met.

I’m therefore spending a lot of time thinking about minimal languages that are novice-friendly. Hedy is explicitly layered; Quorum’s insistence on testing new features’ usability keeps it small; Lua’s focus on embeddability has the same effect, and materialized thought experiments like Wren are even closer to what I want.

But what exactly do I want? Looking at SDXJS and its Python sibling, and at my programming lessons for scientists, I rely on the following:

But here’s the thing: this list is based on nothing more substantial than an hour-long cruise through lessons I’ve developed. What I really want is for some enterprising graduate student to spend a couple of months going through lessons and textbooks and counting how often various language constructs are used (cf. #10 and #48 in this list). I think it would be analogous to the way that chip designers work: look at what operations programs execute most often in order to figure out what to optimize. If you’re interested, please give me a shout: this is something I’d be happy to make time for.