Yes indeed, it would! There was actually quite a bit of discussion during the week about the the PL design. One of the clear principles requirements for learnable PL design was developing syntax and semantics that are amenable to being carved up into sublanguages that could be taught across a learning progression. For example, Java violates this principle by requiring the simplest possible program to expose concepts of classes, objects, static methods, functions, return values, fields, etc. That’s a lot for a hello world! In contrast, something like Python allows that first lesson to begin with arithmetic, string literals, etc.

Of course, these examples are just about the first lesson. How can you design PL that are decomposable across multiple lessons, or even harder potentially, decomposable in a wide variety of ways to support different learning contexts? One could imagine that “decomposability” is a property one could formally analyze about a PL’s semantics. I wonder what other PL properties that’s in tension with.

Naturally, the functional PL folks would just advocate for having simpler functional semantics. But there was some discussion about how simple-but-powerful semantics like those found in functional languages end up just burying all of the complexity in functions themselves; the PL’s semantics end up being comparably easier to learn, and the learning progression shifts to learning a sequence of functions and patterns for composing them.

Designing for PL learnability is therefore a rich, wide open area for discovery.

Professor of programming + learning + design + justice at the University of Washington Information School. Trans; she/her. #BlackLivesMatter.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store