9月
16
2014
23

发展中文编程的意义:让大众化编程促进软件产业的建设

一、关于中文编程的争论

关于计算机编程语言的中文化问题,经常在网上看到两种相互对立的观点,一种观点是认为中国应该弄出个中文编程,让大家能够通过中文来编写程序;另一种观点认为中文编程没有意义,编程所用的英文就是那么几个关键字,并不难。前面的观点主要来自于非专业编程的普通大众,后面的观点主要出自专业程序员。网上这两种观点之间的争论非常激烈,有时候甚至到了互相攻击的地步。

我认为,这两种观点都不错,之所以产生这种冲突,主要是因为两者看待问题的角度不同。对于专业程序员来说,他们早已熟练掌握了已有的优秀编程语言,并且在语言方面也不再有多少障碍,他们需要的是更多的中文化技术资料而不是中文编程语言。而对于有编程需求的普通大众来说,他们还没有接触计算机编程或者才刚刚入门,在面对满屏的英文语句时感到使用起来很艰难,而中文编程里面的关键词和函数、变量、方法、事件等等都是中文,能够即看即懂、即用即会,节省大量时间精力。所以,对于这两种观点,我觉得不必放到对立面来,普通大众不强求程序员从现有的编程语言中转换到中文编程上来,程序员也不应该要求普通大众远离中文编程。实际上,有不少程序员在熟练掌握其他编程语言的同时,也在使用着中文编程,并且在中文编程与其他编程语言之间架起了无数个技术桥梁,既方便了自己,也方便了其他人。

在本文的最后面,我也试着解答了一些存在争议的问题:对一些质疑中文编程的解答

目前主流编程语言使用英文
目前主流编程语言使用英文

二、软件产业与大众化编程

世界上软件产业发达的国家基本上是经济发达国家,此外还有一个发展中国家印度。他们都有一个共同点,就是英语普及率非常高。欧美发达国家的母语虽然不都是英语,但是在他们数百年的交往中,使用英语并不是什么难事,而且思维方式几乎是一样的。此外日本很早就将自己西化,其所使用的自然语言也是西方语言和东方语言的结合体。至于印度,它的母语就是英语,在长期的殖民统治下早已融入了西方文化环境。这就存在一个我们平时看不到的优势,在使用编程工具时,这些国家的人可以做到“顾名思义”,无需翻译,也不需要做过多的语言培训就能顺畅地使用。这样就能够保证普通人只要愿意,通过付出较少的学习成本(包括时间、精力、经济成本)就能够使用编程工具做一些自己需要的软件。当编程能够大众化之后,软件产业所需的巨量优质人力资源也能够得到保证。

而在中国,编程还只是“精英化”而非“大众化”。中国的软件行业只能够集中突破,而不能真正建立一个完善的软件产业。产业是基于大众的。中国既不是以英语为母语的国家,也不是像日本那样很早就融入西方的国家,中国人的思维方式跟西方还存在巨大差异。中国网民虽然是世界最多的,但是他们所使用的软件、游戏和网页都是中文界面,他们只能“消费”本地化的软件,而不能用外来的工具“生产”软件。一个消费者众多,生产者却凤毛麟角的市场,可能是一个很好赚钱的市场,但却不是能够支撑一个产业的的市场。因为这个市场中能够为产业提供的人力资源非常贫乏,只能走精英化路线。精英化编程不但会限制产业的发展,而且会导致创新不足,在总体局面上只能跟随国外亦步亦趋。

三、操作系统与软件生态环境

这里不得不说到国产操作系统。操作系统的开发当然是必须“精英化”的,但是它的发展却必须是“大众化”的。精英化的技术可以开发一个功能强大的操作系统,然而操作系统的功能再强大,如果没有多少应用软件的支持也只能是空中楼阁。Windows的成功固然一部分是因为它的雄厚技术实力,但是更大的原因是它拥有一个非常强大的软件生态环境,这个生态环境是由巨量的五花八门、大小不一、良莠不齐的软件所支撑的。另一个成功的例子,就是智能移动设备上运行的Android操作系统,它的成功也源自于软件生态环境的搭建。现在我们所说的软件编程,在桌面端基本上是基于Windows系统,在移动端大部分集中在Android系统。

Windows和Android早已通过各自难以动摇的软件生态环境分别在桌面端和移动端占据垄断地位,国产操作系统要想争夺它们的市场,仅仅以精英化路线埋头研究操作系统技术已经是太迟了。最根本要做的事情,就是以已有的自主操作系统为中心,大力构建软件生态环境。而要想构建一个完善的生态环境,单靠精英化编程是难以实现的,它所需的以万计的应用软件要靠大众化编程才能完成。从这方面来说,需要拥有一个或多个能够让普通大众快速上手的,具有跨平台特性和优秀性能,并且被相关方面大力支持、向自主操作系统生态环境引导的中文编程语言及其开发工具。

四、当前具有代表性的中文编程工具

其实中文编程早就有了,其中以易语言为最突出的代表。易语言发展了十几年,从它官方论坛拥有几十万注册用户来看,其使用者至少也有几十万了。然而易语言主要定位在个人开发上,以共享软件的方式推广,正如我的鸿言人脉管理软件定位一样。这种定位方式适用于个人用户,像鸿言人脉管理软件这种个人信息管理软件,这样定位是没问题的。但是对于易语言这种前期做出巨大投资的全行业开发工具来说,应该定位于团队和企业性质,否则之前所投入的几千万投资很难从个人用户中收回。另外一个原本拥有非常好的发展前景的中文编程语言——“易语言.飞扬”,跟Java、C#相比并不逊色,可惜跟易语言一起陷入了停滞状态。

易语言IDE代码及组件属性界面
易语言IDE代码及组件属性界面

易语言.飞扬代码输入界面
易语言.飞扬代码输入界面

五、对一些质疑中文编程的解答

网上有很多人对中文编程提出质疑,其质疑的角度五花八门,比如计算机底层的实现、中文编程的效率、编程所需的少量关键字、对中文代码感到不适应等等,我试着解答几个方面:

1、计算机最底层的语言是机器语言,它的关键字只有两个字符,一个是“0”一个是“1”,分别代表物理层面的低脉冲和高脉冲。它既不是英语也不是中文,在原理上不存在中文编程在编译执行后比英文效率低的问题。只要中文编程工具具有完善的编译器,能够完全编译成机器码,就能够得到跟英文编程一样高的执行效率。

2、计算机编程语言的发展是不断向自然语言靠拢的,高级语言和面向对象编程的出现,目的是更接近于人类的自然语言和思考方式,让人们能够更顺畅地编程。只不过由于高级语言是外国人先搞出来的,就用了英语作为计算机语言的表述形式。而中文编程的出现,也是顺应这个发展方向,让使用中文的人群能够顺畅地进行编程。这是从编程者的角度来看问题,而不是从计算机的角度看问题。

3、中文编程的输入效率并不像多数程序员想象的那样慢,只要结合一个完善的IDE,有时候甚至不需要输入汉字而直接输入拼音的首字母即可。由于编程所用的关键字不多,编程时添加的变量名称重复的也少,所以不会出现多少重码的现象。比如要打出“如果”,只需在编程环境中输入“rg”加上空格即可,并不比英文的“if”差多少。再比如要打出“编辑框”只需输入“bjk”加空格,这就比英文的“textbox”要快一些了。另一方面,在英文编程中,常常需要定义一长串字符构成的变量,以便能够明确表达该变量的意思和用途,而在中文编程中,由于中文天生具有的丰富表意功能,通常只需输入两到四个汉字即可完整表达变量的意义。这就使得在拥有大量代码的程序中,中文的输入效率比英文要高一点。

4、使用中文编程并不表明一点点英语都不会,而是在母语和英语之间,前者更加熟悉和运用自如。编程语言中的关键字和保留字虽然只有十几个到几十个,但是编程并不只是使用这一点点关键字而已,你要用到大量的函数、参数、属性、事件、方法、变量、常量等等,这些不同用途的名称多数时候是一长串英文字母,记忆起来并不那么容易。而且很多有用的编程资料和帮助文档是英文的,每次查找文档的时候都会存在一个翻译的过程。而中文编程从关键字到函数、参数、属性、事件、方法、变量、常量等等都是中文名称,并且在其对应的帮助文档和学习资料中,都是以中文呈现,可以做到“顾名思义”、“举一反三”,快速上手使用。

中文编程中的属性、方法、事件等等都使用中文
中文编程中的属性、方法、事件等等都使用中文

5、中文编程的提出并不是要把所有其他语言文字都转换成中文汉字,有些人一看到“中文编程”,就想当然地以为要把“1234”变成“一二三四”,把“ABCD”变成“甲乙丙丁”,把“>=”变为“大于等于”。中文编程提出的目的是方便更多的中国人使用,那些数字、字母、操作符基本上每个会用电脑的人都认识,没必要都翻译成汉字。中文是一种包容性非常强的语言,它可以在语境中直接使用其他语言文字。

6、与外国人交流代码的问题。这看上去是一个无法解开的问题,实际上也并不难以解决。中文编程首先要解决的是中国国内的大众化编程问题,只有少数软件需要跟外国人交流。其次,中文编程中的关键字和变量定义也可以在需要的时候转换为英文,或者直接用英文关键字编写,这一点在“易语言.飞扬”中表现得很好,它甚至能够兼容Java、C#的代码。

7、有人认为搞中文编程,就要先把计算机底层的东西都变成中文,比如中文汇编、完全用中文编写的操作系统等等。这里还是存在一个定位问题,中文编程的定位是大众化编程,而计算机底层的东西依然只能是“精英”才能搞的。这些底层的东西并不影响中文编程的实现,不需要把它们先搞出来。不能弃一点而求全面,搞大而全的东西,那样会使得自己不堪重负,最终什么也搞不成。当大众化的中文编程培养出精英人才之后,软件产业自然会朝全方位发展。

8、有的人担心中文编程会让学习者误入歧途,导致不能再学习其他语言。这种担心是多余的,中文编程在编程思想上跟其他语言是一样的,只是语言的展现部分有所不同而已。其实,其他语言之间也存在差异,比如Basic、Pascal、C、Java,这些语言的代码结构都有很大不同,但是并不影响多数程序员同时掌握多个编程语言。另一方面,由于中文具有言简意赅、顾名思义的特点,已经有一些软件开发企业在代码中大量使用中文变量和中文关键词,说明中文和英文在代码中可以优势互补,并不排斥。

9、至于有些人一看到中文代码就感到头晕,这其实是一种先入为主的习惯性反应,当你习惯于使用英文进行编程后,自然会对中文编程感到不适应。但是,对于那些非专业人士来说,中文代码看起来会更加亲切,更加容易看懂。不过,目前的中文编程工具也确实存在一些比较特立独行的地方,比如易语言中的流程线和表格模式,这是特定中文编程工具在发展过程中的特定现象。实际上易语言开发者后来开发的“易语言.飞扬”的代码就非常接近Java、C#的规范,甚至还可以完全使用英文关键字来编写,与Java等语言通用。

人脉管理