初见“银弹”这个词,还不是很确定它的意思,通过搜索,得知银弹这个词常被用做致命武器的代言词,被比喻为具有极端有效性的解决方法,作为杀手锏,最强杀招、王牌等的代称。
那么要回答“中文编程”是否是解决中国程序员编程效率的一个“银弹”这个问题,首先要了解目前阻碍中国程序员编程效率提高的桎梏是什么,然后才能根据“中文编程”是否能够冲破这些桎梏来判断它是否是“银弹”。
下面我来谈谈我认为的目前阻碍编程效率提高的三大桎梏,或说是对于提高编程效率极为重要的但却很难具备的三种能力。
1.编程人员要判断问题在什么程度上可被机器解决,再后是让机器能更高效率地解决问题,比如同样的问题可能会有效率差别巨大的算法,所以对于机器解决问题程度的把控和算法的使用是编程效率的两大关键,一个编程人员如果不懂这两点,那他的编程效率会大大降低。
2.编程人员要具备抽象问题的能力,今天任何编程人员都会使用许多轮子(表示用于编程的各类辅助知识或者工具),例如操作系统编译器数据库,算法数据结构等。好的程序员知道能够如何将问题抽象与分解,从而使其与合适的轮子结合起来,提高编程效率;而新手程序员往往对轮子的了解不足,对问题的抽象不够,以至不会将两者合二为一解决问题。所以程序员抽象问题的能力和对系统设计的了解与熟练应用也是影响编程效率的主要因素。
3.编程人员需要具有考虑扩展性的能力。算法竞赛中的很多算法考虑的是单机的内存算法,计算模型经过高度抽象,在实践中机器的模型更为复杂。比如单机的多级结构带来的各种时间空间复杂度的取舍平衡,多机网络中如何能在提高单机性能外进一步优化整体性能。除了在机器端的扩展,在程序员一端的扩展也很重要。复杂的问题和工程往往意味着团队协同以及更长时间的开发维护,团队分工和设计沟通这里暂且不论。举个容易被忽视的例子,程序中的注释。高手会更在意完整且表达清楚的注释,因为这是写给现在和未来的团队(包括自己和其他成员)看的,直接影响到长期的整体开发维护效率。
显然,这三个核心桎梏的突破无一与“中文编程”有关,所以“中文编程”不是解决中国程序员编程效率的“银弹”。
而对于“中文编程”的看法,我对老师给出的第二个参考文献中的一些说明比较认同。文中对为何要做中蟒做了如下的解释:“一大部分原因是为了推广电脑教育。中蟒的对象是电脑编程的初学者、对编程概念不了解的人以及不打算以程序员为职业的人。 对这些人來說, 能用中文来学习并完成简单的编程工作是一件很不錯的事。也许你会认为英文是电脑的标准语言,要学电脑就要学英文, 因此不必为了那些又想学编程但又不想学英文的懒鬼操心。 但我想指出学英文是要的,但最好別从电脑程式中来学, 因为编程语言和英文自然语言很不一样。 对于英文基础不好的入门者來说, 以中文进行学习可以专注于编程的概念, 常用的算法, 程序的逻辑這些东西。 就算他以后再也不碰电脑程式, 起码他学会了一些解決困难的思考方法,而不是像现在这样只学了一堆@var fscanf() public virtual friend (double)** struct $v->cast[[$$key]] 等莫名其妙的东西。” 也就是说,中文编程仅仅是从语言上让那些初学者更容易入门,并且相对于英语更专注于编程逻辑、算法等方面。但是对于长期从事编程的人员来说,中文或者英文都只是一种符号,熟练了之后都是一样的,所以并不能对效率的提高有什么帮助,更不能被说成“银弹”。
引用:http://blog.csdn.net/dickyqie/article/details/52329124
答题人:尤心心