Software projects consist of different kinds of artifacts: build files, configuration files, markup files, source code in different software languages, and so on. At the same time, however, most integrated development environments (IDEs) are focused on a single (programming) language. Even if a programming environment supports multiple languages (e.g., Eclipse), IDE features such as cross-referencing, refactoring, or debugging, do not often cross language boundaries. What would it mean for programming environment to be truly multilingual? In this short paper we sketch a vision of a system that integrates IDE support across language boundaries. We propose to build this system on a foundation of unified source code models and metaprogramming. Nevertheless, a number of important and hard research questions still need to be addressed.
Keywords: Programming environments, language interoperability, metaprogrammingProgramming environments are an important thread through Paul's research career. From the early papers on the ASF+SDF Meta-Environment to the Rascal programming language of today, a constant focus of Paul's work has been to improve the life of the programmer with better tools, better designs, and better languages. In the meantime the software landscape has only become more complex, more heterogeneous and more multi-faceted. This short paper envisions a programming environment that both embraces and unifies this multiplicity using one of Paul's favorite topics: metaprogramming. Thanks Paul, for our professional careers and for your friendship. We hope you enjoy reading this paper.