第十七章 语言与数学
维利有几分仓皇。他看到尤利娅家的那个小鬼真的走远之后,才跑了起来。 刚才那个小鬼撞到他身上的时候,他真的吓坏了。他可是尽了最大的努力,才控制住自己的。 “不能这样下去了……” 维利这么想着,快速奔跑,很快就离开村子边缘,蹲在大路旁边。烟尘滚滚而至。维利站了起来,挥动双手。 汽笛轰鸣。在刹车声与爆炸般的扬尘之中,一个黑影停在维利面前。随后是调整摄像头焦距的声音。过了半晌,一个粗犷的声音才说道:“维利?你为什么在这里?” “以诺……”维利声音颤抖:“我好害怕啊,以诺。” 维利靠着重型工人们过活,自然知道他们的日常。他知道,以诺这个时候很有可能会路过这条路。 “嘿!你有什么好怕怕的?”以诺毫不在乎。 维利尖叫:“昨天可是你让我推那这家伙出去的!是你啊!你不能不管我!不然的话……不然的话……”维利说着,发出哭声:“以诺大哥!我……” 他一开始的时候,确实是想要讨好以诺,这才答应他“整一下‘约格’”的。以诺是重型机械里最大方的一个。最重要的是,以诺很懒,经常雇佣其他工人装卸。只要能和以诺交好,那维利就可以不愁工作了。 但维利是真的没想到,那个“约格”……不,那个“山”好像真的很厉害。 他居然真的能够战胜一个武者! 以诺语气也有几分紧张:“他发现你了?不对啊?当时周围都是我们这边的人……他们都参与了,不可能去告发我们的。” “尤利娅家的那个小崽子啊!”维利尖叫。 “尤基?他看到了?”以诺犯了难。他确实觉得尤基这个玩意很烦,如果不是尤基,说不定尤利娅就接受他了——甚至向山都是尤基挖出来的。 “他刚才走在街上,撞了我一下!他撞了我一下!”维利尖叫:“那个小崽子肯定是看到了!不然的话……不然的话……” “靠,就撞了一下?”以诺啼笑皆非:“就这点小事?” “什么叫‘小事’?我推了那个怪物一把啊!”维利大喊:“那条狗都输了,我不可能赢的!” “那只是运气好!”以诺恶狠狠的说道:“只是大老爷好心肠而已!呸,什么赢了。他不是还倒在地上说‘我输了我输了’什么的吗?这种懦夫……呸!” “你不能不管我!”维利尖叫:“我们把那个小孩子骗出来吧!不管是碾碎了还是拆成零件卖了……” “嘿!你疯了!”以诺吓了一跳。他可是真的打算要和尤利娅在一起的。以诺知道自己的性格,他守不住秘密。他要是动了尤基,就没法和尤利娅在一起了。 以诺本来就被这个家伙纠缠得有点烦了。但他又觉得让这个家伙就这样行动,尤基出了事,说不定会牵连到自己。以诺便说道:“多大点事……这样吧,我今天本来就打算到城里乐一乐。这样,我请你看点好看的,怎么样?” “好看的?”维利有些迷惘:“是什么?竞技会?还是新游戏?” “比那个刺激多了……来来,上车!” 以诺身上没有驾驶位。他将货斗略略倾斜,让维利自己扒上去。 尘土飞扬。 ………………………………………………………………………… “一个真正的程序员,他的编程从裸机开始!” “一个真正的程序员,不存在面向对象与面向过程之分,也不存在强类型与类型不安全之别,从机器语言到汇编器到编译器到无数高级应用程序,他无所不通!” 某些回忆闪闪发光。向山已经记不清这是什么人对他说的了。不过,某些“知识”成分的东西却在提醒他,那个人是历史上有名的程序员,是曾经决定了历史面貌的人。 向山和“这个人”有很深的交情,所以他学到了关于编程的“一切”。 这东西的本质是“数学”。 编程,是语言学,也是数学。 或者说,语言学就是一种数学。 二战结束的前后,数学家们开辟出了一个被称作“字问题”的全新领域。在这个领域中,一些数学概念被套上“文字”的外衣,用代数结构产生的形式自然的表明着它们自身。数学家们尝试使用语言学的规则玩弄数学。 1944年,美国逻辑学家,人工智能先驱埃米尔·波斯特就证明了字问题具备不可判定性。 而在1947年,安德烈·马尔可夫之子,阿纳托利·马尔可夫也不知晓波斯特工作的前提下,做出了一样的证明。 “语言”之中,存在“不可判定性问题”。这是第一个并非由人类提出、并非出现在计算科学领域的不可判定性问题。 而与此同时,语言学家也沿着相反的方向,抵达了相同的境界。 如果说现代语言学起源自费尔迪南·德·索绪尔,那么诺姆·乔姆斯基就是索绪尔之后的高峰。而乔姆斯基除了作为语言学家、哲学家与社会学家广为人知之外,他还可以算是一个数学家。 他对语言学的研究,甚至被录入了数学史之中。 “上下文无关语言的语法”和“正则语言的语法”这两个由乔姆斯基创造的领域,在计算机科学理论之中,也有相当的地位。 遗传学家们同样尊敬乔姆斯基,他们认为,乔姆斯基对语言的研究,或许可以成为破解遗传密码的钥匙——他们可以反推出隐藏在遗传信息中的、“造物主的语言”。 或者说,遗传化学所遵循的“程序”。 只要对相关领域的数学有足够深的研究,那么创造一门独有的语言,就不是太困难的事情。 真正难的,是在保证语言对人晦涩的同时,对机器简单易懂。 越是晦涩的语言,在内功上的优势就越大。侠客就是依靠内功在网络之中、在这个世界隐藏自己的。“语言”是他们所有防线的根。他们大脑的语言机能,与自己的内功高度协同。 大脑所熟悉的语言越晦涩,内力就越是无迹可寻。 如若单纯为了内功上的优势,就让计算机的运行效率下降,那就本末倒置了。 Lisp就做不到“晦涩”这一点。它太接近数学了,以至于只要知道了它的入门知识,厉害的数学家就能知晓它的用法。 C语言是“具备自然语言特征的高级语言”,它的使用人数实在是太多了,所以这一门语言呈现出一种“野蛮生长”的状况,甚至在很短的时间内出现了“语言的流变”现象——这一点就很接近自然语言的演化了。如果世界上出现两块网络相对封闭的区域,那么C语言甚至有可能演化出“方言”。 向山不管是哪边都很熟悉。 在内功的领域,这就一法通、万法通了。 向山觉得,自己应该还认识那么一个人。这个人或许名声没有那么响亮,但他绝对站在了人类认知的边界上。 他从自己的朋友们身上学到了很多东西——应该是这样。 但仔细想想,这似乎又是反常识的。在向山的印象之中,一个人,最多也就能够在一个领域进行深入的学习,其他部分都只能浅尝辄止。人类的知识,早就扩张到了“个体”无法掌握全貌的状态。 他不应该又懂工程学,又精通编程,数学水平也很高才对。就算他真的和那么厉害的人是好朋友吧,也没道理说他就能够学会这些朋友的长处。 爱因斯坦晚年最好的朋友是最顶级的数学家哥德尔。但这段交情也没有让爱因斯坦的数学水平提升到哥德尔的层次——至少在真正的数学家眼中,阿尔伯特·爱因斯坦先生的数学水平仍旧是“作为物理学家够用了”的层次。 但是……事情就是这么奇怪的发生了。 向山肢解了终端的cao作系统。他用自己的编译器替换了原本的编译器。 不管是下里巴人的Java、仅仅是根基的C、如古老诗歌一般唯美而孤独的Perl、如同现代诗歌一般激情的Ruby、易学难精但大成之后近乎神明的Python,还是最贴近数学也最贴近造物的Lips,甚至是它们的后继者,都不适合用来维系内功的存在。 无他,但因它们都是为了“让别人能够使用”而被创造出来的东西。 这些语言,天生就是为了让人读懂而存在的。 阻止其他人读懂它们的,只有智商。 哪怕C语言已经形成了“方言”,但“方言”对于保密来说,仍旧不够。 对于侠客来说,好的语言,可以为他们隐藏自身意图,也能在防火墙被瓦解、加密被破解、封装被撕开、任督小周天被打断之后,给予最后的反击机会。 而你不能寄希望于你的敌人是个傻子——你得想个办法,让敌人就算足够聪明,但缺了关键信息就短时间内无法用意识触及你程序之内流转不息的代码。 每一个流派的内功,都对应了特殊的编译器,有特殊的语法规范和命名方式。它们所编译的高级语言,与过去的高级语言在设计思路上大相庭径。 这是“为了让人难以理解”而创造出来的语言。 如果说过去的程序员在试图创造一种“最好的语言”,好到所有人都会想要用它,那么侠客们所创造的语言,就是完全相反的,“最差的语言”。 更难能可贵的是,你还得保证机器可以接受这种“差”语言, 而在这一点上,向山有着一种绝对的自信。最开始的时候,他也不知道这种自信来自哪里。 在花了两个小时重写编译器之后,他想起了更多的知识。 他内功的根基,是一种无名的、只在极小圈子里传递的语言。 很少有人知道这个语言,它根本就没有被广泛的流传开。只有很少的人见识过它,而能够学习它、使用它的就更少了。光是学习这一门语言,精力成本就高过学习一门外语。而用这门语言编程,难度更是相当于用一门外语写出顶尖的诗——这门外语还得和你的母语属于完全不同的语系。 “话说回来,如果真的有这么难的话……我到底是怎么学会的啊?”向山喃喃自语:“我到底是什么人啊?我怎么这么厉害啊?” 在完成了编译器的重写之后,向山仿佛是解锁了更多的知识。数据飞快的从他直连大脑的芯片中输出。代码覆盖代码,终端屏幕上出现不规则色块,然后很快关机重启。 这并不是从无到有的创作。向山很久以前,似乎也经历过这个场景,很是类似。 或许因为记忆的残缺,他不能完全复现那时的技术。但就算这样,他多半也有了立命的本钱。 融语言,绝对是世界上最TM难用的语言。 但在侠客的视角上,也是最强的语言之一。