语言小论
晚上Maxime谈论起法语中的阴性词和阳性词,我问他这有什么规律可寻吗。他说完全没有,就是说多了一个一个记下来就好;如果你用错了也没关系,反正大家都听得懂。而如果是个外国人讲错了就更无所谓了,他说完全不会由于这个去评价这个人如何。这倒是让我思考起语言中语法规范的严谨性和通俗性。其实现在各个国家的语言,细究起来都难言“规范”,总是存在着各式各样的习惯用法以及不成文的规矩,打破一般性原则的构词、时态语态和词组顺序比比皆是。这里的深层次逻辑是,用的更普遍的,而不是更规范的,才是语言。如果一个词语被当代的大多数人用错,那就将错就错好了,没有必要强行统一到前些时代的意思和用法。此处的逻辑,更多的是体现尊重世风民俗。几十年前曾经有人试图创造一门世界语,最终无人问津,不是由于这语言设计得不好,而是由于没人说。如今世界上最通用的英语,可能我们会以为流行的原因是简单易学,实际上是我们学太久习惯了,其间的各种时态语态变化细究起来规律总有例外,可一点都不简单。
类比于编程语言,为了实现科学系统性,我们不能像一门日常说的语言一样肆意发挥而无定数,所以有了更加严格的语法和规范。但这并不是说同一个功能实现只有一种表述:在众多的编程语言中,我们或多或少可以在基础语法层面用不同的语句实现同样的功能,而这个度完全取决于这门语言的设计者的个人品味。放之于程序中,你也可以借由写得千奇百怪的过程实现同样的结果,撇开架构不谈,即便仅仅是变量(名词)和函数(动词),就会有不同的选择甚至是随便选择。北欧语言普遍喜欢极长的名词,反映在代码中可能就会是极长的变量和函数名。但我见识过美国人也使用极长的变量和函数名字,所以这绝不是什么孤立现象。相反地,有一些人,尤其是早期写代码的科学家,喜欢极短的如同数学符号一般的名字,比如i,j,k,a,b,c一类的,再往上叠就是ii,jj,kk,看得也是让人一头雾水。这些语言中不起眼的角落,也是最难统一规范的部分,全靠个人的习惯来把握到底多少是冗余多少是过简,什么才是适中的区间。
在总体上掌握了英语以后,由于没有迫切的需求,很难有充足的动力去学习另一门新的语言。但 如果真学习一门新语言,我的思路跟一开始上课学英语会有很大区别。相对而言,我会非常重视名词和动词,同已知的语言建立映射关系,然后才会去考虑形容词、副词、连词这一类和情感认知相关的部分。类似的对于新的编程语言,无论再如何猎奇,都需要回归基础数理逻辑,或且非加上循环判断递归,辅以和计算机硬件之间的联系,就可以很快上手。在这之上的,比如程序里起个名字或长或短,弄个类型或杂或精,写个循环或快或慢,都是好像文章品味一样的东西,好坏时常难以量化,每个人心里却多少有一个标准。没有人规定鲁迅的文章就是好文章,但我们都喜欢读,就演变成一种美学范式了;某些文章可能佶屈聱牙但也是文章,读是可以读,但就是差那么点意思。
有些东西我们以前无法度量,现在无法度量,可能以后依然无法度量。世界不总是精确的,反倒是模糊得可爱。