python

当前位置:首页 > 计算机底层基础 > 当前文章

计算机底层基础

第一个编译器是怎么写的?从哪来?

2020-03-28 183赞 python中国网
每篇文章努力于解决一个问题!python高级、python面试全套、操作系统经典课等可移步文章底部。

  第一个编译器是怎么写的?网上见过一篇写的比较好的文章,但是我感觉还是有逻辑上的漏洞,所以就再补充一些!!通过本站前面的文章我们知道计算机是人类通过电子管的方式实现的一些逻辑层面的运算和转换,计算机的本质就是一堆电路,只不过这些电路被赋予了人类头脑里的逻辑,产生了所谓的加法电路和减法电路。

  原始 CPU 是许多电路的集合。电路是由开关来控制的,每一个开关的通断就是抽象层面的0和1,也就是所谓二进制数据。

  1、此时此刻,编程就是拨通或者断开这些开关,没有传统意义上的编程语言。

  随着人类的改造,后来又发明出了穿孔打卡的方式,打孔的卡上面有很多排线,每条线都有可以打的孔,这些线和开关相互匹配。这种方式能够更简单方便地切换开关。

  2、此时此刻,人类不在直接操作开关了,改为去打孔,你打的孔决定了计算机发生什么样的运转。编程就是打孔,也可以说人类在打孔卡上面写程序。

  就像女娲造人一样,每个人的样子一样就不用手来捏了,发明个模具出来很快就能造个人!打孔卡也一样,让计算机完成同样的功能只要保存一个打孔卡上的孔即可,这减少重复工作,避免了重复造轮子。

  随着对计算机的使用,针对相似的功能人们开始构建程序库。大部分的程序渐渐的有了一些规则手册来指导编写,虽然比之前手动控制开关方便了,但还是很繁琐。

  这时候,格雷斯·霍珀(Grace Hopper)出现了一个革命性的想法。

  她想设计一种程序,让人可以用类似人类的语言把想做的事写下来,然后用这个程序把它转为真正能让计算机实现这个的事的机器指令。这个想法就是今日的 Compiler (编译器)。

  她发明了世界上第一个编译器 (Compiler),名字叫做 A-0。

  A-0 的原理是:编译程序把穿孔卡(该卡携带有所谓人类语言编写的程序)加载到计算机中,计算机会吐出另一组包含机器代码的卡片,第二组卡片将被装入计算机,计算机就可以执行这段新的程序了。

  疑问:既然第一次所谓人类语言被加载到计算机中,那么第一次所谓人类语言的程序应该也是打孔,因为计算机只能靠插入打孔卡来工作。那么,这和最初的打孔有啥区别呢?

  个人猜测所谓用人类语言的打孔可能打孔方式更接近于人类思维,比如我在打孔卡上打一个python66的形状,那么插入到计算机后会生成一个真正能让计算机打印python66的指令。

  区别在于我不用根据cpu的电路开关设计来费劲编写原始的打印python66的指令了,而是用人类习惯的打孔方式打一个python66的形状的孔即可,这打孔就轻松多了

  A-0 编译器是大量编程语言的开始,大多数现代编程语言都可以追溯到 A-0,这是编程语言的始祖。

文章评论

第一个编译器是怎么写的?从哪来?文章写得不错,值得赞赏