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