浅谈编译技术的过去、现在和将来

2022-11-21

因为在计算机发展初期, 我们要想操作计算机需要学习如何与计算机交流, 当时沟通的方法只有0和1, 只有熟练使用0和1来表示程序的专业人员才能通过打孔卡或纸带操控计算机, 由于直接使用二进制编程的门槛极高, 使得除了特定的专业人员以外, 其他人学习使用计算机较为困难且周期较长, 不利于计算机的发展, 所以之后的计算机研究人员就设计了很多的高级程序语言, 使程序语言更贴近自然语言。虽然程序语言还是有其特定的结构, 但也极大地降低了编程的门槛。但由于机器不能识别高级语言, 所以这就需要一个翻译程序来使计算机“读懂”程序员所写的高级语言。

一、早期编译技术

最初的编译技术都是用机器语言编写程序, 机器语言是机器实际操作的数字代码[1]。但是编写这样的代码既费时又繁琐, 所以就出现了汇编语言, 被汇编语言所取代。在汇编语言结构中, 汇编语言用符号表示指令和存储器地址, 汇编程序是将这些符号代码翻译成与机器语言对应的数字代码[1]。特别是在编码要求极快的速度和极高的简单性时, 汇编语言极大地提高了编程的准确性和编程的速率, 并且至今仍在使用。然而, 汇编语言也存在着许多不足:编写比较麻烦, 阅读和理解也很困难。因为汇编语言的编写取决于特定的计算机, 所以要想用于另一台计算机必须改写该汇编程序。编程技术发展的下一步是以更简洁的形式编写程序[2]。该形式更接近数学定义或自然语言, 它应该独立于任何机器, 并且可以由程序转换为可执行代码。

20世纪50年代, 当时的编译技术最初只允许简单的单目操作, 之后开发出了一批高级语言和编译系统接着研究并开发了编译器自动生成工具和编译程序的编译系统。自20世纪60年代以来, 人们开始使用自我扩展技术来构建编译器。在20世纪70年代末和80年代初期, 许多科研团队研究编译器其余部分的自动化, 包括代码生成。但由于人们对其了解不足且操作太过繁琐所以并未取得多少成就。

二、目前流行的编译技术

(一) 并行编译技术

(1) 使用重构技术并行化串行程序就是用现有串行语言编写的程序分解为可并行的部分, 并将其分发配给多个CPU或处理器运行。

(2) 直接编写并行程序。

(二) 交叉编译技术

通常使用交叉编译的技术进行移植, 将主机上的现有软件移植到另一台目标机器的过程称为移植[3]。

(三) 动态编译技术

动态编译是在编译运行时进行程序变换, 是使用运行时给出的信息进行全面优化程序的过程。因此, 使用动态编译技术可以极大地扩展优化范围, 从而生成更加高效的代码。

三、未来的编译技术

(一) 多核处理器编程

与原始单核技术不同, 多核编程更侧重于程序体系结构、任务分派和每个处理器的负载。

多核处理器的编译过程, 一般要经过如下若干步骤:

(1) 代码划分;

(2) 分别编译;

(3) 执行代码的组织。

(二) 复杂软件系统的安全性和可靠性

软件系统正在日益复杂化, 使解决程序缺陷和安全攻击问题变得更为迫切, 面临诸多挑战:

(1) 开发自动的程序验证技术;

(2) 安全风险, 其目标是开发相关的策略来检测程序对外部攻击的抵御能力;

(3) 最重要就是除错, 其任务是开发相关的工程技术来帮助检测和避免程序缺陷。

要解决这些难题, 编译器领域需要改变现存的研究模式, 并且必须在程序分析方面做更多工作, 这样使编译器可以帮助避免运行结果出错以及各种安全风险。

(三) 移动领域的编译技术

智能手机的发展极为迅速, 手机的更新换代周期非常短暂, 而在移动领域跨平台使用交叉编译技术将具有更强的竞争优势, 所以移动领域的编译技术发展显得极为重要。

四、结语

总的来说编译技术的核心是把同样的逻辑结构和思想从一种语言表示转化成另一种语言表示。编译技术的发展与计算机的发展密切相关, 在一定程度上可以说编译技术的发展体现了计算机发展的成果[4]。

摘要:编译就是将源程序语言 (高级程序语言) 翻译成逻辑上等价的目标程序语言 (机器语言即在计算机上可以识别的语言即0和1或汇编语言) 的过程。编译技术就是研究这一过程的思想方法、理论和技术。从本质上说, 编译其实是一个算法的问题, 但由于它复杂度较高, 所以设计这个问题的算法也极其复杂。这里的算法与我们所学习的数据结构中的算法略有不同。数据结构中的算法是基本算法, 我们可以用它来解决生活中遇到的问题, 而编译中的算法是用来解决人与计算机交流的算法。

关键词:编译技术,程序语言,算法,代码

参考文献

[1] 朱少波.基于GCC开发C编译器的研究与实践[D].浙江大学, 2003.

[2] 苏斐琦.交叉编译系统的研究与实现[D].浙江大学, 2003.

[3] 张亚娟, 冯灵霞, 王学春.编译技术的发展及应用[J].软件导刊, 2010, 09 (9) :78-80.

[4] 万峰松.数据结构类C语言的研究与实现[D].安徽大学, 2009.

上一篇:民办高校应用型金融专业人才培养的困境下一篇:浅析高职学院学生心理障碍的成因与矫治

本站热搜