“一个真正的程序员,他的编程从裸机开始!”
“一个真正的程序员,不存在面向对象与面向过程之分,也不存在强类型与类型不安全之别,从机器语言到汇编器到编译器到无数高级应用程序,他无所不通!”
某些回忆闪闪光。向山已经记不清这是什么人对他说的了。不过,某些“知识”成分的东西却在提醒他,那个人是历史上有名的程序员,是曾经决定了历史面貌的人。
向山和“这个人”有很深的交情,所以他学到了关于编程的“一切”。
这东西的本质是“数学”。
编程,是语言学,也是数学。
或者说,语言学就是一种数学。
二战结束的前后,数学家们开辟出了一个被称作“字问题”的全新领域。在这个领域中,一些数学概念被套上“文字”的外衣,用代数结构产生的形式自然的表明着它们自身。数学家们尝试使用语言学的规则玩弄数学。
1944年,美国逻辑学家,人工智能先驱埃米尔·波斯特就证明了字问题具备不可判定性。
而在1947年,安德烈·马尔可夫之子,阿纳托利·马尔可夫也不知晓波斯特工作的前提下,做出了一样的证明。
“语言”之中,存在“不可判定性问题”。这是第一个并非由人类提出、并非出现在计算科学领域的不可判定性问题。
而与此同时,语言学家也沿着相反的方向,抵达了相同的境界。
如果说现代语言学起源自费尔迪南·德·索绪尔,那么诺姆·乔姆斯基就是索绪尔之后的高峰。而乔姆斯基除了作为语言学家、哲学家与社会学家广为人知之外,他还可以算是一个数学家。
他对语言学的研究,甚至被录入了数学史之中。
“上下文无关语言的语法”和“正则语言的语法”这两个由乔姆斯基创造的领域,在计算机科学理论之中,也有相当的地位。
遗传学家们同样尊敬乔姆斯基,他们认为,乔姆斯基对语言的研究,或许可以成为破解遗传密码的钥匙——他们可以反推出隐藏在遗传信息中的、“造物主的语言”。或者说,遗传化学所遵循的“程序”。
只要对相关领域的数学有足够深的研究,那么创造一门独有的语言,就不是太困难的事情。
真正难的,是在保证语言对人晦涩的同时,对机器简单易懂。
越是晦涩的语言,在内功上的优势就越大。侠客就是依靠内功在网络之中、在这个世界隐藏自己的。“语言”是他们所有防线的根。他们大脑的语言机能,与自己的内功高度协同。
大脑所熟悉的语言越晦涩,内力就越是无迹可寻。
如若单纯为了内功上的优势,就让计算机的运行效率下降,那就本末倒置了。
Lisp就做不到“晦涩”这一点。它太接近数学了,以至于只要知道了它的入门知识,厉害的数学家就能知晓它的用法。
c语言是“具备自然语言特征的高级语言”,它的使用人数实在是太多了,所以这一门语言呈现出一种“野蛮生长”的状况,甚至在很短的时间内出现了“语言的流变”现象——这一点就很接近自然语言的演化了。如果世界上出现两块网络相对封闭的区域,那么c语言甚至有可能演化出“方言”。
向山不管是哪边都很熟悉。
在内功的领域,这就一法通、万法通了。
向山觉得,自己应该还认识那么一个人。这个人或许名声没有那么响亮,但他绝对站在了人类认知的边界上。
他从自己的朋友们身上学到了很多东西——应该是这样。
但仔细想想,这似乎又是反常识的。在向山的印象之中,一个人,最多也就能够在一个领域进行深入的学习,其他部分都只能浅尝辄止。人类的知识,早就扩张到了“个体”无法掌握全貌的状态。