第一个计算机程序是如何创建的? [复制]

2024-01-11

可能的重复:
第一个编译器是如何编写的? https://stackoverflow.com/questions/1653649/how-was-the-first-compiler-written

这个问题一直困扰着我。 编译一个程序需要编译器,编译器也是程序的一种,那么什么编译器编译呢? 有人告诉我,第一个编译器是用汇编代码或机器代码编写的。 但仔细想想,这还不是完整的故事。毕竟,在没有操作系统和驱动程序的情况下,机器代码如何从硬盘驱动器到 RAM 再到 CPU?驱动程序必须以某种方式进行编程。

我知道最早期的计算机有开关,可以通过拨动开关来指示位。我想知道如何实现从开关到让 CPU 读取机器代码而不需要计算机程序告诉它这样做的方式的飞跃。


简而言之:第一个程序是用原始机器代码精心编写的,一切都是从那里构建的。

这个想法被称为引导 http://en.wikipedia.org/wiki/Bootstrapping。假设您有一台带有处理器、一些闪存和硬盘的裸机。通常,处理器在加电时配置为加载一个称为引导装载程序来自非易失性存储器(例如 CMOS 或闪存)中的固定位置。这个操作系统非常简单,并且具有足够的功能来将计算机指向真正操作系统所在的磁盘位置。然后这个操作系统可以打开越来越多的设备并加载越来越复杂的程序,直到最终整个操作系统启动并运行。

但是这个bootloader是用什么写的呢?最初,这些是用原始机器代码编写并硬编码到机器中的。它将运行的程序也将用机器代码编写,这将是令人难以置信的缓慢和乏味的工作。最终,有人用机器代码编写了第一个简单的汇编程序。一旦有了这个汇编程序,您就可以开始用汇编语言编写程序,包括汇编程序本身。事实上,一旦你有了一个简单的汇编程序,你就再也不需要编写机器代码了。你可以继续用汇编语言编写汇编程序!

从这一点开始,您可以通过首先使用现有工具(例如汇编器)编写编译器来构建更复杂的编程语言,以获得足够的可用功能,以便编译器可以进行基本编程。然后,您使用该编译器为编程语言本身编写一个编译器,并使用相同的技巧在您之前的工作基础上进行构建,以获得更大、更酷的东西。这种技术至今仍在使用——大多数编译器都是用它们编译的语言编写的。

总而言之,在过去的某个糟糕的时刻,一切都必须手工完成,但由于这些人的辛勤工作,我们可以在已有的基础上进行构建。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第一个计算机程序是如何创建的? [复制] 的相关文章

随机推荐