软件系统的符号计算视角
A Symbolic Computing Perspective on Software Systems
AI总结:
本文从符号数学计算系统六十余年的发展出发,总结其在语言设计、系统抽象、编译器、代码可移植性和人才培养方面的经验与观点。
摘要:
六十多年来,符号数学计算系统一直充当软件系统“煤矿中的金丝雀”。它们引入了或较早采用了动态内存管理、任意精度算术和依赖类型等编程语言思想。这些系统的特点是高度复杂,同时又运行在结果定义明确且可清晰验证的领域中。这些软件系统跨越多个抽象层,关注点从指令调度、缓存压力,一直到代数几何中构造的算法复杂性。所有主要的符号数学计算系统都包含用于算术、内存管理和其他原语的底层代码,一个面向定制编程语言的编译器或解释器,一个高级数学算法库,以及某种形式的用户界面。每一部分都会引发多个深层次问题。我们呈现从这一环境中获得的一些经验教训,以及围绕若干主题的自由观点,包括:软件如何跨越不同架构和数十年时间保持可移植性;应当采用和应当避免的基础设施;如何选择作为构建基础的基本抽象;如何充分利用小型代码库;编译器中用于优化和验证代码的发展为何过去始终并且现在仍然至关重要,同时仍存在大量挑战;为何需要尤其是像 Alan Mycroft 这样能够从手工编写 Z80 机器代码延伸到最深奥的高级代码分析技术的人才;以及为何向下一代传授全栈思维非常重要。
英文摘要:
Symbolic mathematical computing systems have served as a canary in the coal mine of software systems for more than sixty years. They have introduced or have been early adopters of programming language ideas such ideas as dynamic memory management, arbitrary precision arithmetic and dependent types. These systems have the feature of being highly complex while at the same time operating in a domain where results are well-defined and clearly verifiable. These software systems span multiple layers of abstraction with concerns ranging from instruction scheduling and cache pressure up to algorithmic complexity of constructions in algebraic geometry. All of the major symbolic mathematical computing systems include low-level code for arithmetic, memory management and other primitives, a compiler or interpreter for a bespoke programming language, a library of high level mathematical algorithms, and some form of user interface. Each of these parts invokes multiple deep issues. We present some lessons learned from this environment and free flowing opinions on topics including: * Portability of software across architectures and decades; * Infrastructure to embrace and infrastructure to avoid; * Choosing base abstractions upon which to build; * How to get the most out of a small code base; * How developments in compilers both to optimise and to validate code have always been and remain of critical importance, with plenty of remaining challenges; * The way in which individuals including in particular Alan Mycroft who has been able to span from hand-crafting Z80 machine code up to the most abstruse high level code analysis techniques are needed, and * Why it is important to teach full-stack thinking to the next generation.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。