Programming requires much more than just writing code in a programming language. It is usually done in the context of a stateful environment, by interacting with a system through a graphical user interface. Yet, this wide space of possibilities lacks a common structure for navigation. Work on programming systems fails to form a coherent body of research, making it hard to improve on past work and advance the state of the art. In computer science, much has been said and done to allow comparison of **programming languages**, yet no similar theory exists for *programming systems*; we believe that programming systems deserve a theory too. We present a framework of *technical dimensions* which capture the underlying characteristics of programming systems and provide a means for conceptualizing and comparing them. We identify technical dimensions by examining past influential programming systems and reviewing their design principles, technical capabilities, and styles of user interaction. Technical dimensions capture characteristics that may be studied, compared and advanced independently. This makes it possible to talk about programming systems in a way that can be shared and constructively debated rather than relying solely on personal impressions. Our framework is derived using a qualitative analysis of past programming systems. We outline two concrete ways of using our framework. First, we show how it can analyze a recently developed novel programming system. Then, we use it to identify an interesting unexplored point in the design space of programming systems. Much research effort focuses on building programming systems that are easier to use, accessible to non-experts, moldable and/or powerful, but such efforts are disconnected. They are informal, guided by the personal vision of their authors and thus are only evaluable and comparable on the basis of individual experience using them. By providing foundations for more systematic research, we can help programming systems researchers to stand, at last, on the shoulders of giants.
翻译:编程程序要求的远不止是用编程语言撰写代码。 它通常在一种显著的环境背景下,通过图形用户界面与系统互动。 然而,这种广阔的可能性空间缺乏一个共同的导航结构。 编程系统的工作未能形成一个连贯的研究体系,因此很难改进以往的工作并推进最新技术。 在计算机科学方面,已经有许多话并做了许多事情,以便比较** 编程语言**,但对于 * 编程系统 * 却不存在类似的理论; 我们认为,编程系统也需要一种理论。 我们提出了一个包含* 技术层面的框架,它反映了编程系统的基本特征,提供了构程系统的概念化和比较工具。 我们通过审查过去有影响力的编程系统及其设计原则、技术能力和用户互动的风格来确定技术层面。 在计算机科学方面, 技术层面可以捕捉到可以独立研究、比较和升级的特性。 编程系统只能以易于理解和建设性的方式谈论编程系统,而不是仅仅依靠个人印象。 我们的编程系统是使用非定性分析的系统。 我们的架构是用来提供编程系统的定性分析。 我们随后用两种具体的方法来分析我们的系统。 我们的编程, 利用框架的编程系统可以用来分析。