The Grace Programming Language

Why is a new Programming Language Needed?

In the 1980s, computer science and software engineering programmes worldwide benefited from a surprising unanimity in choice of programming language. By 1980, most programmes used Pascal as an introductory language, moving to Java (sometimes by way of C or C++) in the late 1990s as object-orientation became widely accepted. This unanimity benefited students and teachers, who are able to transfer their skills and techniques between institutions, and to use textbooks (and now web resources) from a wide variety of sources. This unanimity also benefited employers, who were able to reply on graduates having a shared basis in programming. Unanimity also benefited researchers, who were able to present programs and their designs, analysis, and execution using a common lingua franca.

The choice of introductory language is no longer so clear. Java remains the most popular choice, but it is now a large, mature language with many features for supporting professional software engineering, and many other features bearing the scars of Java’s evolution over the last 20 years. New languages such as C# and Scala have learned lessons from Java’s design, but they too are large languages, also designed to support professional practice, and also retain or duplicate many features for backwards compatibility with C# or Java. Some institutions are adopting Python as a first language, however many others are wary of an introductory language that lacks a static type system. Scheme, Haskell, ML, GBeta, Smalltalk, and C# — to name but a few — have been or are used as introductory languages in particular contexts, but have never gained the widespread acceptance of Pascal or Java.

Computer Science has successfully addressed this problem before. In the 1950s, there were a large number of attempts to produce an “algorithmic language”: these attempts were unified and produced ALGOL-60. In the 1980s functional programming languages were similarly diverse: these differences were resolved by producing Haskell. In the 1990s there was at least one attempt to produce an object-oriented teaching language, Blue, but it did not succeed, partly because many faculty wanted to use an “industrial-strength” language in their courses. Give the last 20 years experience with C#, Java, and other “real” languages, perhaps it is time to reconsider, and instead create a language designed for novices.

Some History

The need for a new language became apparent to a number of us at ECOOP in 2010 in Maribor. At the end of the meeting, the people below met and agreed to the statement of need above, and a number of design principles, which we plan to elaborate over the coming weeks on this site.

The initial group of conspirators, who support this design effort even though they may not have time to be deeply involved with the design of Grace itself, is as follows.

  • Peter Andreae, Victoria University of Wellington
  • Andrew Black, Portland State University
  • Gilad Bracha, Ministry of Truth
  • Kim Bruce, Pomona College
  • John Boyland, University of Wisconsin, Milwaukee
  • Pascal Constanza, Vrije Universiteit Brussel
  • Sophia Drossopoulou, Imperial College, London
  • Susan Eisenbach, Imperial College, London
  • Michael Hicks, University of Maryland
  • Michael Kölling, University of Kent at Canterbury
  • Gary Leavens, University of Central Florida
  • Shane Markstrum, Bucknell University
  • James Noble, Victoria University of Wellington
  • Doug Lea, SUNY Oswego
  • Oege de Moor, Oxford
  • Dirk Riehle, Friedrich-Alexander-University of Erlangen-Nürnberg
  • Ewan Tempero, The University of Auckland
  • Dave Thomas, Bedarra Research Labs
  • Laurence Tratt, Middlesex University
  • Jan Vitek, Purdue University
  • Tobias Wrigstad, Uppsala University

Leave a Reply

Your email address will not be published. Required fields are marked *