《C编程技巧:117个问题解决方案示例 》 —1.6 编译和解释语言

举报
华章计算机 发表于 2020/02/12 13:49:12 2020/02/12
【摘要】 本节书摘来自华章计算机《C编程技巧:117个问题解决方案示例 》 一书中第1章,第1.6节,作者是希里什·查万(Shirish Chavan),卢涛 译。

1.6 编译和解释语言

当计算机科学家设计新的编程语言时,主要问题是在各种平台上实现该语言。实现语言有两种基本方法:

编译:高级语言的代码被翻译成低级语言。创建一个文件来存储编译或翻译后的代码。然后,你需要通过提供适当的命令来执行已编译的代码。

解释:代码中的指令由虚拟机(或解释器)逐条解释(执行)。不创建文件。

现在详细讨论这两种方法。

编译

在编译方法中,高级语言的源代码被翻译成实际机器的机器语言。FORTRAN、Pascal、Ada、PL/1、COBOL、C和C++都是编译语言。例如,考虑一个在屏幕上显示文本“Hello”的C程序。假设hello.c是包含此程序源代码的文件(C源代码文件的扩展名为.c)。C编译器编译(或翻译)源代码并生成可执行文件hello.exe。文件hello.exe包含实际机器的机器语言指令。你现在需要通过提供适当的命令来执行文件hello.exe,并且执行文件hello.exe不是编译过程的一部分。在Windows平台上准备的可执行文件hello.exe只能在Windows平台上执行,根本无法在UNIX平台或Linux平台上执行此文件。但是,可以使用适用于所有平台的C编译器。因此,可以在UNIX或Linux平台上加载适当的C编译器编译文件hello.c,以生成可执行文件hello.exe,然后在该平台上执行它。

编译语言的主要好处是编译程序的执行速度很快。编译语言的主要缺点是程序的可执行版本依赖于平台。

解释

在解释方法中,通过添加期望数量的软件层来创建虚拟机,使得高级语言的源代码是该虚拟机的“机器语言代码”。例如,BASIC语言是一种解释语言。考虑一个在屏幕上显示文本“Hello”的BASIC程序。假设此程序的源代码存储在hello.bas文件中。hello.bas中的源代码被送到BASIC虚拟机,并且BASIC虚拟机逐条解释(执行)hello.bas中的指令。另请注意,hello.bas中的编程语句是BASIC虚拟机的机器语言指令。在解释过程中不会创建新文件。

解释语言的主要好处是程序与平台无关。解释语言的主要缺点是程序的解释(执行)很慢。BASIC、LISP、SNOBOL4、APL和Java都是解释语言。

在实践中,很少使用纯粹的解释,如BASIC的情况。在几乎所有解释语言(例如Java)中,都使用编译和解释的组合。首先,使用编译器将高级语言中的源代码转换为中间级代码。其次,创建虚拟机,使得上述中间级代码是该虚拟机的机器语言代码。然后将中间级代码送到虚拟机以进行解释(执行)。最后,请注意所有脚本语言(例如Perl、JavaScript、VBScript、AppleScript等)都是纯粹的解释语言。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。