我为什么不再公开开发Yin语言 (转自:http://www.yinwang.org/blog-cn/2015/03/18/yin-lang-secret/)
我为什么不再公开开发Yin语言有些人可能知道我在设计一个程序语言,叫做Yin语言。最开头宣布要做这个语言的时候,很多人热血沸腾,可是过了不久,我发现自己很不喜欢这样的气氛,越来越厌倦跟人讨论,所以后来悄悄地丢掉这些人,淡出了。我现在想告诉你我是怎么想的。
我从来没有想让Yin语言流行起来。我对程序语言的认识,其实超乎所有人的想象。我默默地看着各种新语言扯着各种幌子,继续犯我根本不会犯的错误。这些语言缺少的不是功能,而是简单和优雅。要达到简单和优雅,必须要有品位,而品位是非常难得到的。没有经过Indiana式教育的人,是几乎不可能达到这种品位的。就算Friedman培养出来的那么多学生,也极少有人可以达到我这种地步。我清楚的知道,其它语言设计者是完全没法达到我的一些精华思想的。我很希望他们设计出那样的东西,这样我就不用亲自动手,然而至今没有发现任何人可以做到。这些想法,已经被我在多个原型中实现过,所以具体做起来不会是问题。在我的心目中,Yin语言就像原子弹的技术。我不想搞核扩散,我并不想让所有人都得到它。我曾经觉得应该把它与全世界分享,后来我发现,你越是愿意分享,别人越是不拿你的东西当回事。我觉得这个世界不配拥有这样的语言,因为人类是那么的愚蠢,而世界对我是如此的不友好。在资本主义这种鼓励贪婪人的制度下,Yin语言被所有人掌握,很可能不是一种祝福,而是一种灾难。所以即使我把Yin语言做出来了,它也只会属于少数人,我不想让这样的技术落到贪婪或者愚蠢的人手里。
我很不喜欢人们对于一个新语言的反应。我不会因为人们对我设计的东西显示出盲目的热血沸腾而受到鼓舞,因为越是盲目热情的人,越可能脑子有问题,越可能在将来浪费我的口水,有理也说不清。我宣布开发Yin语言的第一天,就有人想把其他语言的“社区”的概念放到它身上。就像很多语言都搞得像宗教一样,一下子出现了好些想做“Yin语言传教士”的人。有些人太积极了,未经我同意就建立了IRC聊天室之类的东西,还有人立即买了个域名给Yin语言(然后控制权还没有给我)。他们其实没有想到,那些都不是我想要的。我很不喜欢其他语言的宗教性质,社区意识,阵营意识。我感觉有很多人其实只是想抢占“第一把交椅”,就像很多其他语言的狂热分子一样。他们让我感觉,从一开头我就已经失去了对这个语言的控制,仿佛它不再是我的设计。Yin语言跟其它语言不一样,它不应该有一个社区,不应该成为一个宗教,因为我是一个科学家,我的设计完全出于理性的思考。
我也不喜欢很多人对Yin语言肤浅的赞美或者质疑。有些人激动地对我说:“美国人,日本人,都有可以设计语言的人了,我们中国终于也有了!” 有的人甚至建议让它看起来像中文,符合中国人的思维方式。这些说法显示出人们对语言设计的无知。一个程序语言,本身就跟人类语言扯不上任何关系,只不过有些关键字是人类语言的单词而已。也没有所谓“中国人的思维方式”一说,因为程序语言描述的是一个机器,这个机器根本不是依据人类的思维方式工作的,它是一个物理的实体,就跟汽车的引擎一样。所以无论把一个语言设计得像中文或者像英语,最后都是一个错误。SQL和COBOL就是这样的糟糕语言的例子,它们试图设计得像英语,结果惹出更多的麻烦事。想要一个程序语言有“中国特色”,其实显示出国人的自卑心理,也是在贬低我的价值。“中国第一”对我来说毫无意义,这让我感觉他们其实认为Yin语言跟“国产Linux”是一类的。要知道,我是世界上最强的语言设计者之一(也许没有之一),我的价值是不限定于任何国家的。
还有的人开始发送各种github issue,请求他们在其他语言(比如Ruby)里用过,认为重要的“特性”。有人要求我给这个语言“定性”,一本正经的要我说明这是什么“范式”的语言。有人义正言辞的索取1.0版本的specification,有人开始质疑我的一些设计,甚至自作聪明的做了改动…… 这一切都让我觉得越来越傻,越来越无语。他们不知道,他们头脑里的很多概念几乎全都不存在于我的脑子里。我不喜欢有人自作聪明,觉得好像自己懂很多似的,好像还可以评价甚至教育我。每一次不耻下问都发现似乎有人真以为我不懂,以为自己是专家了。Yin语言也许根本不符合任何一种“语言范式”,然而它也不会像Scala一样弄成个大杂烩。它应该是天衣无缝的设计。
另外,很多人认为重要的特性,很有可能是有问题的。他们不明白,现有程序语言的问题,不是没有实现某些特性,而是实现了多余的特性,有问题的特性。如果错误的特性被加了进去,一旦有人开始用这个语言,就再也没法去掉了。所以作为一个优秀的语言设计者,我的一项重要任务是防止多余或者有问题的特性进入语言里。我也很不喜欢有人拿我的语言,我的开发实力跟其它语言作对比,因为比较本身就是一种不尊重的行为。比如有些人质疑Yin语言有没有Go语言好,其实是在贬低我,因为我的水平跟Go语言的设计者根本不是一个档次的,Go语言的设计者当我的学生都不合格。
所以,Yin语言的设计开发其实仍然在缓慢地进行中,然而已经不再公开,不再开源。我觉得所谓“开源精神”纯属扯淡,很多人开源不过是为了提高自己代码扩散的速度,提高知名度,这样可以带来利益,其实没有人真的是想做什么“贡献”的。这样的虚伪行为带来了开源社区的代码质量普遍低下,各种浮夸之风盛行,有人却看不出来。我不是Paul Graham,我不会吹牛,扬言要做个叫Arc的Lisp方言,结果最后做出来的东西连退步都不是(not even a step backwards)。我是有真正的实力,受过系统的精深的教育的,然而我真的有自己的困难和自己的生活。太多不合格的程序语言设计者占据了重要的语言设计岗位,很多公司已经完全不明白谁才是真正的专家。由于没有经济支持,我的大部分时间得用来做其他工作。设计语言是一个吃力不讨好的活,我想找到其它事情,甚至进入另一个领域,利用我的特殊品味来创造更大的价值。我不是工作狂,我也需要休闲和娱乐。我已经为技术耗费了太多的生命,我觉得我的人生是不完整的。为自己工作其实仍然算是工作,工作和生活需要平衡。我需要享受生活,需要陪我的猫咪,需要跟朋友玩,所以显然是不会浪费周末明媚的阳光,蹲在家里写代码的。所以Yin语言的开发虽然在进行,进度是不会很快的。即使我完成了,可能也不会给很多人用的。所以你们还是继续忍受现有语言和系统的扯淡和煎熬吧 :)