TY - JOUR
T1 - Learnable programming
T2 - Blocks and beyond
AU - Bau, David
AU - Gray, Jeff
AU - Kelleher, Caitlin
AU - Sheldon, Josh
AU - Turbak, Franklyn
N1 - Publisher Copyright:
© 2017 ACM.
PY - 2017/6
Y1 - 2017/6
N2 - When a programming language is provided as a user interface that welcomes novice users, rather than as a technical tool only for experienced developers, we arrive at a new picture of what the programming environment should provide: • Vocabulary should derive from recognition, not recall; • Cognitive load should be lowered by chunking code; • Grammar rules and types should be made visible; • Program chunks should be directly manipulable; • Low-viscosity editing should also be possible; • Coding environments should be available without the need for tool installation; • Simple concepts should be described with clear words and high-level abstractions; • Runtime state and behavior should be visible; and, • Examples should be easy to find and apply. In short, for a programming tool to be usable by new or casual programmers, its design must focus on learnability. Blocks have proven to be effective at solving many of these problems. Although programming is still not nearly as widely learned as it should be, the progress made by blocks language interfaces can inspire us all to see that programming can be made more learnable. The art of programming is the original human-computer interaction, and it remains an unsolved usability challenge. We can still do more to make programming available to all.
AB - When a programming language is provided as a user interface that welcomes novice users, rather than as a technical tool only for experienced developers, we arrive at a new picture of what the programming environment should provide: • Vocabulary should derive from recognition, not recall; • Cognitive load should be lowered by chunking code; • Grammar rules and types should be made visible; • Program chunks should be directly manipulable; • Low-viscosity editing should also be possible; • Coding environments should be available without the need for tool installation; • Simple concepts should be described with clear words and high-level abstractions; • Runtime state and behavior should be visible; and, • Examples should be easy to find and apply. In short, for a programming tool to be usable by new or casual programmers, its design must focus on learnability. Blocks have proven to be effective at solving many of these problems. Although programming is still not nearly as widely learned as it should be, the progress made by blocks language interfaces can inspire us all to see that programming can be made more learnable. The art of programming is the original human-computer interaction, and it remains an unsolved usability challenge. We can still do more to make programming available to all.
UR - http://www.scopus.com/inward/record.url?scp=85020091943&partnerID=8YFLogxK
U2 - 10.1145/3015455
DO - 10.1145/3015455
M3 - Review article
AN - SCOPUS:85020091943
SN - 0001-0782
VL - 60
SP - 72
EP - 80
JO - Communications of the ACM
JF - Communications of the ACM
IS - 6
ER -