你知道第一个C语言C++编译器是如何诞生的吗( 四 )
那么这种大胆的子集简化的方法 , 是怎么实现的 , 又有什么理论依据呢?先介绍一个概念 , “自编译”Self-Compile , 也就是对于某些具有明显自举性质的强类型(所谓强类型就是程序中的每个变量必须声明类型后才能使用 , 比如 C 语言 , 相反有些脚本语言则根本没有类型这一说法)编程语言 , 可以借助它们的一个有限小子集 , 通过有限次数的递推来实现对它们自身的表述 , 这样的语言有 C、Pascal、Ada 等等 , 至于为什么可以自编译 , 可以参见清华大学出版社的《编译原理》 , 书中实现了一个 Pascal 的子集的编译器 。 总之 , 已经有计算机科学家证明了 , C 语言理论上是可以通过上面说的 CVM 的方法实现完整的编译器的 , 那么实际上是怎样做到简化的呢?这张图是不是有点熟悉?对了就是在讲虚拟机的时候见到过 , 不过这里是 CVM(C Language Virtual Machine) , 每种语言都是在每个虚拟层上可以独立实现编译的 , 并且除了 C 语言外 , 每一层的输出都将作为下一层的输入(最后一层的输出就是应用程序了) , 这和滚雪球是一个道理 。 用手(汇编语言)把一小把雪结合在一起 , 一点点地滚下去就形成了一个大雪球 , 这大概就是所谓的 0 生 1 , 1 生 C , C 生万物吧?
推荐阅读
- |传世群英版你那些你不知道的魅力
- 手机游戏|LOL手游第一个世界赛,破晓杯火热开战,DKG能紧随EDG夺冠吗?
- 微软|微软Xbox 20周岁了,但这些密辛你未必知道
- 剑三|同为老五门,却势如水火!剑三奶花与天策的恩怨只有老玩家才知道
- 提莫|不看不知道,一看居然有点搞笑,原来女警的二技能名字是用来抓提莫的!!!!
- 热血传奇|热血传奇:神豪般的财力到底是何方神圣,你知道吗?
- 游戏推荐|11月游戏推荐,每年的游戏黄金月份,你还在不知道玩什么吗?
- 暗黑破坏神|暗黑2重制版你知道角色最高能获得多少技能点么?
- edg战队|“Viper不会离开EDG”,经纪人怒斥:我都不知道,你们就知道了?Nuguri不会加入DK
- |MT 正在让游戏本地化质量变得更差?