国内程序员那么多,为什么不开发一个属于自己的编程语言?主要原因是:中文编程技术上不然,但做生态太难了!
先说说纯技术上的难度。看到很多回答说操作系统、CPU、芯片、指令集等是英美语系的人发明的,所以中文编程水土不服,开发难度大于英语编程。其实这种说法是完全错误的!
编程语言分很多类型。第一种是像C、C++、Go这样的直接编译成本地机器码。第二种是像C#、JAVA这样的依赖虚拟机,编译成中间语言(字节码)。第三种是像JavaScript、Python这样的依赖解释器,不需要编译。不论哪一种类型,都不存在制约中文成为优秀编程语言的技术瓶颈。
对于第一种类型,不论中文英文,最终统统编译成基于特定CPU芯片指令集的指令。在操作系统看来,它们是完全无差别的。性能上没有任何区别。对于第二种类型,编译成中间语言,在虚拟机看来,同样是无差别的。这里所谓编译,说通俗点就是“翻译”,将中文或英文写成的代码翻译成机器指令或中间语言(字节码)。
对于第三种类型,解释器作为进程运行于操作系统,由它直接解释我们写的程序代码。比如JavaScript,解释器就是浏览器。离开了浏览器,JavaScript是运行不了的(这里不考虑特殊手段,其本质也是其他解释器)。很明显,解释器既可以解释英文代码,也可以解释中文代码,甚至未来还可以解释人类自然语言或语音。比方你用普通话向一个智能家居说“开空调”,然后内置的解释器就会将空调打开。说明就连中文语音都可以编程了,更不用说中文文字!
总之,技术上看来,中文编程相比英文编程没有任何更难的地方。这与中文输入法比英文输入法难做没有任何可比性。
下面讨论另一个重点,生态问题。
正如同工业化一样,现在越来越提倡合作开发,从轮子造起的汽车厂已经不复存在。编程语言也是如此。现在没有任何一个流行的编程语言开发团队可以开发出所有的相关库函数和框架。早些年,似乎微软具备这个能力。微软能开发出从操作系统,编译器,数据库,图形界面框架,显卡加速动画,浏览器支持库,web开发框架等等一系列“配套设施”。但是,现在已经明显力不从心。
怎么办?那就需要借助全世界的力量去共同维护,维护这个生态。
说通俗点,假如用中文开发出一个编程语言,单从编译器(或解释器)来说,难度并不大。但是还有很多工作要做。因为还需要开发很多很多的库函数给其他开发者用。随便举一些栗子。XML和json解析,主流数据库连接,http客户端和服务器支持,主流加密算法支持,图形界面支持。这些工作量非常大。它们不是必须的,但是如果支持的太少,该中文编程的使用者就会要什么没有什么,什么都得自己写,会很累。比如想解析一个json,居然发现官方不支持,怎么办?网上搜,资料又少,也没有搜索到第三方库,只好自己写了。这就叫生态做的差。
我们还可以往大了说,该编程语言是否有现成的2D/3D动画库,是否有现成的科学技术、数据挖掘、深度学习库,是否有现成的web mvc框架,是否可以支持Windows、Linux、安卓等多个操作系统的跨平台开发。很多很多!这都需要无数的高手共同去开发完善,绝对不是几十人、几千人团队可以搞定的!
生态这种问题还有马太效应,即强者更强。试想,一个编程语言,如果本来生态就差(配套的各种库函数,框架太少),那么就吸引不了开发者。开发者不愿意帮着开发各种开源库和框架,那么生态就好不了……当年微软的手机操作系统就是这样,其技术上非常优秀,但是WP手机上能安装的APP实在太少,连微信都没有,最终用户就不愿意买,都去买安卓和iOS了。WP用的少,开发者自然就没有激情去学习这么一套开发技术。就更没有优秀APP被开发出来。而指望凭着微软那区区几十万人去开发APP显然不现实,它甚至连微信是个啥可能都没有搞明白。就算知道微信,那滴滴、京东、淘宝、王者农药、抖音呢……
总之,生态需要动用全世界的牛人一起去完善!
好了,回到主题,如果开发一个中文编程语言,那就只有懂中文的人才能完善这个生态,而IT发达的其他国家基本不会过问。不是涨别人威风,就我们这点程序员,真做不成像样的成熟大型库。我们就说火的一塌糊涂的Python,它是荷兰人发明的,荷兰人说话用荷兰语。但是如果当初真的限制于用荷兰语来实现Python,今天就没有这个地位了。Python的成功得益于它的生态。连Alpha Go这样的围棋大师,都是用了Python,底层深度学习是谷歌的tensorflow,其接口是Python。没有这些大佬的“推波助澜”,就凭那帮荷兰人自己玩,会有今天吗?
我们现有的中文编程语言,像易语言,习语言,为什么没有成功?毫无疑问嘛,生态差!如果用的人多,就会开发出很多开源的库,同时也会有很多人提出修改建议,有了建议,易语言习语言就会不断版本迭代,不断完善。怕的不是技术,怕的是没有人提意见建议,没有人帮着一起改(假设开源)。
另外再说一个原因,做中文编程语言的必要性不大,远远不如开发芯片的必要性。世界上的开源的,优秀的编程语言很多,我们开箱即用,不存在付费、版权的问题。
总结一下,国人没有开发中文编程语言,不是因为技术上难以实现,而是生态太难做了。
Python语言不是美国发明的;
Ruby语言也不是美国的
C#,Delphi的发明者同样也不是美国的。
但他们的关键字都是英文。
并不是我们不想发展中文编程,而是在当下,中文编程的市场实在是不怎么乐观。
客观来讲,汉语编程确实有一定的好处,更加适合国人的编程习惯。但不可否认的是,汉语编程存在的弊端,也不在少数。
相对于简洁的英文编程,汉字要复杂太多了。而且在输入方面上也没有英语快。并且汉字在意思的表述上容易有歧义,不太严谨。有的时候一字多义,一词多义就会导致机器难以识别。此外,有些相近的含义词如何去划分也是个令人头疼的问题。写长句子吧,又太浪费时间。大大加深了开发的成本。
先说明一点:使用汉语的开发语言是有的,比方说易语言,已经有将近20年的历史了。
但问题是,易语言这些年一直没有流行起来,大多数情况下都是圈友们自娱自乐,甚至有一些人用易语言来写外挂,主流依旧是Java,python,C++等。
究其根本,就在于计算机本事就是由国外开发,底层的东西都是拿英语做的,一个汉语的编译器实在没有多大意义,汉字编程只是一个表皮。众所周知,开发的过程中是很容易出BUG的,假设我是用汉语编程的,由于体量太小我根本就找不到参考的文案。这就直接导致了汉语言编程无法大范围的推广开来。语言最终是要落实到产品上,然后面向市场面向客户的,这些产品有电脑,手机,穿戴设备,智能家居……难道全部都要搞成中文的?
所以综上所述,汉语编程完全可以实现,但是根本做不大,更别提做到Java,C++那种级别。因为汉语确实不适用于编程本身,归根到底还在于国人在计算机发展时的落后。当然了我们也完全不用自卑,可以把功夫花在别的技术上不是更好吗?