Follow us on Twitter at http://twitter.com/blogCACM
The Communications Web site, http://cacm.acm.org,
features more than a dozen bloggers in the BLOG@CACM
community. In each issue of Communications, we’ll publish
selected posts or excerpts.
communicate with domain experts and
separate problem-specific ideas from
the details of general-purpose languages
and specific program design decisions.
By “language,” we mean a new syntax, a static semantics, and a dynamic
semantics that usually maps the new
syntax to elements of the host language
and possibly external languages via a
foreign-function interface (FFI).
The article does a good job of playing out the issues and possibilities. I’m
particularly taken with the explanation
of how types play an important role in
specifying the new languages. The authors have thought a lot about how a
language can usefully constrain and facilitate programmers’ work to improve
problem-solving and productivity.
To fit into CACM, the paper is neces-
sarily short, so not all the issues are laid
out. I know from discussions with Krish-
namurthi these ideas started from their
work in education with DrRacket. The
team wanted to define subsets of the
language that were easier to teach, and
generalizing that idea led to this work.
Programmable programming languages have been created in the past.
Smalltalk- 72 objects could re-parse their
input; the language included an “eyeball”
character in methods that could look
ahead in the token stream to parse the
rest of the input line. Dan Ingalls wrote
in the “Smalltalk-80: Bits of History,
Words of Advice” that this made Smalltalk- 72 difficult to grow. The programmer was challenged to design a new
language that could be understandable
by others. How do programmers afterwards know the context and thinking of
the programmer who implemented this
language? How do they learn “
Smalltalk- 72” when it’s really an umbrella
for a bunch of different languages?
This modern work is richer for thinking
about developing new programming
languages for particular problems, but
the educational issues are still there.
Programming is not just about
˲ Programming is a job skill. It is hard
for students to learn programming.
Students often learn a particular programming language to get themselves
jobs. Are problem-specific programming languages easier to learn? Will
some become so popular and useful
that it’s worthwhile (from a job perspective) for a student to learn a problem-specific programming language?
˲ Programming creates infrastructure.
Programming is the infrastructure for
our world. There are large systems still
in use today written in Cobol and PL/1,
and we have to maintain that informa-
A Computing Education
March 8, 2018
When the March Communications
appeared in my mailbox, my monthly
Blog@CACM post wrote itself. The cover
story, an important idea with significant
education implications, was A Programmable Programming Language by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli
Barzilay, Jay McCarthy, and Sam Tobin-Hochstadt. The authors describe their
work with Racket, where software developers redesign the programming language to match a problem being solved.
In the ideal world, software developers would analyze each problem in the
language of its domain, then articulate
solutions in matching terms. They could
Mark Guzdial considers an idea with significant
educational implications, while Susan Landau looks
into the Cambridge Analytica/Facebook scandal.
DOI: 10.1145/3204443 http://cacm.acm.org/blogs/blog-cacm