编程、语言学与物理之道

Tuesday, May 16, 2023

1134 words

6 min read

杂谈、反思与批判


当我们讨论计算语言学的时候,我们不会将语言学理论用来解释编程语言,而是反过来,努力将语言生成理论向编译原理上靠。

当我在热学课上无聊地听王鑫讲速度分布的时候,脑子里浮现出的念头是,物理学语言和代码本质上是一样的。

当然,什么叫做物理学语言呢?或许应该叫做物理符号系统才对。物理学使用数学的符号体系作为自己的公理系统,而我们都知道所谓编程语言本质上都是对图灵机的抽象,也是一种数学公理系统。当我们讨论计算语言学的时候,我们不会将语言学理论用来解释编程语言,而是反过来,努力将语言生成理论向编译原理上靠。

从希尔伯特第二问、哥德尔不完备定理开始,语言哲学已经向数理逻辑屈服了,语言学也必须引入一阶逻辑的成果。然而,这是否真的是对语言的抽象呢?

当下最火热的事情莫过于大语言模型了。既然叫做语言模型,但和语言学却没有一点点关系。从本质上生成式人工智能只是一张统计表,统计的是对话中各个语素出现的概率;最后合成一句可能性最大的回答。这样的人工智能能够在多大程度上冒充人类,就在多大程度上证明了人类只不过是贝叶斯概率的机器,而非具有思辨理性的上帝选民;然而,我们也只能依赖于人脑来实现理性了。所以,当我们运用理性来批判和反思大语言模型,也就是我们人类自己时,我们自然会陷入自指的困境。

所以我们需要的是基于计算语言学的人工智能。实践证明大语言模型不能在数学和物理学术领域有所建树;也许能帮你处理数据,能帮你写综述,但它很难证明,很难提出突破性观点。这当然是因为人类本身这方面的训练材料就不多,很少有人类能够完成这样的壮举;因为这样的行为对于人类的逻辑思维有着极大的要求,是生成式人工智能无法满足的,然而对于计算语言学来说,它的上限只限于符号的数量,仅限于人类根据物理定律对于世界的抽象,而在本质上是无限的。换句话说,生成式人工智能模拟的是人类的大脑,而计算式人工智能模拟的是人类的精神。

反过来,让我们考察一个编程活动,我们实际上做的事情是用代码实现我们的设计。因此,代码是主观性的,是自我的表达,需要放在书写者的格式塔中进行分析,而且和具体用的编程语言无关。从这一点上看编程语言是完美印证了自然主义的。编程活动也会符合MP模式,我甚至怀疑C++的左右值系统就是来自于MP模式的运算方式。

而在物理学学术活动中则不然。物理学语言不是天生的,不然古人早就发展出现代科学了;不存在所谓的普遍语法。诚然,作为本科生的我,我写下的推导过程只能作为我的心理学活动进行分析;而学术界的活动,学者们发表的论文,则必要放入到整个科学共同体中考察。其实论文中的所指也具有二义性,可以是科学共同体中的概念,也可以是真实的世界中的概念。当然,理论上科学共同体本身就是对真实世界的抽象,但我们不能确保其正确地指向。用编程界的话语说,就是科学共同体中的概念是对自然界概念的代理。作为科学共同体成员,我们也不会追求简便原则。

然而,实际上存在着物理计算的编程语言。当我们运用这些语言书写物理学系统时,我们到底在表达什么?如果说这取决于写代码的人那时的心理状态,那肯定是荒谬的。所以我们还是得把编程语言结合其所指进行考察。