APP下载

计算机代数系统的设计与实现

2021-09-26长治学院郜慧敏

电子世界 2021年16期
关键词:编译器代数运算

长治学院 郜慧敏

计算机代数系统是结合计算机软件来进行的操作系统,该系统的实现的功能:符号演算、数值计算、快捷作图等,在殷志云,黄立的计算机代数语言与CA SSDR系统报告中所提出的CA SSDR系统的组成部分有:REDU CE、M athem atica。其中REDU CE构成部分有着强硬的公式推演功能,athem atica构成部分有着强大的作图功能能够快速的将系统图构建出来,这两者的优点通过结合集成在CA SSDR系统中,在提升运算能力的同时将计算过程通过维度的图像展示在操作者面前,给操作者带来详细的计算过程。在现实中该系统已经应用在数学的求方程的代数解、隐函数的求导、求微分方程等数学内容中。在过去只能利用纸笔来进行求解运算,然后再通过大脑进行储存、思考运算,伴随着计算机大似乎系统的盛行将这一过程简化,很有效的释放了人类的脑力劳动。计算机代数系统的诞生给我们运算过程中带来了新的思想已经新的运算工具,给那些我们难以解决的复杂符号运算或数值运算的理论上及实际存在的问题带来了强有力的技术支持以助于我们进行解决。在计算机代数系统的发展演变历史中,也有着诸多不成熟的方面。如:该系统在对不同的学科机械能研究时候明显会存在吃力的现象。因此数据网络信息化时代的当今,设计出高效、多维度的、跨领域的计算机代数系统是重要的发展趋势。

1 计算机代数系统特点

计算机代数是一门建立在数学和计算机之上的学科。它的运算采用符号运算方法,对复杂的数学公式问题进行求解,由计算机软硬件系统完成。微型计算机代数系统是一个包含了大量软件的运行平台和处理平台。它的代数体系有以下特点:(1)符号操作。其基本思想是CAS语言,主要体现在符号的数字化表示上。运算符号不仅包括简化、替换等基本运算,还包括分解、求导等复杂运算。(2)高精度数字操作。计算机代数系统在计算过程中必须满足用户对大量数值计算的要求,余量必须超过10万个。这类大型数值计算对一般编程语言而言已超出其承载范围。计算机代数的发展对我国教育、科研具有重要意义。但是,在计算机代数教学中遇到的一些难题,只需几步即可解决,减少了手工操作,避免了人为操作带来的误差。微机代数系统是计算机、数学、物理化学等学科研究的重要工具。目前,解决计算机代数系统问题的主要方法是为用户提供一种编程语言,利用系统的符号运算能力和较高的运算精度,使得用户的使用更加方便。

2 计算机代数系统的设计方法

在计算机代数系统的发展中,人们对其的重视主要是在计算机的普及和人工智能技术等技术的兴起之后。国外研发的计算机代数系统主要是Maple和Mathematicao,在计算机代数系统中编译器的设计以及实现是最关键的步骤。

2.1 计算机代数系统的设计特点

现如今的计算机代数系统,无论是在哪种界面中,只要是对用户所输入的指令进行接受处理过程中,核心部位的编译器起到了十分重要的作用,编译器对指令的识别、分析、检查、处理等步骤进行精确的控制,除此之外还要进行高精确度的整数处理以及符号处理等功能,并将这些功能对应的指令进行分配。而对于支撑编译器的虚拟机机解释器部分在计算机代数系统中只是以辅助的形式存在,在整个系统功能上并不占有主导作用。这一设计模式的不足之处在于:编译器模块过大、结构过于复杂化,使得计算机代数系统编译器在进行开发时候十分困难,进而影响到计算机代数系统的维护和扩展。本文将要进行阐述的CMCL编译器是区别于一般的计算机代数编译器的,其中所涉及的GiNaC是2000年在德国研发的一种Linux开发源码的符号计算包,在结构中的用户界面是CMCL对外所展示的界面,这一步骤能够和用户之间搭建一条通道来实现操作及信息的交互。如:用户在编辑输入框输入需要进行操作的指令,然后用户界面会将这个指令传达到位于下层的CMCL编译器中来进行运算处理,然后将最终的结果反馈给用户。

2.2 编译器的设计

CMCL编译器的设计笼统的来说有:词法分析器、语法分析器、语义分析器、代码生成器、解析器、表格管理、出错管理、主控器这几个模块来实现,其中这些模块所存在的关系如图1所示。

图1 模块关系结构图

且各个模块对应的功能也不同,如:(1)词法分析器。对程序中的存有的字符按照语言中的词法规则进行扫描、并同时进行单词符号输出和检查;(2)语法分析器。这一模块是重要的核心模块,这一模块在编译器对源代码进行处理时候,能够对源代码中存在的字符串及符号进行语法的识别检查,为下一模块的语义分析做好充足的准备。(3)语义分析器。该模块主要对源语言的类型、控制流以及唯一性进行检查和定义。(4)代码生成器。该模块是对于源代码在经历上述的三个模块后并无任何错误产生时候,就可由这一模块将那个源代码转化成虚拟机能够理解和进行操作的指令。(5)解释器。解释器是用来执行代码生成器所产生的目标指令。(6)表格管理。该模块是为经历过编译的信息提供存储场所,并供给信息相应的修改、检查功能。(7)出错管理模块。这一模块是对源代码进行一个诊断检查,并精确的给出错误位置和错误原因。(8)主控器模块。协助结合其他模块机械能信息交互控制,对相应对接用户界面,来进行接收用户信息和处理结果的反馈。

2.3 虚拟机的设计

编译器的设计在每一台目标机中进行设计的可行性很低,(目标机:编译器所针对的具体机器)且编译器在进行运作时候是结合硬件部位一起进行的,因此在这时候就需要虚拟机的增设。虚拟机顾名思义就是抽象化的模拟出一个虚拟的目标机。在CMCL编译器中虚拟机的搭设是为了实现像高精确度整数的表示等这类功能而设计的。虚拟机的设计需要根据一下两个思想来进行:(1)源程序可移植性思想。CMCL编译器是依赖前端及后端功能所进行实现的,前端对元语言进行处理,后端则视为目标机的运作。这俩个端口都利用了虚拟机来,虚拟机将前端和后端独立分开,这样当需要将编译器进行转移时候就能只需考虑硬件部位在进行编译器的后端开发;(2)为特殊的数据结构提供相应的支持思想。在虚拟机设计中,可以通过特殊数据结构来进行存储或诠释突破常规长度的整数,并在功能上赋予其加减乘除的运算。与此同时将其数据类型进行重新定义,进一步深入创建更为复杂的数据类型。虚拟机的设计从另外一个角度讲就是为了支持特殊的数据结构所建设的。CMCL编译器的符号计算能力很大程度上是由虚拟机来支持的。因为我们的CMCL虚拟机是被设计为支持符号计算的虚拟机。在CMCL虚拟机中,最小的数据类型被设计为支持符号计算的最小数据操作单位,因此所有在CMCL虚拟机中操作的数据单元都支持符号计算。这使得编译器的前端可以把“符号”作为一种基本数据类型来操作,就象整型,浮点,字符等等,而无需考虑它的存储,表示,运算。并且在后端代码生成阶段,所有源程序的基本类型(整型,浮点,符号等)都转换成虚拟机支持符号计算的类型。CMCL虚拟机中支持符号计算的基本数据类型主要是由GiNaC库来支持。这样的设计一方面要使得虚拟机能很容易地模拟各种语言结构所规定的操作,另一方面还需考虑能在实际计算机上高效地实现虚拟机所定义的操作。虚拟机的指令是一种介于机器语言和高级程序设计语言之间的伪机器语占。它一方面与机器语言所定义的机器指令结构相近,另一方面它也比机器指令高级,比较容易理解。

3 计算机代数系统的实现方法

CMCL编译器可以将一种语言过渡到另外一种语言,这一过程十分复杂。因此再进编译器的设计时候可以采用较为温柔且高级的语言来进行,如:采用自举的研发思想方法进行,其在研发中所给出的意思大致是用语音功能来进行对自身的编译,在如今已将这一想法扩展到用高级语言功能来实现高级语言编译器中。高级语言实现编译器的过程简短快速,且编译程序易懂,便于维护。

在整个计算机代数系统中编译器一直是一个核心的关键部位,能够将所构成其的模块进行调用处理。虚拟机以作为编译器的虚拟硬件的条件存在于计算机代数系统中,因此在整个系统中这一部位的性能决定了效率。

结束语:本文对计算机代数系统的背景、发展意义、编译器设计特点和构成、虚拟机的设计以及编译器的实现方法进行概述。给出了编译器模块中存在的关系及其各个模块的功能,并通过假设分析法对实现方法进行验证。除此之外还可以进行。

猜你喜欢

编译器代数运算
重视运算与推理,解决数列求和题
两个有趣的无穷长代数不等式链
Hopf代数的二重Ore扩张
什么是代数几何
有趣的运算
基于相异编译器的安全计算机平台交叉编译环境设计
“整式的乘法与因式分解”知识归纳
一个非平凡的Calabi-Yau DG代数
通用NC代码编译器的设计与实现
编译器无关性编码在微控制器中的优势