黄建功拿着那份滚烫的仓颉语言规范白皮书》,没有片刻停留,直接冲向了“编译组”的大本营——C-5号机房。
C-5号机房,是整个西山基地里,除了核心服务器所在地之外,另一个二十四小时都灯火通明,人声鼎沸的地方。
这里,是“龙语”诞生的地方。
也是“滚雪球计划”大获成功的战场。
现在,这里聚集了整个华夏最顶尖的一批编译器专家。
他们的任务,就是为未来的“仓颉”语言,打造出它的专属编译器——“仓颉-鲁班”。
然而,过去的七天,对于“编译组”的每一个人来说,都是一种煎熬。
他们就像是一群摩拳擦掌,准备大干一场的顶级大厨。
菜刀,锅碗,灶台,全都准备好了。
结果,被告知,要做的菜,菜谱还没写出来。
这种有力无处使的感觉,让每一个人都憋了一肚子的火。
“老大来了!”
“黄总来了!”
当黄建功的身影,出现在机房门口时,整个机房,瞬间从嘈杂变得鸦雀无声。
所有人的目光,都齐刷刷地,聚焦在了他……和他手中那份厚厚的文档上。
“菜谱……来了?”
一个负责编译器前端的年轻工程师,咽了口唾沫,小声地问了一句。
黄建功没有回答。
他径直走到机房中央的一张大桌子前,将那份“白皮书”,重重地拍在了桌上。
“啪”的一声,在安静的机房里,显得格外响亮。
“‘语法组’的同志们,奋战了七天七夜。”
黄建功的声音,带着一丝沙哑,但却充满了力量。
“这就是他们的成果。”
“现在,轮到我们了。”
“我给你们的任务,很简单。”
他伸出三根手指。
“三个月。”
“三个月之内,我要看到‘仓颉-鲁班’编译器的第一个可用版本!V0.1!”
“它不要求功能完善,不要求性能最优!但我要求,它必须能完整地,正确地,将一份最简单的‘仓颉’源代码,编译成‘伏羲’神石可以执行的二进制代码!”
“能不能做到?!”
没有人回答。
所有人都死死地盯着桌上那份神秘的“白皮书”。
他们的眼神里,充满了好奇,渴望,以及一丝丝的不安。
他们不知道,那里面,到底写了些什么“天方夜谭”。
“怎么?没信心?”黄建功的眉头,皱了起来。
“不是没信心,黄总。”
编译组的副组长,一位参与了“龙语”编译器从0到1全过程的元老级专家,苦笑着站了出来。
“主要是……我们对敌人,一无所知啊。”
“你总得让我们先看看,我们这次的对手,到底长什么样吧?”
“好!”
黄建功大手一挥。
“现在,全体前端组的成员,立刻放下手头所有的工作!用一个小时的时间,把这份‘白皮书’的第一章和第二章,给我吃透!”
“一个小时后,我要你们告诉我,解析这门新语言的语法,需要用到什么样的技术方案!是LL(1)?LALR(1)?还是说,我们需要一个更强大的,比如……GLR?”
他口中说出的,都是编译器前端领域,最核心,最专业的术语。
“是!”
前端组的十几名工程师,像是接到了军令的士兵,立刻冲了上去,将那份“白皮书”团团围住。
很快,就有人找来了高速扫描仪,将整份文档,扫描成了电子版,人手一份地分发了下去。
整个机房,再次陷入了安静。
只听得到键盘的敲击声,和众人因为震惊,而压抑不住的倒吸冷气的声音。
“我的天……声明式语法?这怎么做词法分析?”
“不建议使用循环和分支?那控制流图还怎么画?”
“状态机……事件驱动……这……这语法树的结构,会变得无比复杂!”
“可编程着色器!还要内嵌一个编译器?这是人能干出来的事?!”
仅仅十分钟过去,前端组的阵地,就已经是一片鬼哭狼嚎。
每一个人的脸上,都写满了“不可思议”和“这怎么可能”。
他们感觉,自己面对的,根本不是一门“语言”。
而是一个由无数个最前沿,最激进的计算机科学理念,堆砌起来的,结构复杂到令人发指的……思想怪物!
之前那位元老级专家,此刻的脸色,已经变得惨白。
他颤颤巍巍地走到黄建功面前。
“黄总……这……这东西……”
他指着屏幕上的文档,嘴唇哆嗦着,半天说不出一句完整的话。
“这东西,用我们现有的任何一种语法分析技术,都不可能在三个月内搞定!”
“它的语法,充满了二义性!它的结构,是上下文相关的!它的设计,根本就没有考虑过编译器的死活!”
“这……这根本就不是一门写给机器的语言!这他妈是写给神的诗!”
他最后一句,几乎是吼出来的。
他的话,也代表了在场所有前端工程师的心声。
他们被这份来自未来的“天书”,给彻底击垮了。
他们第一次,对自己奋斗了一辈子的领域,产生了深深的怀疑。
编译器,真的能解析这种“神之诗篇”吗?
整个机C-5机房,陷入了一片死寂。
气氛,压抑到了冰点。
所有人都看着黄建功,等着他发话。
他们希望从这位“龙语”之父的口中,得到一丝安慰,或者是一句“降低要求”的命令。
然而,黄建功的反应,却超出了所有人的预料。
他非但没有生气,反而笑了。
笑得非常开心。
“诗?说得好!”
他走到那位元老专家面前,拍了拍他的肩膀。
“老张,你还记不记得,我们当初做‘龙语’编译器的时候,遇到的最大难题是什么?”
老张愣了一下,下意识地回答:“是……是内存管理和垃圾回收?”
“不,那只是技术难题。”黄建功摇了摇头,“最大的难题,是我们自己!”
“是我们脑子里,那些根深蒂固的,从C语言,从汇编时代,带来的编程思想!是它们,束缚了我们的想象力!”
“而现在,‘仓颉’,给了我们一个机会!一个彻底打碎旧世界,建立新世界的机会!”
他的目光,扫过在场所有垂头丧气的工程师。
“你们觉得它复杂,觉得它无法实现,那是因为,你们还在用‘凡人’的工具,去揣度‘神’的意图!”
“你们还在想着用LL,用LALR这些旧时代的‘锄头’,去开凿一座‘神山’!”
“你们为什么不想想,老师在之前的神谕里,还教过我们什么?”
黄建功的声音,陡然提高。
“‘滚雪球’!‘自举’!”
“我们为什么不能为‘仓颉’,再造一个‘滚雪球’的工具?!”
“我们为什么不能先用‘龙语’,写一个最最简陋的,只能解析‘仓颉’最核心语法的‘零号编译器’?”
“然后,再用这个‘零号编译器’,去编译一个用‘仓颉’自己写的,功能更强一点的‘一号编译器’?”
“用‘仓颉’,来编译‘仓颉’自己!”
“让神,来锻造自己的武器!”
黄建功的这番话,如同一道闪电,瞬间劈开了笼罩在C-5机房上空的阴云。
所有工程师,都猛地抬起了头。
他们的眼中,重新燃起了光芒。
对啊!
自举!
他们怎么把这个最大的法宝给忘了!
用目标语言,来编写自己的编译器!
这才是编译器开发的“屠龙之术”!
“可是……黄总。”老张还是有些犹豫,“就算是用自举,这门语言的语法也太复杂了。我们那个‘零号编译器’,该从哪里下手呢?”
“谁告诉你们,要从‘语法’下手了?”
黄建功再次抛出了一个颠覆性的问题。
他指着那份“白皮书”的第五章。
“你们再看看这里,‘可编程着色器’,‘龙章’语言。”
“钱学敏和赵成他们,在设计这门语言的时候,就已经为我们指明了道路!”
“他们将‘仓颉’,拆分成了两个部分!”
“一个,是用于描述‘场景结构’的,高层次的‘仓颉主体’。”
“另一个,是用于进行‘底层计算’的,低层次的‘龙章’!”
“而这个‘龙章’,它的语法,是‘仓颉’的子集!而且,它是图灵完备的!它的结构,更接近于我们熟悉的传统编程语言!”
“所以,我们的第一步,不是去啃‘仓颉’这块最硬的骨头!”
黄建功的眼中,闪烁着智慧的光芒。
“我们的第一步,是为‘龙章’,打造一个编译器!”
“先实现这个‘小目标’!”