| Graceful blog | Documents |
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.
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 invloved with the design of Grace itself, is as follows.
Most recently updated on