{"title":"软件系统的符号计算视角","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":"{\"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}","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}
A Symbolic Computing Perspective on Software Systems
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.