字体:大 中 小
护眼
关灯
上一章
目录
下一章
第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
上一章
目录
下一章