I here conduct an exploration of programming language extensibility, making an argument for an often overlooked component of conventional language design. Now, this is not a technical detailing of these components, rather, I attempt to provide an overview as I myself have lacked during my time investigating programming languages. Thus, read this as an introduction to the magical world of extensibility. Through a literature review, I identify key extensibility themes - Macros, Modules, Types, and Reflection - highlighting diverse strategies for fostering extensibility. The analysis extends to cross-theme properties such as Parametricism and First-class citizen behaviour, introducing layers of complexity by highlighting the importance of customizability and flexibility in programming language constructs. By outlining these facets of existing programming languages and research, I aim to inspire future language designers to assess and consider the extensibility of their creations critically.
翻译:本文对编程语言的可扩展性进行了系统性探讨,旨在论证传统语言设计中常被忽视的这一重要组成部分。需要说明的是,本文并非对这些组件的技术细节阐述,而是试图提供一份笔者在研究编程语言过程中始终缺乏的综合性概述。因此,读者可将本文视为通往可扩展性奇妙世界的入门指南。通过文献综述,本文识别出四大关键可扩展性主题——宏(Macros)、模块(Modules)、类型(Types)与反射(Reflection),并着重阐释了促进可扩展性的多样化策略。研究进一步延伸至跨主题特性,如参数化(Parametricism)与一等公民行为(First-class citizen behaviour),通过强调编程语言构造中可定制性与灵活性的重要意义,揭示了该领域的多层复杂性。通过勾勒现有编程语言与研究在这些维度的表现,本文旨在启发未来的语言设计者以批判性视角评估并考量其创作的可扩展性。