Context: Software development tools should work and behave consistently across different programming languages, so that developers do not have to familiarize themselves with new tooling for new languages. Also, being able to combine multiple programming languages in a program increases reusability, as developers do not have to recreate software frameworks and libraries in the language they develop in and can reuse existing software instead. Inquiry: However, developers often have a broad choice of tools, some of which are designed for only one specific programming language. Various Integrated Development Environments have support for multiple languages, but are usually unable to provide a consistent programming experience due to different language-specific runtime features. With regard to language integrations, common mechanisms usually use abstraction layers, such as the operating system or a network connection, which are often boundaries for tools and hence negatively affect the programming experience. Approach: In this paper, we present a novel approach for tool reuse that aims to improve the experience with regard to working with multiple high-level dynamic, object-oriented programming languages. As part of this, we build a multi-language virtual execution environment and reuse Smalltalk's live programming tools for other languages. Knowledge: An important part of our approach is to retrofit and align runtime capabilities for different languages as it is a requirement for providing consistent tools. Furthermore, it provides convenient means to reuse and even mix software libraries and frameworks written in different languages without breaking tool support. Grounding: The prototype system Squimera is an implementation of our approach and demonstrates that it is possible to reuse both development tools from a live programming system to improve the development experience as well as software artifacts from different languages to increase productivity. Importance: In the domain of polyglot programming systems, most research has focused on the integration of different languages and corresponding performance optimizations. Our work, on the other hand, focuses on tooling and the overall programming experience.
翻译:: 软件开发工具应在不同程序拟定语言之间工作并保持一致,这样开发者就不必熟悉新语言的新工具。 此外,如果能够将多种编程语言结合到一个程序之中,则程序开发者不必以他们所开发的语言重新创建软件框架和图书馆,并且可以重新使用现有的软件。 调查:然而,开发者往往对工具有广泛的选择,其中一些工具只为一种特定的编程语言设计。 各种综合开发环境支持多种语言,但通常无法提供一致的编程经验,因为不同语言的运行时间特点不同。 关于语言整合,共同机制通常使用抽象的层次,例如操作系统或网络连接,这些层次往往是工具的界限,因而对编程经验产生消极影响。 方法:我们提出了一种全新的工具再利用方法,目的是用多种高水平的、面向目标的编程语言改进工作经验。 作为一部分,我们从多语言编程的虚拟执行环境,再利用小型对话的现场编程工具供其他语言使用。关于语言的现场整合,一个重要部分是不断更新的系统,一个工具,作为不同版本的操作工具,用来管理工具,作为不同版本。