选择第七题:7. 有人认为,“中文编程”, 是解决中国程序员编程效率一个秘密武器,请问它是一个 “银弹” 么?
答:经查阅资料知道了银弹的含义:顾名思义就是银质的子弹(Silver Bullet),是古老的欧洲民间传说中能杀死狼人的利器。当然现实中是没有狼人的,但现实中确实有银弹这个东西。而其意义也类似于能杀死狼人的最好办法。现实中的狼人可以是一个棘手的项目,或者一件不可能的事。而“银弹”就是指能解决这些事的方法,或者技术手段,被比喻为具有极端有效性的解决方法,作为杀手锏 、王牌等的代称。
IBM大型机之父佛瑞德·布鲁克斯(Frederick P. Brooks, Jr.)在1986年发表的一篇关于软件工程的经典论文,便以《没有银弹:软件工程的本质性与附属性工作》(No Silver Bullet — Essence and Accidents of Software Engineering)为标题。其中的“银弹”是指一项可使软件工程的生产力在十年内提高十倍的技术或方法。该论文强调由于软件的复杂性本质,而使这样“真正的银弹”并不存在。
关于计算机编程语言的中文化问题,经常在网上看到两种相互对立的观点:
(1)一种观点是认为中国应该弄出个中文编程,“中文编程”是解决中国程序员编程效率一个秘密武器,主要来自于非专业编程的普通大众。
(2)另一种观点认为中文编程没有意义,编程所用的英文就是那么几个关键字,并不难,主要出自专业程序员。
我认为,这两种观点都不错,之所以产生这种冲突,主要是因为两者看待问题的角度不同。
对于专业程序员来说,他们早已熟练掌握了已有的优秀编程语言,并且在语言方面也不再有多少障碍,他们需要的是更多的中文化技术资料而不是中文编程语言。而对于有编程需求的普通大众来说,他们还没有接触计算机编程或者才刚刚入门,在面对满屏的英文语句时感到使用起来很艰难,而中文编程里面的关键词和函数、变量、方法、事件等等都是中文,能够即看即懂、即用即会,节省大量时间精力。所以,对于这两种观点,我觉得不必放到对立面来,普通大众不强求程序员从现有的编程语言中转换到中文编程上来,程序员也不应该要求普通大众远离中文编程。
另外,我在在网上还看到其他比较好的回答,我也觉得很有道理:“中文编程”它不是银弹,编程是一种实现功能的逻辑编写操作,为解决功能性与需求性,能否实现主要在于代码设计与方法,语言作为一种表现形式对编程的影响并不如前者大。程序员编程能力的提高着重是要求对自身逻辑思维能力的提高,同时为解决具体功能需求,程序员对相关操作模块的流程,算法思想要有一定深度的理解和掌握;
(1)“中文编程”只是在语言方面作了改变,只是较之传统编程相对容易看懂表面含义而已,但实质上的思考方法并没有改变,如果选用“中文编程”,因其对关键字,编程语法等做了改变,实质上也是需要程序员掌握和熟记的,这与英文编程要领的掌握无异。
(2)“中文编码”相对于英文编码,所占的体积远比英文编码要大,对于一些空间、时间要求较高的编程要求,英文能更好的实现。
(3)程序员作为全球现代社会流行的行业,多国多人共通语句很好的有利于编程技术的发展,而英语作为全球最通用的语言,作为编程的通用性最强。
(4)中文文字的输入不一定比英文文字要迅速,在很多时候,英文单词比中文词组要输入得快。
(5)各种应用平台,编程环境要求的是通用的能识别的字母写成的程序,而中文编程显然就不具备这一条件,在通用性上会有极大的困难,用中文编程写出的程序在接口上也会有极大的困难要突破。
综上所述,“中文编程”确实能提高编程效率,却不能成为中国编程的杀手锏。