代码之家  ›  专栏  ›  技术社区  ›  Matthew Scharley

在编程语言中,编译程序需要什么语言特性?

  •  8
  • Matthew Scharley  · 技术社区  · 16 年前

    编程语言似乎经历了几个阶段。首先,有人梦想一种新的语言,foo语言。编译器/解释器是用另一种语言编写的,通常是C语言或其他一些低级语言。在某种程度上,愚人会成熟和成长,最终会有人在某个地方为愚人编写编译器和/或解释器。

    我的问题是:什么是语言特性的最小子集,以便有人能够实现语言本身?

    5 回复  |  直到 16 年前
        1
  •  7
  •   Brad Gilbert    16 年前

    即使使用 Turing machine -A Universal Turing Machine 基本上是任何图灵机器的编译器/解释器,所以 Turing-complete 语言应该足够了:)

        2
  •  4
  •   Martin B    16 年前

    从理论上讲,几乎没有。一 computability theorist 你只需要说 mu-recursion 或A Turing machine 诸如此类。

    然而,从实际的角度来看,在图灵机中实现编程语言并不是很高兴。我想说,至少,您希望拥有所有常见的控制流构造、基本数据类型、子例程以及数组和结构。这应该足够让您在语言本身中实现语言的子集——然后您可以从那里引导自己。

        3
  •  2
  •   Yuval F    16 年前

    一种选择是 read-eval-print loop . 这可以用于构建许多更高级别的构造。我相信这是Lisp走的路。
    我对C的开始不确定,但我认为它是从一些系统调用开始的,这些系统调用实现分支、循环、赋值和单字符I/O,并在此基础上构建。

        4
  •  0
  •   Recursion    16 年前

    我假设一个装配工会进行切割。

        5
  •  0
  •   Rafał Dowgird    16 年前

    我的问题是:什么是语言特性的最小子集,以便有人能够实现语言本身?

    除了编译本身之外,没有任何要求要求对语言有用吗?我向你介绍 Useless 一种语言,其中每一个文本都是一个适当的程序,意思是“一个接受任何输入并自行生成的程序”(这也被称为 无用的 编译器)。

    推荐文章