李维 老彼得·勃鲁盖尔所画的《巴别塔》(1563) 以前一直不理解计算机这么些年为啥有那么多狂人前仆后继,发明了这么多不同句法和风格的语言,这不是为难人吗。说到底还是,人毕竟不是神,想制定语言王国的条条框框,又要富于表现力,修行不足也。 人类语言繁多是可以理解的,除了前面讲到的神话,也有历史的、地域的和经济的诸原因。可是计算机的硬件和底部机器指令及其背后的逻辑都是基本一致的,完全没有道理人为生出这么多语言来。至少对于高级通用语言,书同文应该是大势所趋。连电脑语言都不统一,何来世界大同? 苹果公司设计的mobile平台语言叫啥来着?对,Swift,据说帅呆了。其实,历史上最成功的人造语言不是 BASIC 或 Visual Basic、C 或 C++,不是 Lisp 或 Prolog,也不是 Java, Python,Perl 或 Swift 等电脑语言,而是为人类和世界和平而创造的 Esperanto(世界语)。世界语之父柴门霍夫博士才是简约规范与丰富灵活的无与伦比的平衡大师,值得世代景仰。 有意思的是,有时候人会因为创制了一门新语言,就以为该工具针对的问题就已经解决了。人工智能历史上,Lisp 语言以及 为其量身定制的 Lisp 机曾经刮起一阵旋风。女儿课上接触过它,为那些没完没了的括号头疼不已,我说,难道你没看到设计者的匠心?“I can sense that”,美则美矣,太绕(大意)。 后来 Prolog 的设计和实现,成为日本五代机大跃进的主要依据。一时间极度乐观主义在日本精英阶层流行,人定胜天,似乎制作能说人话、能自主思考的智能机器指日可待了。泡沫破灭,五代机项目是完败,本来日本雄心勃勃要借助五代机项目赶超美国,做软件产业和IT的带头羊。其结果是与美国的距离更远。 不过反过来说,知道解决问题的 knowhow(窍门),可没有合适的专项语言工具来实现,也往往望洋兴叹。通用语言可以书同文,也的确可以看到书同文的大趋势,但通用语言毕竟难以照应众多领域的特殊需求,因此专项语言的创造会不断深入下去。对于很专业的问题领域,没有针对性的专项语言,解决问题往往事倍功半。比如,很难想象用通用语言可以写出有深度的自然语言的 parser 出来。 最近思考这辈子 involved 的三次 NLP 专用语言的设计和应用,悟出来语言设计的简洁和表达力之间的某种平衡,会对利用这个语言解决问题并维护系统产生很大的影响,哪怕本质上都是相同的 formalism。设计NLP 专用语言的特殊魅力在于其元语言(meta-language)的特性:为了解析(parse)和处理自然语言,我们需要一种元语言(专用的formalism)去描述自然语言,而用元语言编写的程序,其主体是自然语言的形式化文法,本身也是一种语言,也需要被解析(parse)、编译(compile)和运行(running)。这是何等有趣的语言之塔的螺旋上升。 第一次接触是在国内,导师制定的语言标准,简洁到无语,整个语言不允许有 SPACES,虽然基本功能都有了,还是失之于陋,而且天书一样不具有可读性。然而,在上世纪80年代的软硬件的条件下,在中国相对隔绝的环境里,我的导师刘先生创造出了一整套适合MT和NLP的语言(单有绝顶智慧是不够的,主要还是他有前20年机器翻译的经验做底),亲手实现其 parser(专项语言解析器) 、 interpreter (解释器),和融合了流程控制的 runner (导师称其为语言处理的控制器),并成功应用于实用机器翻译系统的研发中,这是非常了不起的成就。高山仰止,是我对恩师一辈子的感觉。 第二次在水牛城,与瑞典工程师合作,照猫画虎,跟着欧洲施乐实验室的样子,共同创制的。表达力丰富而规范,但没有风格,也不够专项,NLP 本体要求渗透不足。 第三次是来加州以后与印度工程师合作,NLP 本体工作是做足了,语言功能强大,具有扩展性,远远超出了传统的有限状态 formalism 的框框。但该工程师偏好结构清晰,不惧繁琐,叠床架屋,离简约渐行渐远。一个简单的模式规则,也要写一大篇代码,几乎可以与老老年 COBOL 媲美了。 有了阅历之后,这几年有机会重新来过,有时间从容设计。创制一款既简约又丰富的专项语言是何等赏心乐事。这才叫过一把做上帝的瘾。
|
|