A Symbolic Computing Perspective on Software Systems

Arthur C. Norman, Stephen M. Watt
{"title":"A Symbolic Computing Perspective on Software Systems","authors":"Arthur C. Norman, Stephen M. Watt","doi":"arxiv-2406.09085","DOIUrl":null,"url":null,"abstract":"Symbolic mathematical computing systems have served as a canary in the coal\nmine of software systems for more than sixty years. They have introduced or\nhave been early adopters of programming language ideas such ideas as dynamic\nmemory management, arbitrary precision arithmetic and dependent types. These\nsystems have the feature of being highly complex while at the same time\noperating in a domain where results are well-defined and clearly verifiable.\nThese software systems span multiple layers of abstraction with concerns\nranging from instruction scheduling and cache pressure up to algorithmic\ncomplexity of constructions in algebraic geometry. All of the major symbolic\nmathematical computing systems include low-level code for arithmetic, memory\nmanagement and other primitives, a compiler or interpreter for a bespoke\nprogramming language, a library of high level mathematical algorithms, and some\nform of user interface. Each of these parts invokes multiple deep issues. We present some lessons learned from this environment and free flowing\nopinions 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\nalways been and remain of critical importance, with plenty of remaining\nchallenges; * The way in which individuals including in particular Alan Mycroft who has\nbeen able to span from hand-crafting Z80 machine code up to the most abstruse\nhigh level code analysis techniques are needed, and * Why it is important to teach full-stack thinking to the next generation.","PeriodicalId":501033,"journal":{"name":"arXiv - CS - Symbolic Computation","volume":"37 1","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2024-06-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"arXiv - CS - Symbolic Computation","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/arxiv-2406.09085","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0

Abstract

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.
软件系统的符号计算视角
六十多年来,符号数学计算系统一直是软件系统煤矿中的金丝雀。它们引入或较早采用了编程语言的思想,如动态内存管理、任意精度运算和依赖类型。这些软件系统具有高度复杂的特点,同时又在一个结果定义明确、可清晰验证的领域中运行。这些软件系统跨越多个抽象层,关注的问题从指令调度和高速缓存压力到代数几何构造的算法复杂性。所有主要的符号数学计算系统都包括运算、内存管理和其他基元的底层代码、定制编程语言的编译器或解释器、高层数学算法库以及某种形式的用户界面。其中每一部分都涉及多个深层次问题。我们将介绍从这一环境中汲取的一些经验教训,并就以下主题发表自由观点:* 软件在不同架构和不同年代的可移植性; * 需要采用的基础架构和需要避免的基础架构; * 选择构建基础抽象的方法; * 如何从小型代码库中获得最大收益; * 编译器在优化和验证代码方面的发展一直以来和现在都具有至关重要的意义,同时还面临着许多挑战;* 为什么向下一代传授全栈思维非常重要?
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信