第一个计算机程序是如何创建的?

9 cpu

可能重复:
第一个编译器是如何编写的?

这个问题一直困扰着我.要编译一个程序,你需要一个编译器,它也是一种程序,那么编译编译器的是什么?有人告诉我,第一批编译器是用汇编或机器代码编写的.但考虑到这一点,那仍然不是完整的故事.毕竟,如果没有操作系统和驱动程序,机器代码如何从硬盘驱动器转移到CPU?司机必须以某种方式编程.

我知道早期的计算机有开关,允许你翻转开关指示位.我想知道如何从开关跳转到一种让CPU读取机器代码而不需要计算机程序告诉它这样做的方法.

tem*_*def 9

简短的回答:第一个程序是用原始机器代码精心编写的,一切都是从那里构建的.

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

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

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

总而言之,在过去的某些可怕的时刻,一切都必须手工完成,但多亏了这些人的辛勤工作,我们可以建立已经存在的东西.

  • "用原始机器代码编写"?用什么?文本编辑器?在磁盘上写磁化的针?那部分有点模糊...... (7认同)
  • 原始机器代码是用笔和纸写的.铅笔和纸张可能被认为是更好的,但橡皮擦的成本高于剔除错误并重写它们.根据需要翻转前面板开关以将位(字节)输入存储器.最终有人拿了一个记者的电传打字机并将其连接到计算机上,因此可以将纸币保存在纸带上并稍后再读回.其他人拿了数据仓库的打孔卡机并将它们连接到计算机上.其他人也用磁带做同样的事情.磁盘驱动器稍后出现. (5认同)

pax*_*blo 5

在微型计算机行业的早期,我们不得不费力地使用拨动开关直接输入机器代码。这与第一批非硬编码程序计算机的完成方式非常相似。

有关早期Altair机器的详细信息,请参见此处。基本上,您为地址和数据设置了二进制开关,然后使用命令开关将其写入内存。是的,一次一个字节。那时我们是“真正的男人” :-)

在同一站点上有用于输入示例程序的详细过程

您还应该记住,实际上不必 X机器编译X 机器的程序。一旦机器达到一定的复杂程度(例如,Y机器可以在不切换程序的情况下运行),则可以使用交叉汇编器和交叉编译器以实际为机器X创建机器语言。

然后,您只需要一种将程序的二进制映像放入X机的方法。虽然并不总是那么容易,但是比切换更容易。