Compiler construction 对什么是编译器有一个简单的解释吗?

Compiler construction 对什么是编译器有一个简单的解释吗?,compiler-construction,terminology,Compiler Construction,Terminology,在试图为一篇关于“”的帖子提供一个简单的答案时,我很惊讶没有任何关于这个基本主题的问题或答案。甚至在Meta上的搜索也没有发现任何有用的东西,无论是在网络上还是总体上 我们希望Stackoverflow成为一个寻找编程答案的好地方。我们不应该把如此基本的东西留给维基百科。一个简单的类比就是问一个木匠大师10便士的钉子是什么,然后被刷掉。当然,这是一个简单的问题,但是一个木匠如果认为解释这么简单的东西有失身份,那么他/她在最好的情况下只是一个势利小人,礼貌地,或者是一个混蛋 至少,这个问题提供了一

在试图为一篇关于“”的帖子提供一个简单的答案时,我很惊讶没有任何关于这个基本主题的问题或答案。甚至在Meta上的搜索也没有发现任何有用的东西,无论是在网络上还是总体上


我们希望Stackoverflow成为一个寻找编程答案的好地方。我们不应该把如此基本的东西留给维基百科。一个简单的类比就是问一个木匠大师10便士的钉子是什么,然后被刷掉。当然,这是一个简单的问题,但是一个木匠如果认为解释这么简单的东西有失身份,那么他/她在最好的情况下只是一个势利小人,礼貌地,或者是一个混蛋

至少,这个问题提供了一个收集Stackoverflow内部或外部编译器相关解释链接的地方

[我将此设置为CW,但没有看到复选框,它是否已被移动或删除?]

本着这种精神,我提供了有关编译器的维基百科链接。请编辑这篇文章,并提供更多编译器解释的链接


Wikipedia条目。

我正要提供答案,但Wikipedia文章的第一句话实际上与我要键入的内容相同:

编译器是一种计算机程序[…],它将用一种编程语言[…]编写的源代码转换成另一种计算机语言[…]

简短的回答 为了非常简要地总结一下编译器的作用,并将详细的解释留给佩奇,我只想说,一般来说,编译器是一种计算机软件,它将以给定形式编写的输入源代码(通常是针对人类的可读性)转换成压缩形式的输出程序(通常针对执行的机器)。或者,所述软件可能在处理过程中经历多个阶段并产生多个中间形式,并且可能需要执行多个过程并将多个输入源合并到一个或多个输出中

因此,编译器只是将一种(通常是正式的)人类语言转换成一种(通常更正式、更简约的)机器语言或指令集的静态转换器

要记住的一些区别 话虽如此,术语“编译”通常会与描述整个软件生产周期的其他步骤的其他术语混淆,并可能用于指(在处理之前准备输入并预先应用其他类型的转换,例如可能使用概念)或(用于装配多个中间对象)

一个典型的例子可能是一个C程序,它使用一个命令行进行编译,但实际上将多个
.C
(源)和
.h
(头)文件处理为多个
.o
(对象)文件,然后可能将这些文件链接到多个
.A
(程序集/库)文件以生成输出程序(
.exe
.out
,…)或其他
.a
.dll
.so
(用于不同平台的动态或共享库的程序集)

所述步骤也可以通过执行多个命令行来执行,从而分离发生的不同操作


这显然是一个面向IT世界的非常高级的解释,但毫无疑问,您可以引用术语“编译器”,用于将任何类型的输入转换为某种可执行或可用的其他类型的输出的其他软件和机器



图形由的页面提供

很酷的问题!管道、电气工程或房屋建筑可能是一个很好的隐喻。“我们不应该把如此基本的东西留给维基百科。”-我反对。如果维基百科上已经有一个完美无瑕的一般性解释(或者其他任何可以通过谷歌轻松找到的地方),没有必要在这里复制这些信息。我认为维基百科条目的信息量非常大。我很难改进这一条,除非你设定一个标准,比如,用20个单词解释编译器是什么(做一个“简单”的解释).不知何故,在我看来,维基百科页面确实完美地回答了这个问题。但我想我们可以试一试。维基百科是一个提供编程信息的好地方;我经常去那里浏览不熟悉的概念。维基百科的Huzzah引用了《龙之书》。+1.嘿,2票。事实上,我越想去,就越惊讶“改进”那个存根答案,我越觉得我需要更多的细节,以达到一个像文章一样的答案,或者需要再把它剥去,回到一句或两句话的答案。有趣的问题,尝试以一般的、综合的但不误导的方式回答。。。