Industry is ready and waiting for more graduates
educated in the principles of programming languages.
to companies and society of building
fundamental infrastructure in dated
programming languages with weak type
systems (the C language in this case)
that do not protect their abstractions.
Several companies have developed new
safe systems programming languages
to address the challenge of programming scalable and reliable systems. Examples include the Go language from
Google ( http://golang.org/), the Rust
language from Mozilla ( http://www.rust-
lang.org/), and the Sing# language from
Microsoft ( http://singularity.codeplex.
com/). Such languages raise the level
of programming via new type systems
that provide more guarantees about the
safety of program execution.
Domain-specific languages (DSLs)
go further by restricting expressive
power to achieve higher-level guarantees about behavior than would be possible with general-purpose languages.
The SQL database query language is
a classic example, based on the relational algebra,
2 which enables sophisticated query optimization.
DSLs continue to find application
in industry. Google’s Map/Reduce data
parallel execution model3 gave rise to a
number of SQL-inspired DSLs, including Pig ( http://pig.apache.org/) from
Yahoo. The Spiral system from ETH Zurich ( http://www.spiral.net/) generates
very efficient platform-specific code for
digital signal processing from declarative specifications of mathematical
functions and optimization rules. Intel
makes Spiral-generated code available
THE NEED FOR more people to learn to program has re- ceived widespread attention recently (see, for example, www.code.org and its recent
“Hour of Code” held during CS Education week in December of 2013 and
2014). While the ability to program has
tremendous potential to support and
channel the creative power of people,
we should remember that programming languages continuously arise as
the need to solve new problems emerges and that it is language principles that
are lasting. As we discuss in this Viewpoint, language foundations serve an
increasingly important and necessary
role in the design and implementation
of complex software systems in use by
industry. Industry needs more people
educated in language principles to
help it deliver reliable and efficient
software solutions to its customers.
Historically, many important prin-
ciples of languages have arisen in re-
sponse to the difficulties of designing
and implementing complex systems.
Garbage collection, introduced by John
McCarthy around 1959 for the Lisp lan-
guage, is now commonplace in modern
programming languages such as Java
and C#, as well as popular scripting lan-
Dijkstra’s “Go To Statement Considered
Harmful” Communications Letter to the
Editor advocated the use of structured
programming, which is enshrined in all
modern programming languages.
systems classify program expressions by
the kind of values they compute,
abling compilers to prove the absence
of certain kinds of errors and optimize
code more effectively. Hoare’s assertion-
al method provides a framework for es-
tablishing the correctness of programs.
As the complexity of the systems we
desire to build increases, new mecha-
nisms to express programmer intent at a
higher level are required in order to deliv-
er reliable systems in a predictable man-
ner. The design of new programming
languages is driven by new classes of sys-
tems and the desire to make program-
ming such systems within the reach of
more people. New methods for express-
ing programmer intent take many forms
including features of general-purpose
languages, domain-specific languages,
and formal specification languages used
to verify properties of high-level designs.
Experiences with bugs like the recent
TLS heartbeat buffer read overrun in
10 show the cost