Compilation 所有编程语言都是按顺序读取的吗?

Compilation 所有编程语言都是按顺序读取的吗?,compilation,programming-languages,computer-science,Compilation,Programming Languages,Computer Science,我似乎找不到直接的答案。使用几个搜索引擎给我的结果非常模糊,或者只回答了一半的问题 那么,更详细地说,当你编写一个程序并对其进行编译/解释时,计算机是按时间顺序读取每一行,还是默认情况下跳过 示例: 使用C风格的源代码,因为这是我想到的第一件事 上面您可以看到有三行代码,当运行时,它们将按顺序运行并按所述顺序输出到控制台 我假设,除非要求跳转到源文件中的特定代码部分,否则它将按顺序读取每一行代码。那么这就是在计算机中解释程序的方式,所有编程语言都是这样编译/解释的吗?程序如何读取特定语言 我知道

我似乎找不到直接的答案。使用几个搜索引擎给我的结果非常模糊,或者只回答了一半的问题

那么,更详细地说,当你编写一个程序并对其进行编译/解释时,计算机是按时间顺序读取每一行,还是默认情况下跳过

示例: 使用C风格的源代码,因为这是我想到的第一件事

上面您可以看到有三行代码,当运行时,它们将按顺序运行并按所述顺序输出到控制台

我假设,除非要求跳转到源文件中的特定代码部分,否则它将按顺序读取每一行代码。那么这就是在计算机中解释程序的方式,所有编程语言都是这样编译/解释的吗?程序如何读取特定语言

我知道这是一个关于编程语言和计算机科学的基本问题,但我想澄清一下,目前还没有任何具体的答案


我可能在搜索时对这个问题的措辞不正确——这可能就是我没有找到任何东西的原因。谢谢

答案在很大程度上取决于一些先决条件

首先,存在所谓的“脚本”编程语言。 这个名字本身几乎概括了这种翻译的方法 当执行用该语言编写的程序时,语言需要:因为 是字面上的脚本,它们按顺序读取并按顺序执行 口译员读出完整的语句

换言之,因为脚本应该被读取 从上到下,各种东西的定义必须是一致的 早于使用物品的地方

与之相反,编译语言通常给予更多的自由 给程序员。例如,在现代语言中,它经常 可以在使用类型的位置下方以文本形式声明类型 声明/定义这些类型的变量或使用 那些类型的

但据推测,“脚本”之间存在着更深刻的区别 和编译语言:对于后者,作为媒介的文件更多 声明性的而不是命令性的

举个例子。 Go程序的所有源代码都被组织成“包”。 包由位于特定目录中的所有源文件组成 并且有一个通用的包声明。 现在,位于特定包的文件中的任何代码段 能够使用任何其他符号(包级别变量、类型或 该包的一个函数),无论该符号确切地定义在哪个文件中,以及该文件中的哪个位置

所以这就是“总体上”的工作原理。 如果您对编译器如何精确地处理源文件感到好奇, 然后我想这些天他们倾向于“咕噜咕噜”然后大量进入记忆 或者以流式的方式阅读它们——边读边解析它们的内容

这根本不重要,因为编译器不会以某种方式直接 转换源代码文件中写入的内容,而不是生成 所谓的抽象语法树是从这些内容中提取出来的,然后 将这些AST转换为目标机器(或VM)代码,这本身, 通常发生在几个阶段-都使用自己的方便 中间表示法

TL;博士 编译器如何读取文本文件的问题并不重要:
这是一个枯燥无味的微小实现细节。;-)

在大多数情况下,除非使用多线程,否则代码语句将在“主”线程中运行并按顺序执行,并且在前一个语句完成之前不会转到下一个语句

如果使用多线程,则无法保证在单独线程中出现的语句顺序

但在同一线程中,语句总是按顺序执行


一些高级语言仍然支持“goto”语句,它允许您跳转,但这是不受欢迎的,因为它会创建“意大利面”代码,使用循环构造和调用方法是首选方法。

目前广泛使用的几乎所有编程语言实现都将整个源文件读入内存,然后在编译或执行任何源文件之前转换为一个或多个更高级别的表示

例如,如果运行此Python程序:

print "first line"
print print "<- error on this line"
打印“第一行”

印刷品“一般来说,代码是按顺序解释的,是的。为什么不呢?诚然,您的问题并没有考虑诸如面向对象代码、异步代码等内容。但是,当编译器或解释器读取文件时,我希望它从头到尾读取该文件。它如何处理从该文件读取的信息取决于该编译器。你问这个有什么特别的原因吗?谢谢!我知道这是一个普通的问题,可能会被否决,但我还是想问。我只是想知道。我搜索了这个问题,因为我想知道为什么大多数机器学习模型可以在jupyter笔记本中运行和停靠,这是一个“顺序接口”,即一次按顺序运行一件事。循环、goto和线程都不会影响源代码的读取顺序。我不知道,我觉得它真的很有趣!这东西很吸引人,我认为对它有更深入的理解将提高编程经验。
print "first line"
print print "<- error on this line"
  File "temp.py", line 2
    print print "<- error on this line"
              ^
SyntaxError: invalid syntax