In 2017 I took a look at a widely used programming language that had no name, so I called it “Computer Science Metanotation” (CSM), and I observed that it had grown in interesting and sometimes inconsistent ways.
For this talk I will examine another, perhaps even more widely used language that also has no name. Unlike CSM, it has remained almost unchanged for the last forty-odd years—yet programmers continue to write new applications in it today and even attempt to broaden its programming style, despite the fact that it is an extremely domain-specific language (DSL) that clearly was not designed for growth. It is a functional language—or is it?
We will explain the language briefly, then use it as a case study—based on my own experience in wrestling with it—to explore more general questions about language design. How can we find the right balance in a DSL between specificity (which can make it much easier to tackle the intended application domain) and generality (which can support language growth, new application domains, or just a broader view of the original domain)? To what extent should even a domain-specific language be self-aware?
Guy L. Steele Jr. (A.B., 1975, Harvard College; S.M., 1977, and Ph.D., 1980, MIT) is a Software Architect at Oracle Labs. He has taught at Carnegie-Mellon University, and worked for Tartan Laboratories, Thinking Machines Corporation, and Sun Microsystems.
He is author or co-author of five books: Common Lisp: The Language, C: A Reference Manual, The Hacker’s Dictionary, The High Performance Fortran Handbook, and The Java Language Specification. He has published more than two dozen papers on the subject of the Lisp language and Lisp implementation, including a series with Gerald Jay Sussman that defined the Scheme dialect of Lisp. His paper “Data Parallel Algorithms” with W. Daniel Hillis (December 1986) has been cited more than 1100 times.
He has been given the Grace Murray Hopper Award (1988), the ACM SIGPLAN Programming Languages Achievement Award (1996), and the Harry H. Goode Memorial Award (2007). He is an ACM Fellow, IEEE Fellow, Fellow of the American Academy of Arts and Sciences, and a Member of the National Academy of Engineering of the United States of America.
He has served on accredited standards committees X3J11 (C language) and X3J3 (Fortran), and served as chairman of X3J13 (Common Lisp). He was also a member of the IEEE committee that produced the IEEE Standard for the Scheme Programming Language, IEEE Std 1178-1990. At Thinking Machines Corporation he co-developed the languages Connection Machine Lisp, C*, and Connection Machine Fortran. At Sun Microsystems (and now at Oracle) he has advised the evolution of the Java programming language; he also led the design of Fortress, an object-oriented mathematical language intended to support high-performance computing. He designed the original EMACS command set and was the first person to port TeX.
He is a member of Tech Squares, the Plus-level Modern Western Square Dance club at MIT, and a square dance caller (currently Mainstream through C3A). At SPLASH 2011 he gave a presentation and demonstration on the structure of square-dance singing calls.
At Oracle labs, he is responsible for research in language design and implementation strategies, and architectural and software support for programming languages.