第607章 逻辑的岔路!魔鬼的诞生!
    “完成了?”

    黄建功又惊又喜。

    这才一周时间,“华夏”语言的规范就出来了?

    钱学敏他们,是什么效率!

    “快!拿来我看看!”

    黄建功迫不及待地从联络员手中,接过了那份厚厚的,还散发着油墨香气的《华夏语言第一版设计规范》。

    实验室里,所有的专家,也都好奇地围了过来。

    他们也想看看,自己未来要“翻译”的,究竟是一门怎样的“神谕语言”。

    黄建功翻开了第一页。

    “华夏语言设计总则:以人为本,大道至简,优雅清晰……”

    看到这十二个字,黄建功赞许地点了点头。

    没错,这完全符合老师的点化。

    他继续往下看。

    “第一章:数据类型。本语言定义四种基本数据类型:整数(INTEGER)、浮点数(FLOAT)、字符串(STRING)、布尔(BOOLEAN)……”

    “嗯,不错,严谨!”黄建功抚了抚眼镜。

    “第二章:循环结构。本语言推荐使用FOR循环与WHILE循环,不推荐使用GOTO语句,以保证代码的结构化与可读性……”

    “好!有远见!”黄建功的脸上,露出了笑容。

    他仿佛已经看到,未来用“华夏”语言写出来的程序,会是何等的赏心悦目。

    然而,当他翻到第三章,“运算符与表达式”时,他的眉头,微微皱了起来。

    “第三点一节:自增与自减运算符。为简化代码,本语言引入++与--运算符。A++等价于A = A + 1,A--等价于A = A - 1……”

    “嗯?”黄建功发出了一声轻咦。

    A++?

    这个设计,确实很简洁。

    但是,对于编译器来说,这意味着,要增加一个全新的,对++这个双字符运算符的,特殊识别逻辑。

    他隐隐感觉,事情好像没有那么简单。

    他压下心中的一丝疑虑,继续往下看。

    “第三点二节:复合赋值运算符。本语言引入+=、-=、*=、/=等复合赋值运算符。A += 10等价于A = A + 10……”

    黄建功的眉头,皱得更深了。

    又是一堆,新的双字符运算符。

    这会大大增加他们“词法分析器”的复杂程度。

    钱老他们,为了追求所谓的“简洁”,是不是有点……走得太远了?

    但真正让他感到不安的,是接下来的一个章节。

    “第四章:语句结构。第四点三节:表达式语句。本语言允许将一个独立的表达式,作为一个完整的语句。例如,A + B;本身就是一句合法的语句,尽管它可能没有实际意义……”

    “什么?!”

    黄建功失声叫了出来。

    一个独立的表达式,也能算一个语句?

    那A + B;和A = A + B;,编译器该如何区分?

    这……这不是在给编译器,制造混乱吗?

    “黄老,怎么了?”旁边的人,好奇地问道。

    黄建功没有回答,他的脸色,变得无比凝重。

    他有种非常不好的预感。

    他翻到了最后一章,附录。

    “附录A:关于IF语句的说明。本语言的IF语句,可以省略THEN关键字。例如,IF A > B PRINT "A更大"是合法的。”

    “附录B:关于函数调用的说明。本语言的函数调用,可以省略括号。例如,PRINT "你好"等价于PRINT("你好")。”

    “附录C……”

    黄建功越看,手心越是冰冷。

    他终于明白,问题出在哪里了。

    钱学敏他们,这群搞理论的,为了追求所谓的“人性化”和“灵活性”,在语言里,加入了太多太多,模棱两可的,有歧义的语法!

    在人看来,PRINT "你好"和PRINT("你好"),意思是一样的。

    IF A > B PRINT "A更大"和IF A > B THEN PRINT "A更大",意思也是一样的。

    人类的大脑,可以很轻松地,根据上下文,理解其中的含义。

    但是,机器不行!

    机器是死板的!

    它的“语法分析器”,在解析IF A > B PRINT "A更大"这句代码时,会遇到一个致命的问题。

    当它读到IF A > B之后,它期望下一个读到的,是一个明确的THEN关键字。

    但是,它读到的,却是一个PRINT。

本章未完,请点击下一页继续阅读>>