Tutorial 1
Generative Programming: Concepts and Experiences
Project Fortress: A Growable Language for Scientists and Engineers
Sukyoung Ryu
Abstract
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.