第607章 逻辑的岔路!魔鬼的诞生!_四合院开局四八,八岁带妹逃荒 首页

字体:      护眼 关灯

上一章 目录 下一章

第607章 逻辑的岔路!魔鬼的诞生!

第(2/3)页

#34;。”

他用粉笔,重重地在ELSE这个词上,画了一个圈。

“请问,这个ELSE,它到底是跟第一个IF配对的,还是跟第二个IF配对的?”

钱学敏脸上的笑容,瞬间凝固了。

他张了张嘴,想反驳。

可他发现,自己竟然,无从反驳。

从人类的阅读习惯来说,ELSE通常是和最近的那个IF配对。

但是,从语法的可能性上来说,它跟第一个IF配对,也完全说得通!

一句话,两种截然不同的解释!

这就是,赤裸裸的,无法回避的“歧义”!

“这……这……”

钱学敏的额头,也开始冒汗了。

他和其他几位语言组的专家,面面相觑,都从对方的眼中,看到了震惊和慌乱。

他们之前,光顾着追求语言的“灵活性”,完全没有考虑到,这种嵌套结构下,会产生如此致命的问题!

“这只是其中一个问题!”

黄建功的声音,变得严厉起来。

他擦掉黑板上的代码,又写下了另一行。

A  =  B  +  C  *  D;

“这句,很简单,先算乘法,再算加法,对吧?这是我们小学就学过的‘运算符优先级’。”

“但是!”

他话锋一转,又写了一行。

A  =  B  +  C++;

“这句呢?钱老,您告诉我,是先算B+C,再让C自增1?还是先让C自增1,再算B加上那个新的C?”

钱学敏,彻底说不出话了。

他发现,他们引以为傲的,那个简洁的++运算符,在这里,也成了一个“歧义”的源头!

“还有这个!”

黄建功几乎是在咆哮了。

PRINT  A  B  C;

“你们说,为了方便,函数调用可以省略括号!”

“那这句话,编译器怎么知道,你是想调用一个,名为PRINT,参数是A、B、C的函数?还是想调用一个,名为PRINT,参数是A的函数,然后,B和C是另外两个独立的变量?”

一个个尖锐的问题,像一把把锋利的刀子,狠狠地扎在钱学敏和所有语言组专家的心上。

他们设计的那些,所谓的“优雅”、“简洁”的语法糖。

在编译器那冰冷、严苛的逻辑面前,全都变成了一个个,可笑的,致命的毒药!

“我们是在造‘通天塔’!不是在盖狗窝!”

黄建功将手中的粉笔,重重地摔在地上,粉笔断成了两截。

“通天塔的每一块砖,都必须是标准的!尺寸、角度,不能有丝毫的偏差!”

“而你们!给我们的,是什么?!”

“是一堆,奇形怪状,棱角不明的石头!”

“你们让我们,怎么用这些石头,去建造一座,能够通往神国的,伟大的巴别塔?!”

“用这些石头盖起来的,只会是一座,随时都会崩塌的,危楼!”

巴别塔……

这个词,让钱学敏的身体,剧烈地一颤。

他想起了那个古老的传说。

人类妄图建造通天高塔,最终,因为语言的混乱,而分崩离析,功败垂成。

而现在……

他们,正在重蹈覆辙!

他们创造的“华夏”语言,非但没有成为沟通的桥梁,反而,成了混乱的源头!

“老黄……我……我们……”

钱学敏的嘴唇,一片煞白。

他想道歉,想解释,说他们只是想让语言更友好,更方便。

可是在这铁一般的事实面前,任何的解释,都显得那么苍白无力。

他们,错了。

从一开始,就错了。

他们误解了老师“大道至简”的真正含义。

真正的“简”,不是形式上的,让人类写起来简单。

而是逻辑上的,让机器理解起来,没有歧义!

是规则的清晰!是秩序的井然!

而他们,却把“自由”,当成了“简单”。

最终,亲手,为这座通天塔,制造了第一道,也是最致命的一道裂痕。

“巴别塔”的裂痕,一旦出现,就再也无法弥合。

两个原本亲密无间的攻关小组,第一次,产生了巨大的隔阂。

“编译器”攻关组的专家们,怨声载道。

“这活儿没法干了!语言组那帮人,根本不知道我们在做什么!”

“他们设计的每一条‘方便’的语法,都是给我们增加一倍的工作量!”

“什么++,什么省略括号,这都是异端!是魔鬼的设计!”

“语法分析器,已经重写了三个版本了!每次都是因为他们新加的‘语法糖’,导致整个逻辑推倒重来!”

而“神谕语言”设计组那边,也充满了委屈和不满。

“我们是‘以人为本’!这有什么错?这可是老师亲自点化的!”

“是他们编译器组的人,太死板了!脑子转不过弯来!”

“不就是多几种情况吗?多写几个判断逻辑不就行了?哪有那么复杂!”

“我看他们就是能力不行,还怪我们设计得不好!”

争吵,在两个小组之间,不断爆发。

原本热火朝天的西山实验区,第一次,笼罩在一种互相指责,互相推诿的,压抑的氛围之中。

聂老总和黄建功、钱学敏,开了好几次协调会。

但问题的根源,在于思想上的巨大分歧,根本无法调和。

最终,在巨大的压力下,他们只能选择一个,最笨,也是最无奈的办法。

——打补丁。

“既然有歧义,那我们就,增加新的规则,来消除歧义!”

在一次争吵不休的联席会议上,钱学敏疲惫地提出了一个解决方案。

“比如,IF语句的ELSE悬挂问题。我们就强制规定,ELSE永远和最近的,那个没有配对的IF结合!”

“这……这不是又增加了新的,复杂的规则吗?”编译器组的人立刻反对。

“那你们说怎么办?!”钱学敏也来了火气,“难道要把整个设计,都推倒重来吗?!”

编译器组的人,沉默了。

推倒重来,意味着过去一个月的努力,全部白费。

这个代价,谁也承担不起。

“好,那就按钱老说的办!”黄建功最终拍了板,“先解决眼前的问题!”

于是,一场轰轰烈烈的,“打补丁”运动,开始了。

为了解决A  =  B  +  C++;的歧义,语言组规定,++放在变量后面(后缀),是“先使用,再自增”;如果放在变量前面(前缀),比如++C,就是“先自增,再使用”。

为了解决函数调用省略括号的歧义,他们又规定,如果函数名和第一个参数之间,没有空格,就视为省略了括号;如果有空格,就视为不同的语句。

……

一条条,越来越复杂的,如同补丁摞补丁般的规则,被不断地,添加到那本,本应简洁明了的《华夏语言设计规范》里。

那本规范,从最初的五十页,迅速膨胀到了一百页,一百五十页……

“华夏”语言,也从一个,本应清秀可人的少女,变成了一个,被缝上了各种奇怪肢体的,臃肿不堪的,弗兰肯斯坦式的怪物。

它不再“优雅”。

它不再“简洁”。

它充满了各种,需要死记硬背的,反直觉的,特殊的规则和例外。

而“编译器”攻关组的日子,更加苦不堪言。

他们每实现一个“补丁”规则,就意味着,要在他们那本已无比复杂的“

(本章未完,请翻页)
记住手机版网址:m.lewenwx.cc
加入书签我的书架

上一章 目录 下一章