Tutorial 1

Generative Programming: Concepts and Experiences

Project Fortress: A Growable Language for Scientists and Engineers

Sukyoung Ryu

We can think of a programming language as a vocabulary of words and a set of rules that define how to combine words into meaningful constructs. Creating a vocabulary and a set of rules that allow programmers to express their ideas clearly and concisely is one of the main goals of language design. However, it is difficult to anticipate the vocabulary and the set of rules that are suitable for solving various problems. It often depends on domain-specific applications, new hardware platforms, and any unexpected feature requests. Therefore, a language should grow over time to accommodate the changing needs of its users.

Fortress is a new programming language designed for growth by community instead of a single core team. It provides mathematical syntax to enable scientists and engineers to write programs in a notation they are accustomed to. It also provides built-in support for parallel programming. Moreover, its macro system allows for the language growth by extending the syntax and semantics of Fortress.

In designing Fortress, we have adopted the following design strategy: “Whenever possible, implement a proposed language feature in a library rather than building it into the compiler.” For this approach to work, library writers must have substantial flexibility and control over both syntax and semantics. By designing the language for growth, we are de- signing it for community participation and development. Hence, we have made Project Fortress open source, and are collaborating on its development with many groups and individuals all over the world.

Please come take it for a spin, or pitch in and help us grow!

Author biography
Sukyoung Ryu is an Assistant Professor at the Computer Science Department of KAIST (Korea Advanced Institute of Science and Technology). Before joining KAIST in December 2009, she worked as a Member of Technical Staff in Sun Microsystems Laboratories, where she worked on formally designing and developing the Fortress programming language. Before that, she was a Research Associate in Computer Science at Harvard, where she worked on the Debugging Everywhere project. She received her Ph.D. (2001), M.S. (1996), and B.S. (1995), in Computer Science from KAIST. Her most recent research focuses on developing language features that are both useful in practice and proven to be sound. She led the effort to construct the core calculi of the Fortress language, to improve the Fortress prose specification, and to build a full-fledged parser for Fortress that runs entirely on the JVM.