Programming Paradigms and Beyond [pdf]
cs.brown.edu
cs.brown.edu
Probably this statement isn't so understandable from the above description. It really needs a blog post of its own.
But more importantly, I can tell you that the design recipe isn't enough. That's why we set out to study the notional machine question (paper cited in another response). We most definitely need it too; what we're trying to figure out is what form of notional machine matches best.
And thanks for mentioning the paper. I'll give it a read.
My guess is that "denotational strategies" (from what I can guess you mean) just move the cognitive load around in other places. That doesn't make them worse, but it depends on which kind of cognitive load the learner best copes with.
My career got started programming Flash. Mostly because I loved the visuals and wanted to code it. Even though there is scratch, and other block based languages it seems text is still the king.
Text as you’ve identified is not the most new comer friendly.
I still think the holy grail of visual programming is still to come. Most of coding is describing abstract syntax trees. A nice visual tree/graph manipulation editor has yet to be invented. Being able to have a hybrid text and visual seems like a good place to be.
I’ve spent many years thinking and obsessed about this concept. Especially around the ideas of code completion/intellisense.
What are your opinions on how kids in a decade will code?
I would recommend (also misleadingly titled) talk The Future of Programming by Bret Victor [1] which goes over some groundbreaking paradigms that have since become mostly forgotten.
Programming Language education blind spots and opportunities for research. Recommended for anyone who teaches, learns or writes programming languages.
Shriram also authored "Programming Languages: Application and Interpretation" [1] and co-authored "How to Design Programs" [2] with Matthias Felleisen, Robby Findler, and Matthew Flatt. Both books use Racket as a base (well, PLAI uses PLAI/typed, which is built from Racket and utilized the DrRacket interpreter... close enough).