首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习编程语言的工作原理

学习编程语言的工作原理
EN

Stack Overflow用户
提问于 2009-10-04 08:41:48
回答 10查看 7.1K关注 0票数 16

我已经编程多年了(主要是Python),但我不理解当我编译或执行代码时幕后会发生什么。

在我之前问过的关于操作系统的question的脉络中,我正在寻找编程语言工程的温和介绍。我希望能够定义和理解编译器、解释器、本机代码、托管代码、虚拟机等术语的基础知识。了解这一点的有趣和互动的方式是什么?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-10-04 08:55:20

在nutshell中执行的代码

程序(代码)被输入到编译器(或解释器)中。

字符用于形成标记(+、标识符、数字),它们的值存储在称为符号表的东西中。

将这些标记放在一起形成语句:(int =6+b* c;)。主要以语法树的形式出现:

代码语言:javascript
复制
                     =
                    / \
                   /   \ 
                  a     +
                       / \
                      /   \
                     6     *
                          / \
                         b   c

在解释器中,树是直接执行的。

使用编译器,树最终被翻译成中间代码或汇编代码。

你现在有一个或多个“目标文件”。它们包含汇编程序代码,没有精确的跳转(因为这些值还不知道,特别是当目标位于其他目标文件中时)。目标文件通过一个链接器链接在一起,该链接器填充跳转的空白(ans引用)。链接器的输出是库(也可以链接)或可执行文件。

如果启动可执行文件,程序数据将被复制到内存中,并且会有一些其他链接来将指针与正确的内存位置相匹配。然后将控制权交给第一条指令。

票数 13
EN

Stack Overflow用户

发布于 2009-10-04 08:54:22

编译器、解释器和虚拟机只是实现细节的示例。你可能需要的是编程语言理论,生成语法,语言翻译器,你可能需要一些计算机体系结构来将理论与实现联系起来。

就我个人而言,我从Sebesta's book那里学到了东西。它对这个主题进行了非常广泛的介绍,但没有深入细节。它也有一个关于编程语言历史的很好的章节(大约20种语言~每种语言3篇论文)。它对语法和语言理论有很好的解释。此外,它还很好地介绍了Scheme、Prolog和编程范式(逻辑、函数式、命令式、面向对象)。

^它比前两个更专注于命令式范式。

票数 4
EN

Stack Overflow用户

发布于 2009-10-04 17:17:53

简单地说,就是编写。这些都是花哨的文本文件,它们被接收,输出某种形式的可执行代码(执行它的内容取决于您所说的代码类型)。编译器有几个部分:

  • 在文件上使用某种形式的来处理宏和类似的东西(如C语言中的宏)。
  • 是一种,它接收源文件,验证它们是否符合语言的语法规则,并将文件转换为内存中的数据结构,以便程序的其他部分更容易操作。它验证您编写的实际代码是否违反了语言的任何规则(例如,在不支持它的语言中的递归),以及许多其他things.
  • ,如尾部调用优化、循环优化和许多其他类型的optimizations.
  • ,,这是获取最终的和任何其他生成的数据并将其转换为某种可执行或interpreted.

的二进制文件的实际过程。

解释器是一种程序,它以某种形式的二进制数据表示未编译为目标机器可直接执行的代码的程序,并在其中运行命令。例如python、java和lua。

这是已编译成可由目标计算机直接执行的本机指令的代码。例如,如果您在x86架构上运行,那么c++将编译成处理器可以理解的可执行文件。

这通常是为模拟处理器的构造和操作而构建的程序。它可能像读取并根据字节码表示的命令运行本机语言操作的程序一样简单(尽管将其称为虚拟机可能有些夸张),也可能像完全模拟处理器和所有相关外围设备的行为一样复杂。

这些其他的答案都有很好的观点,但这些信息和链接应该能让你入门。任何其他问题,尽管问吧!

(这篇文章的大部分内容都是在维基百科的帮助下写的,但也有一些是凭记忆写的)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1515940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档