读了饭友创亿无限的文章《我对中文内核的一些想法》之后,谈一下自己的见解。本文皆为个人观点,必有偏激、先入为主之处。欢迎讨论、争论。
总体说来,我全面提倡英文编程,同时,对中文编程也充满了兴趣。先说一下英文编程的便利条件。
- 打字方便。无须安装输入法,26+10个字母数字组合就能胜任99%的输入任务。而且,做成IDE时也方便,可以输入几个字母时由程序自动提示后边的内容,减少工作量,提高准确性。中文编程的话,不是不行,而是工作量更大些。试想,你使用拼音或字形输入法时,不但有输入法的提示,还有随之而来的编程提示。当然你可以选择不提示。
不过,方便与否是一种主观唯心的感受。你当然可以拥有自己认为方便的设置。
- 编码统一。除非涉及到输入输出,否则一般情况下不必考虑是utf8还是gbk,抑或gb18030。全部使用半角字符,也省得来回切换。虽然中文编程中也可以使用全角半角混用(不规范),或者只用全角,总而言之是麻烦事。
- 英文的更具有通用性。你可以说,中文是全球第一大语言,也可以说,使用中文的编程人数正在处于上升趋势。但是,英语程序人员的范围广,编程资料也更多用英语写成,这是无可否认的。MSDN是用英语写的,Linux内核使用英文来写备注,印度的程序员大部分使用英语(这个例子有些极端了呵呵,他们的官方语言之一就是英语,因此他们在使用英语的编程资料时更有得天独厚的优势,相对于官方语言并非英语的程序员来说)。
- 标准化。标标准化是提高效率的捷径。功能标准化(发布标准API),有利于减少重复劳动,降低前期时间、研发成本,语言标准,有利于更好地沟通。如果我们是为了一切做到大而全、小而全而非得成立和采用自己的标准,则不啻是重复发明车轮。
- 便于推广。有人说了,MSDN也有中文版。不错,它是为了把它的技术推广给使用中文的用户罢了。“用户使用什么语言,我们就推广什么语言版本的服务。”这一概念很符合市场营销的思想。推而广之,我们的产品,如果想让老美、老英,或东边那个小岛国,以及其它国家的用户使用的话,也会努力做到使用客户所使用的语言。这一点在OEM中体现得尤为明显。即使你的库是以lib、dll形式发布,其说明文档总得翻译成人家能看得懂的语言吧?即使后台代码可以使用中文编程,前台界面你总得翻译成人家能看得懂的语言吧?当然,如果编程只是自娱自乐,不必与人交流,不必推向市场,或者不必推广到更广大的市场,那就悉请尊便了,使用火星文也没人说NO,使用旧石器语言也无可厚非。
- 使用英语不等于不爱国。在泛爱国论抬头的年代,言行稍微偏激就会被扣上“卖国贼”的tag。awflasher有一篇类似的文章,写道:“有些人,说着英语,却在默默地为祖国贡献。”
相比之下,中文编程还有很长的路要走。不是很长,是太长的路。
- 敌众我寡。之前所有的语言都是以英语为关键词的,英语已经占据了编程语言的每个角落,每种语言都有数种方言,都有许多IDE,广泛应用于底层、界面、数据库、文本、语音、网络、移动设备,诸如此类。可以说是上至原子弹,下至卖鸡蛋。作为跟进者,中文编程不是向c语言、汇编语言、perl、python、php等等语言中的某一个来挑战,而是要向全部语言来挑战。中文编程语言,能搜索到的有易语言、以前常常活跃在aogosoft.com却经常被冷落的“邱明中文汇编”(邱明的网站已经无法登录)、O汇编语言(OASM)、中蟒(基于python),只是散兵游勇,廖若晨星。首先从敌人数量上来说,绝对是敌众我寡,在横向与无法与之抗衡。
- 敌强我弱。从语言历史上来说,以英语为关键词的编程语言,老的有了几十年的历史,中的也有十多年历史。经历了多次改朝换代、性能优化,达到的高度不是中文编程在一两年、三五年内所能赶上的(换句话说,如果指望在三年达到别人三十年才能达到的高度,就需要在三年内做完人家在三十年内所做的努力的基础上,再有所超越)。而中文编程只是在某些领域能够正常运行而已,无法超越过同类英文类编程语言。在纵向上,亦输了一局。
中文编程的出路。但是历史总是给新生事物以机会的,否则世界怎么会发展?只要找准了方向,找准了定位,就总能够崭露头角,立于不败。
- 找准方向。数据运算首先不是中文的强项了,就不必再来逞强了,老老实实地使用阿拉伯字母(也是外国字母哟)就得了。其它也类似。中文编程的用武之地在于:
- 有迫切需要的(无论来自国内还是国外);
- 外国现有的技术还没有达到的;
- 中文编程恰能大显身手的。本点是最重要一点。
英文也不是放之四海而皆准的。举例来说,它就无法完美地处理中文。呵呵。个人比较喜爱的正则表达式在处理英文字母和数字时,展示了令人难以致信的强大。但是,它在处理看似毫无逻辑可言的中文时,却似狮子咬刺猬,无从下嘴。如果能有一种中文语言能够完美地实现中文正则表达式,其功绩将是里程杯似的。(警惕:如果流氓会武术,如果G*F*W会中文正则表达式!)
这里只是提供一个方向。路子还得自己选,自己走。这个任务交给易语言们了。只要有需要,就会出现满足这种需要的产品。亦即,只要能满足人们的某种需求,就一定能够在市场竞争中生存。
- 站对位置。一开始就以改变世界为目标,总是有些唐吉诃德。同理,中文编程大可不必一开始就把以前所有编程语言都走过的路子再走一遍,跟老人抢饭吃。就跟mysql天生就是做数据库的、php从来都是做网络的一样,只有找准了中文编程的位置,才能变得不可或缺。
- 提供新特性。虽然程序员喜欢自己最拿手的语言,但这并不意味着固步自封而不学习新事物。如果中文编程在某个领域能够胜出传统语言一筹,则总是会有程序员主动(或被项目经理逼着)学习该种语言的。
我对中文编程很有好感,而且十分期待。不过,鉴于中文的编程远远没有达到英语编程高度和普及度,现在就大力推广和普及易语言,总觉得为时过早。对于用户来说,并不关心所使用的程序是使用易语言还是C语言,只要易用、满足功能上的需要即可;对于程序员来说,易语言尚不能代表先进的生产力的方向,无论是执行效率还是进化阶段,远远没有走在技术前沿。它还有很长的路要走。这条路,应该主要靠自修,而非政府的催熟。政府的作用可以是提供资金上的支持,而非政令上的规范。
考虑到jyf1987所言的二级考试,主要是考思路和算法,使用具体什么语言实现倒在其次,因此,如果仅仅是为了推广中文编程而推广易语言,我觉得有些欠妥。理想的情况是,吸引胜过号召,诱惑胜过强迫。如果采用中文编程的语言(包括易语言)从执行效率、编程便捷度上都胜其它语言一筹的话,桃李虽不言,树下自成蹊。
