开源社区应该选择什么语言?
前传
在开源的世界里,应该讲开发者都能懂的语言!,这是李建盛的一篇博客,发在OSChina上,不过被很多人批评。我想还是需要完整的表达一下自己对于这个问题的看法,因此打算写一篇博客。
下篇
在我内心打腹稿的时候,当然是先想到的上篇的内容。不过,因为上篇的内容,批评性比较强,所以我打算先写下篇,再写上篇。
一个开源社区里,有哪些不同的层面的语言?
- 项目本身的编程语言
- 源代码中的变量名、函数名等所用的语言
- 源代码中的注释所用的语言
- 项目文档所用的语言
- 围绕项目本身讨论,所用的语言(Issue、PR等)
- 项目之外,社区日常交流,所用的语言
因为全世界的开源社区,90%都用英语,所以:我们的语言选择,都只能是英语,我认为这个结论,太过草率了。
一、编程语言与源代码
这个其实应该是最少争议的环节。因为几乎所有的编程语言,都是“类英语”的形式。所以,从阅读体验的角度来说:
- 我们将一个源代码文件,看做一篇完整的文章。在这篇文章中:中英文夹杂,甚至英文加汉语拼音混杂都是严重影响阅读体验的
- 包命名、文件名、函数名、变量名等等,都严重建议一律使用英文
- 在源代码中,我的个人意见是尽量用源代码本身来说话,而无需注释。如果一定要加注释,也强烈建议使用简短英文说明
二、文档
我的建议是:最开始写文档的人,用你最熟悉的语言来写。然后再量力而为,翻译成其他需要的语言。
三、围绕项目的讨论
这个问题,需要从两个层面来看,一个是:你参与到一个已经存在的社区。另一个是:你管理自己的社区。
- 参与人家的社区:入乡随俗
- 自己的社区:取决于社区的目标
所谓入乡随俗,其实很简单:人家社区都用英文,或者都用中文,你就不要冲过去说:“能不能语言自信点?”
社区的目标,就比较麻烦了。我只能说:无论基于何种目标,一个健康的社区,与是否使用英语,并无必然的相关性。或者,换言之:下定决心,一开始就用全英文交流,并不是一个繁荣发展的开源社区的,天然保障。
四、项目之外的日常交流
这个其实更少争论,大家在微信群、QQ群、邮件列表、Slack里,自然就会选择自己最常用的语言交流。如果是一个国际化的社区,自然就会更加多的使用英语。而如果中国人占大多数,自然就会使用中文。强行规定,并无必要。
上篇
秦灭六国
当年秦始皇扫灭六国,然后书同文、车同轨、统一度量衡。肯定是极其伟大的功绩,如果没有当年的统一,现在的中国,搞不好就是欧洲这样的多国语言文字并存的情况。
拉丁文
其实,欧洲也是有过统一的文字的。拉丁文在很长一段时间里,是整个欧洲的通用语,更是学术圈子里的统一用语。只不过,随着罗马帝国的衰落,黑暗的中世纪渐渐结束,欧洲各个民族国家的兴起,越来越多的文艺复兴学者,都开始用自己本国、本民族的语言来思考和写作。如果说,应该讲大家都听得懂的语言,那么:这个大家,到底是学术圈懂拉丁文的大家,还是本民族老百姓的大家呢?
世界通用的候选语言
其实,在英语之前,还有法语、西班牙语、葡萄牙语等等,候选语言。毕竟我们也曾经听说过:法语是世界上最优美的语言,是最精确的语言,是最……的语言。而事实上:英语之所以成为目前事实上的国际通用语,就是因为大英帝国,当年占领了最多的殖民地而已。
计算机编程语言候选项
李建盛在问:“为什么英文是计算机编程语言的主流,而象形文字几乎没有任何机会进入这个领域?”
其实,这个问题很奇怪,因为:除了英文,世界上并非只有中文。还有其他英法德俄西葡,都是字母类语言呀。事实上,如果不是美国打赢了二战,我们现在的计算机高级语言,很可能是德语呢?参见:Plankalkül
历史的偶然
其实,在人类历史上,有很多偶然事件,直接或间接的决定了什么语言成为主流。比如:在数学公式中,有很多希腊字母,那是因为希腊的数学家厉害。在生物、动植物和医学中,有很多拉丁文,那是因为欧洲在这方面的多年积累。现在的计算机技术、软件开发技术、开源社区,通用的语言当然是英语,并不是因为:英文天然、必然、注定会成为最适合的语言。
这只是历史的偶然!