代码之家  ›  专栏  ›  技术社区  ›  Kelly S. French

对于编译器是什么有简单的解释吗?

  •  2
  • Kelly S. French  · 技术社区  · 14 年前

    在一篇关于 C++ compiled app “我很惊讶没有关于这个基本主题的任何问题或答案。即使在meta上搜索也没有发现任何有用的信息,无论是在 explaining compilers beginning compiler questions 一般来说。

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

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

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

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

    上的维基百科条目 compilers .

    2 回复  |  直到 14 年前
        1
  •  3
  •   haylem    14 年前

    简短的回答

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

    因此,编译器只是将(通常是正式的)人类语言转换为(通常更为正式和最低限度的)机器语言或指令集的静态翻译程序。

    要记住的一些区别

    也就是说,通常术语“编译”会与描述完整软件生产周期其他步骤的其他术语混淆,并可用于参考步骤,如 pre-processing预先形成,例如可能使用 meta programming concepts)或 linkage(组装多个中间对象)。

    一个典型的例子可能是C程序中的一个,它用一条命令行编译,但实际上它将多个 .c (source)和 .h (header)文件处理成多个 .o (object)文件,然后可能将这些文件链接到多个 .a (assembly/library)文件以生成输出程序( .exe、 .out、 、…)或另一个 .a. .dll. .so. (assembly for dynamic or shared library for different platforms.)。

    所述步骤也可以通过执行多个命令行来执行,以解除发生的不同操作。


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


    图形由 wikipedia 's compiler page

    Ler会,并将广泛的解释留给 Wikipedia's Compiler page,我只想说,一般来说,编译器是一种计算机软件,它将以给定形式编写的输入源代码(通常针对人的可读性)转换为压缩形式的输出程序(通常针对机器执行)。或者,所述软件在处理过程中可能经历几个阶段并产生多个中间形式,并且可能需要执行多个过程并将多个输入源合并为一个或多个输出。

    因此,编译器只是将(通常是正式的)人类语言转换为(通常更为正式和最少)机器语言或指令集的静态转换器。

    要记住的一些区别

    也就是说,通常术语“编译”会与描述完整软件生产周期的其他步骤的其他术语混淆,并可用于引用以下步骤: pre-processing (在处理前准备输入并提前应用其他类型的转换,例如可能使用 meta-programming 概念)或 linkage (组装多个中间对象)。

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

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

    Multi-Language Compilation Process


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


    图片由 Wikipedia Compiler

        2
  •  5
  •   Tim Robinson    14 年前

    我正要回答,但维基百科文章的第一句话几乎和我要输入的内容相同:

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