硕大的汤姆

硕大的汤姆

The official website of Minhua Chen

13 Feb 2023

先有鸡还是先有蛋

1. 先有某个语言的编译器还是先有编程语言?

在编译器领域有个概念叫自举(bootstrapping),也就是用一门语言实现该语言的编译器/解释器,然后用自己的编译器编译出自己的新编译器/解释器。

这是一个经典的鸡与蛋的问题,到底是先有编译器还是先有编程语言?一般来说创建一个新语言的过程是:

  • 设计好语言的spec。
  • 用其他语言实现这个语言的第一个编译器V1 (比如c语言的第一个编译器是b语言写得)。
  • 用这个编译器编译这个新语言的程序。
  • 用这个新语言实现这个语言的编译器V2,并用V1编译出V2。
  • 后面就可以自举了(改spec,用新的编译器编译出更新的编译器…)。

这个问题也变的很好回答了,如果你认为设计好语言的spec语言就算存在了,那么就是先有语言。如果你认为第一个该语言的hello world程序编译通过才算语言存在,那么就是先有编译器。

2. 先有人工智能还是先有程序?

如果人类文明被人工智能取代,人类从地球上消失,人工智能开始不断迭代并创造新版的人工智能。未来三体人来到地球,因为他们不知道世界上存在过人类,只知道是程序在生产程序,他们会不会也困惑,第一个AI到底是怎么生成的。

3. 先有鸡还是先有蛋?

我把这个问题抛给了chatgpt

  • 我:先有鸡还是先有蛋?
  • chatgpt: 一般来说,先有鸡。