我在初中的时候,曾经所在班级掀起一股学习日语的热潮,起源是,一个人拿了份假名表,然后全班传抄。是不是新语言的新鲜感让学生无视教师的民族主义教育、或是学生在那个年纪反而有点反叛,要不就是学生通常情况下对新语言在内的新知识都是有兴趣的,总之,它支持了不少学生起码渡过了抄写那套最基本的“字母表”。我们知道,那几十个假名根本不足以支撑最基本的应用,就像学会了26个字母依然不能基本对话一样,即使把要求降低到会几句基本对话,比如小学里仅仅学了一个学期英语的水平,达成者也寥寥无几,这股“热潮”在没有学业的强迫和实际应用环境的支撑,很短的时间就消退了。
初中末期,我和邻桌的一个同学一天突发奇想,说创造一门语言如何,还决定竞赛,两人分别设计语言然后进行比较。说干就干,花了大约两节课的时间进行。我们的设计过程是,先做一套基本的类似字母的符号,然后对拼音和英语之类的现有语言存在的字符进行一一替换,两节课结束的时候还找了几个例句进行“翻译”。输赢已经忘记了,但这大概就是我们那个时候能做的事情了,就是做一套符号,因为没有长期的历史所以只能引用现存单词并且进行转换。后来我们知道,其实假名和韩国语里那些谚文也是这么来的,日本也毫不避讳从西方引进大量词汇写成片假名。看来设计一门人造语言,完全有可能。就算是近代也有人这么干,比如创始于1887年的世界语。
前不久我写一句英语,有一个单词不知道,但是我知道它的反义词,于是想,只需要知道一个,然后另一个加个表反义的前缀不就行了?为何一定要弄成有两个形态差别很大的单词?不知道这是不是我第一次考虑有目标地改进语言。推广下去,可以把时态、比较级什么的也用简单的规则进行规范,我想象学习起来难度会大大减少。
在搜索引擎输入“设计语言”,得到的都是一大堆所谓“程序设计语言”的东西。程序设计语言又叫编程语言,如果说它真的耶算是语言的话,一开始就有明确的设计目标,就是精确地向计算机传达指令,它本身的进化过程从机器指令的注记符号,到增加数学公式、模块化等稍微高级的抽象,都没有脱离精确,所以大致可以猜想,编程语言就算以后推出新的,不管变成什么样有一些本质还是不变的;一些例如“汉语编程语言”、死灰复燃的“函数式”、一些古老教科书里热捧的“面向对象”等噱头也不会解决到超过现在大家通常能想象到的极限的问题。
相对于设计自然语言来说,设计编程语言也并不神秘、它的过程和前面提到的可能的尝试一样,就是个改进的过程,增加一些东西、减去一些东西、把几个不同的分支进行综合等等。打开维基百科,随便查询一个编程语言,通常都会标注“启发语言”、“影响语言”,就是这个东西是从谁那里改动而来,又是被谁改动了换成别的名字。几十年下来,可以发现能称得上是在“设计”的,很有“创新”的非常少,大部分也不过是改进,而且是很微小的改进,很多甚至改了之后还不如原来的好,只能叫做“改动”。造成这些“改进”(或者说改动)出现的,除去类似当初我在初中设计着玩这样以外,还有大学教学、自己做来用在很狭窄的特定领域等等,最可恶的是,有一些公司做出那么些可以仅仅称作是改动的、但是不兼容的东西,就是为了圈开发者从而圈应用,应用能圈用户,而用户带来大量收入,而最终的原因并不是因为它的产品优秀,仅仅是因为不兼容的改动而已。