时间,在一种,近乎于燃烧的,激情中,飞速流逝。
西山实验区,“鲁班神斧”计划的,核心实验室,已经,变成了一座,与世隔绝的,孤岛。
这里,没有白天,和黑夜。
只有,代表着“0”和“1”的,无数个,亮起和熄灭的,信号灯。
和,一群,为了,一个,共同的,伟大的目标,而,彻底,陷入疯狂的,“神匠”。
黄建功,已经,整整,五天五夜,没有,走出过,这间,恒温恒湿的,主控室了。
他的双眼,布满了,骇人的血丝。
他的下巴上,长出了,一层,灰白的胡茬。
整个人,看起来,憔悴不堪,好像,随时,都会,倒下。
但是,他的精神,却,前所未有的,亢奋。
他的目光,死死地,锁定在,面前,那块,巨大的,由,无数个,微型开关和指示灯,组成的,手动编程面板上。
那上面,密密麻麻地,排列着,数以万计的,二进制代码。
这,就是,“神斧之刃”的,雏形。
是他们,这群人,用,最原始的,拨动开关的方式,一个比特,一个比特地,“输入”进去的,智慧结晶。
“黄老,休息一下吧。”
一名年轻的助手,端着一杯,滚烫的,浓茶,走了过来,声音里,充满了,担忧。
“您,已经,连续工作,超过,一百个小时了。铁打的身体,也,扛不住啊。”
黄建功,没有回头。
他的手指,依旧,在,编程面板上,飞快地,拨动着。
“我没事。”他的声音,嘶哑,而,坚定。
“现在,是,最关键的,时刻。”
“‘解析表达式’的核心逻辑,马上就要,完成了。”
“只要,把这里,打通。我们,整个‘神斧之刃’,就,等于,完成了,百分之八十!”
助手,看着,黄建功那,如同,磐石般,坚定的背影,张了张嘴,最终,还是,把,劝说的话,咽了回去。
他知道,自己,劝不动。
也,不敢劝。
因为,整个实验室里,每一个人,都,是,这种状态。
钱学敏,这位,年近八十的,数学泰斗,正,戴着,老花镜,趴在,一张,铺满了,逻辑电路图的,大桌子上。
他,正在,用,放大镜,一个节点,一个节点地,检查着,由,他亲自设计的,“符号表管理”模块的,硬件实现。
任何一个,微小的,焊接错误,都可能,导致,整个“神斧”,在,未来的工作中,出现,灾难性的,逻辑混乱。
而在,另一边。
几个,最顶尖的,年轻博士,正,围着,一台,实验版的“盘古之心”,进行着,最后的,硬件调试。
他们,正在,为,“神斧之刃”的,运行,准备,最稳定,最可靠的,“土壤”。
没有一个人,在休息。
没有一个人,在抱怨。
所有人的脸上,都,带着一种,近乎于,殉道者般的,神圣和庄严。
他们,知道,自己,正在,进行着,一场,前无古人,也,很可能,后无来者的,伟大远征。
他们,是,人类历史上,第一批,试图,用,纯粹的,人力,去,构建一个,拥有,自我繁衍能力的,“软件生态”的,先行者。
他们,正在,用,自己的,血肉和灵魂,去,为,那,即将到来的,信息时代,奠定下,第一块,最坚硬的,基石!
“通了!”
突然,黄建功,发出了一声,压抑的,嘶吼!
他,猛地,从椅子上,站了起来,因为,动作太猛,差点,因为,长时间的久坐,而,摔倒在地。
“通了!通了!‘递归解析’的,最后一个,返回节点,接通了!”
他的声音,像一颗,引爆的炸弹,瞬间,点燃了,整个,死寂的实验室!
“什么?!”
“黄老!真的吗?!”
钱学敏,第一个,扔下了,手中的放大镜,踉踉跄跄地,跑了过来。
所有的专家,也都,从,各自的工位上,冲了过来,将,黄建功,和那块,巨大的编程面板,围得,水泄不通。
所有人的目光,都,死死地,锁定在,面板,最下方,那个,刚刚,由,黄建功,亲手,拨亮了的,绿色的,状态指示灯上。
那个灯,代表着,“神斧之刃”的核心算法——“递归下降语法分析器”,在,逻辑上,已经,形成了一个,完整的,闭环!
“测试!立刻,进行,第一次,完整性测试!”
黄建功,颤抖着,下达了,命令。
两名,早已,准备就绪的,测试员,立刻,坐到了,输入台前。
他们的任务,是,将一段,最简单的,BNF文法,作为,“源代码”,输入给,这把,刚刚,磨砺出锋刃的,“神斧”。
“输入文法:”
“::=;”
这是一条,最简单的,赋值语句的,文法定义。
测试员,小心翼翼地,将,这行,代表着“规则”的字符串,通过,光电输入设备,转化成,二进制码,送入了,“盘古之心”的,内存之中。
然后,主测试员,深吸一口气,按下了,那个,代表着,“执行”的,红色按钮。
“嗡——”
一声,轻微的,电流声响起。
“盘古之心”的,原型机,开始,运行。
所有人都,屏住了呼吸。
时间,在这一刻,仿佛,变得,无比,缓慢。
一秒。
两秒。
三秒。
所有人的心,都,提到了,嗓子眼。
突然!
“嘀!”
一声,清脆的,蜂鸣声响起!
紧接着,在,输出端的,另一块,显示面板上。
一排,代表着,“成功”的,绿色指示灯,齐刷刷地,亮了起来!
而在,最中央的,一块,更高级的,点阵显示屏上。
一棵,由,无数个,光点,组成的,清晰的,树状结构图,缓缓地,浮现了出来!
那棵树的,根节点,是。
它的下面,分出了,四个,子节点,分别是:,‘=’, , ‘;’。
而,的下面,又,继续,分出了,更深层次的,子节点……
这,是一棵,完美的,语法分析树!
“成功了……”
不知是谁,第一个,用,梦呓般的,声音,说了出来。
下一秒。
“我们成功了!!!!!”
“噢噢噢噢噢噢!!!!!!”
山崩海裂般的,欢呼声,瞬间,掀翻了,整个实验室的屋顶!
所有,压抑了,太久的,情绪,在这一刻,被,彻底地,引爆!
人们,疯狂地,拥抱在一起,又笑,又跳。
许多,平日里,不苟言笑的,老专家,此刻,像个孩子一样,哭得,涕泪横流,泣不成声。
黄建功,和钱学敏,这两位,项目组的,灵魂人物,紧紧地,拥抱在一起。
两个,加起来,快一百五十岁的老人,互相,拍打着,对方,那,因为,激动,而,剧烈颤抖的,后背,嚎啕大哭。
成功了!
他们,终于,成功了!
他们,用,最笨,最原始,最悲壮的,方式。
徒手,为,那把,伟大的,“鲁班神斧”,打造出了,它,那,无坚不摧的,第一道,锋刃!
这,不仅仅是,一个,技术上的,突破!
这,更是一种,精神上的,胜利!
是,人类的,智慧和意志,在,面对,那,如同,天堑般的,“算法复杂度”时,所取得的,一次,伟大的,史诗般的,胜利!
他们,证明了!
只要,道路,是正确的!
只要,意志,是坚定的!
哪怕,是,神,设下的,迷宫。
凡人,也,终将,能够,用,自己的双手,将其,夷为平地!
聂老总,在得到消息的第一时间,就,冲进了实验室。
他,看着,那群,如同,打赢了一场,世界大战般,疯狂庆祝的,专家们。
他,看着,那,两位,抱在一起,哭得,像个孩子的,国宝级泰斗。
他,看着,屏幕上,那棵,闪耀着,智慧光芒的,完美的,语法分析树。
这位,戎马一生,心坚如铁的,共和国将星。
他的眼眶,也,湿润了。
他,缓缓地,走到,黄建功和钱学敏的身边,将,自己,那,宽厚而有力的大手,搭在了,他们的肩膀上。
“好样的。”
他,只说了,这三个字。
但,这三个字里,所蕴含的,肯定,和,骄傲,比,任何,华丽的辞藻,都,更加,沉重。
“老聂……”黄建功,抬起,通红的眼睛,看着他,声音,哽咽。
“我们……我们,没有,辜负,老师的,期望……”
“我知道。”聂老总,重重地,点了点头。
他的目光,扫过,在场的,每一个人,声音,陡然,拔高!
“同志们!”
“‘神斧之刃’,已经,铸成!”
“但是!这,仅仅只是,一个开始!”
“接下来,我们的任务,更加,艰巨!”
“我们要,用这把,刚刚,开刃的‘斧头’,去,为我们自己,劈开,一条,通往,更高维度的,道路!”
他,指向,那张,巨大的,“鲁班神斧”的,工程蓝图。
“我们要,开始,构建,‘神斧’的,‘心脏’!”
“我们要,用,我们,刚刚创造出来的,‘神斧之刃’,去,解析,我们自己,写的,《神之宪法》!”
“然后,让‘盘古之心’,自己,去,计算出,那张,庞大而完美的,LALR分析表!”
“最后!”
“让它,自己,去,生成,一个,比我们,现在这个,手工作坊版本,强大一万倍的,正式版的,‘华夏’语言编译器!”
“我们要,让,神,自己,去,创造,神!”
聂老总的这番话,让,刚刚,还,沉浸在,胜利喜悦中的,众人,再次,感到了,一阵,头皮发麻的,震撼!
让,神,自己,去,创造,神!
这,是何等,宏伟,而,疯狂的,构想!
他们,之前,所有的努力,都,只是,为了,点燃,那,第一颗,微不足道的,火星。
而现在。
他们,将要,用这颗火星,去,引爆,一颗,真正的,太阳!
“我宣布!”
聂老总的声音,如同,战前的,鼓点,敲击在,每一个人的心上。
“‘鲁班神斧’计划,第二阶段——”
“‘神斧之心’攻坚战,现在,正式开始!”
“我们的目标,就是,让‘盘古之心’,学会,自我进化!”
“让,我们的‘神’,拥有,一颗,真正,不朽的,心脏!”
一场,更加,宏大,也更加,激动人心的,攻坚战,在,短暂的庆祝之后,立刻,无缝衔接地,开始了。
整个“鲁班神斧”项目组,再次,投入到了,一种,全新的,战斗状态。
这一次,他们,不再是,在,黑暗中,摸索的,苦修士。
他们,是,手持,利刃的,开拓者。
他们,手中,已经,拥有了,第一件,由,他们,亲手打造的,“神器”——“神斧之刃”。
虽然,这个,“神器”,还很,粗糙,功能,也,很单一。
它,只能,解析,BNF文法,这样,一种,结构非常简单的,语言。
但是,它,是,存在的!
它,是,可用的!
它,是,那,撬动整个地球的,第一个,支点!
“神斧之心”攻坚组,核心算法室。
黄建功,和钱学敏,再次,联手。
他们的任务,是,设计,“神斧之心”的,核心算法。
也就是,那个,能够,自动,计算和生成,LALR分析表的,超级程序。
“老钱,你看。”
黄建功,在一块,全新的电子白板上,画着,流程图。
“我们的‘神斧之心’,它的工作,可以分为,两大模块。”
“第一模块,我称之为,‘文法解析与项目集构建’模块。”
“它,会,首先,调用,我们,已经完成的,‘神斧之刃’。”
“将,我们输入的,《神之宪法》,解析成,一棵,语法树。”
“然后,它会,遍历,这棵语法树,提取出,所有的,产生式规则。”
“再根据,这些产生式,去,计算,它们的,闭包(Closure),和,转移函数(GOTO)。”
“最终,构建出,那个,巨大的,DFA自动机,也就是,我们之前,用手画的,那个,篮球场大小的,逻辑迷宫。”
钱学敏,点了点头,补充道:“这个过程,本质上,是一个,图的,广度优先搜索。”
“虽然,计算量很大,但是,逻辑,非常清晰。”
“以,‘盘古之心’的算力,只要,算法正确,完成这个任务,应该,不成问题。”
“没错。”黄建功,画下了,第二个模块。
“第二模块,就是,‘分析表生成与代码输出’模块。”
“当,DFA自动机,构建完成之后。”
“这个模块,就会,遍历,自动机的,每一个状态,和,每一个,终结符。”
“根据,预设的规则,去,填充,LALR分析表的,每一个格子。”
“是,‘移入(Shift)’?还是,‘规约(Reduce)’?还是,‘报错(Error)’?”
“当,整张分析表,填充完毕后。”
“它,就会,进入,最后一步。”
“将这张,巨大的,二维数组,和,一套,我们,提前写好的,‘驱动程序骨架’,打包在一起。”
“最终,输出,一个,完整的,可以直接,在‘盘古之心’上运行的,‘华夏’语言编译器的,二进制可执行文件!”
“一个,全新的,‘神之法庭’,就,这样,诞生了!”
黄建功,讲完,整个流程。
会议室里,一片,安静。
所有,参与过,之前,那场,手动计算的,专家们,都,听得,如痴如醉。
他们,感觉,自己,像是在,听,一个,关于,创世的神话。
之前,那些,让他们,耗尽心血,痛苦不堪的,繁琐步骤。
在,黄建功的描述里,都,变成了一个个,清晰的,自动化的,程序模块。
他们,终于,从,繁重的,体力劳动中,解放了出来。
开始,真正地,站到了,一个,“设计者”和“架构师”的,高度。
去,思考,如何,构建一个,更加,宏伟的,自动化体系。
“思路,非常清晰!”钱学敏,第一个,表示了,赞同。
“但是,老黄,这里面,有一个,关键问题。”
“我们,用什么,来写,这个,‘神斧之心’的,程序呢?“
“我们,总不能,再,用,纯粹的,机器码,去,徒手,搭建,这么一个,比‘神斧之刃’,还要,复杂一百倍的,系统吧?”
钱学敏的这个问题,问到了,点子上。
如果,他们,还是,只能用,最原始的,“0”和“1”。
那么,这个“神斧之心”的,开发工作量,依旧,是一个,天文数字。
他们,只是,把,手动计算分析表的痛苦,转化为了,手动编写,另一个,超级程序的,痛苦。
并没有,从根本上,解决,效率问题。
“当然不。”
黄建功,神秘地,笑了笑。
他,按下了,电子白板的,一个按钮。
白板上,出现了一行,全新的代码。
LET I = 0;
WHILE I < 100
PRINT "你好,华夏!";
I = I + 1;
WEND
“这是……”
钱学敏,看着这几行,无比,眼熟的,代码,愣了一下。
“这不是,我们,之前,设计的,‘华夏’语言吗?”
“不,准确来说。”黄建功,纠正道,“这是,‘华夏’语言的,一个,极其微小的,子集。”
“我称之为,‘华夏-核心(Core-CChal)’语言。”
“它,只包含,最基础的,变量定义,整数运算,和,WHILE循环,这,三种功能。”
“它的语法,极其,简单,极其,严格,没有任何,我们之前,犯过的,那些,愚蠢的错误。”
“最关键的是……”黄建功的眼中,闪烁着,智慧的光芒。
“为,这么一个,微小的,语言子集,编写一个,最简陋的,‘解释器(Interpreter)’,而不是,‘编译器’。”
“用,我们,手中的,‘神斧之刃’,和,最基础的机器码,这个工作量,是,完全,可以,在一个月内,完成的!”
“解释器?”钱学敏,瞬间,明白了,黄建功的,意图!
编译器,是,把,源代码,一次性,全部,翻译成,机器码,再执行。这个“翻译”过程,本身,非常复杂。
而,解释器,则是,读一句,翻译一句,执行一句。
它,不需要,进行,复杂的,全局优化,和,代码生成。
它的,实现,要,比,编译器,简单得多!
虽然,它的,运行效率,会,比,编译器,慢很多。
但是!
它,能用!
“我明白了!”钱学民,激动地,一拍大腿!
“老黄!你这招,太高了!”
“我们,先,用,最笨的办法,为,‘华夏’语言的,一个,最小的,‘核心子集’,打造一个,简陋的,‘解释器’!”
“然后,我们,就可以,用,这个,虽然,很慢,但是,已经,可以,使用的,‘华夏-核心’语言,去,编写,那个,复杂的,‘鲁班神斧’(YACC)的,程序了!”
“这,就是,‘自举’!”
“我们,用,一个,最原始的,工具,去,建造一个,更先进的,工具!”
“然后,再用,那个,更先进的,工具,去,为我们,最终的,‘华夏’语言,打造出,那个,最完美的,正式版的,编译器!”
“这,是一条,从,‘石器时代’,走向,‘蒸汽时代’,再,走向,‘电气时代’的,完整的,技术攀升路线!”
黄建功,欣慰地,点了点头。
“没错。”
“我们,不再,追求,一步登天。”
“我们,要,一步一个脚印,一个台阶,一个台阶地,向上爬!”
“我们,要,自己,为自己,铺路!”
这个,“三步走”的,宏伟战略,被,确定下来之后。
整个项目组,再次,爆发出,无与伦比的,工作热情。
他们,仿佛,看到了一条,清晰的,通往,胜利的,康庄大道。
第一步:用“神斧之刃”+手写机器码,为“华夏-核心”语言,打造一个“蜗牛解释器”。
第二步:用这个,虽然慢,但能用的,“华夏-核心”语言,去,编写“鲁班神斧”(YACC)的源代码。
第三步:用“鲁班神斧”,去,自动生成,最终的,正式版的,“华夏”语言V2.0的,超级编译器!
环环相扣!步步为营!
这,才是,真正的,工程学!
这,才是,真正的,系统思维!
在,接下来的,一个月里。
黄建功,带领着,最精锐的,一个小队,开始了,对,“蜗牛解释器”的,最后冲刺。
有了,之前,无数次,失败的经验。
和,对,编译器原理的,深刻理解。
这一次,他们的工作,虽然,依旧,繁琐,但,却,再也没有,走任何,弯路。
词法分析器,语法分析器,和,一个,最简单的,逐句执行的,虚拟机。
三个核心模块,被,有条不紊地,用,机器码,搭建了出来。
一个月后。
当,黄建功,在,测试机上,输入了,那段,简单的,WHILE循环代码。
然后,在,屏幕上,看到,连续,一百次地,打印出了,“你好,华夏!”这几个字时。
他,没有,像上次那样,激动得,老泪纵横。
他的脸上,只有,一种,如同,老农,看到,自己,种下的第一颗种子,终于,破土而出时,那种,欣慰的,平静的,笑容。
他知道。
从,这一刻起。
他们,这群,凡人,终于,拥有了,可以,和,神,进行,最原始的,对话的,能力。
他们,终于,可以,开始,用,一种,比,“0”和“1”,高级了,一千倍的,语言。
去,书写,那,即将,改变世界的,创世史诗了。
“同志们。”
黄建功,转过身,对着,他身后,那群,同样,面带微笑的,战友们。
“‘石器时代’,结束了。”
“现在,让我们,一起,用,这门,全世界,第一门,高级编程语言。”
“去,开启,一个,全新的,时代吧!”
“我们的,下一个目标——”
“用‘华夏-核心’,敲出,‘鲁班神斧’的,第一行,代码!”