雁
雁孤行
Unregistered / Unconfirmed
GUEST, unregistred user!
在“<a href="http://www.delphibbs.com/delphibbs/dispq.asp?LID=471309" target="_blank">转贴一篇文章,终结工具之争!希望大家一门心思搞开发!</a>”中chenlh大侠要<br>
我将提到的下面的这篇文章贴出来,无耐网上没有地方可以Copy,只好抽空练了一<br>
下五笔,直到该问题结束了才打完。<br>
<p> 我看程序员<br>
程序员——一个毁誉参半的称谓。想当初曾经被视作英雄,众人景仰。如今,却<br>
被许多人瞧不起,客气的说他们是“高技术工人”,不客气的就直接称其为“牛”了。<br>
图灵奖获得者,EdsgarDijkstra在他的《卑微的电脑程序员》一文中说:“对我来说,<br>
电脑程序员的人尊称,但对其他一些人来说,电脑程序员确是不懂他自已在干什么,<br>
而是只会依指令行事之徒,一些只知道分析 、追求语言我特性的人。”看来,许多人<br>
曲解了“程序员”这个名词的涵义。那什么样的人才是真正的程序员呢?我斗胆给程<br>
序员分为四类,请大家对号入座。<br>
<b><font color="#3300CC">一、 高中生程序员</font></b><br>
我丝毫没有贬低高中生的意思。在美国,有大量的高中生从事程序员的职业,他们<br>
的工作就是编码、编码、再编码。很可悲,目前中国的大学生基本都是做这样的工作,<br>
甚至某些硕士、博士也是如此。<br>
这一类型的程序员认为掌握语言是最重要的,所以他们认真地学习语法和函数库。<br>
他们不停地学习主席,以为只要掌握的语言多、新,就能有竟争力,有好的工作,拿高<br>
的薪水。他们确实很厉害,VC、VB、Delphi、PB、Java、ASP、PHP等等都能拿来就用。<br>
但是,正因为他们,编程才被称为“牛都可以干的事”。<br>
在美国、印度的大公司,高中生程序员整日的工作就是添表格——工程师程序员把<br>
软件划分模块,详细设计到每一个函数的功能、参数和返回值,高中生们向这些函数里<br>
添加代码,实现功能,如同添表格一样。很多时候,高中生甚至不知道他所做的项目是<br>
干什么的,他所了解到的仅局限于一个函数而已。<br>
在国内,如此正规的软件公司很少,大多数还处于作坊式的开发模式,所以,高中<br>
生程序员还是很吃香的。几个人一商量就开干,没有完整、详细的计划、很少考虑可维<br>
护性、重用性、注释懒得写,文档更不提。这样,项目非常领带参与编码的这几个人,<br>
自然他们不用为生计发愁。他们最发愁的事情是后期维护。每当要加减功能、改bug的<br>
时候,他们就会发现自己已经看不懂自己写的代码了。<br>
我们的软件公司已经认识到软件工程的重要性,并且开始逐步实行。这样当公司的<br>
开发过程趋于正规,只会编码的高中生程序员也就越来越难做了。年轻时,他们或许可<br>
以打拼一番,但是30、40岁之后,当他们对新语言、新技术的接受能力已比不过年轻的<br>
程序员时,他们就会被淘汰了。<br>
当“软件集成电路”的梦想京变为现实,当各种可重用控件、组件、类库都已经具<br>
备,那时就不再需要高中生程序员了。<br>
<font color="#3300CC"><b>二、 黑客程序员</b></font><br>
他们是特种兵。<br>
黑客决不是那些到处黑机器搞破坏的人,他们是一群痴迷于技术的人。GNU领袖<br>
Richard对黑客下的定义是:“Someone who loves to program and enjoys being <br>
clever about it.”<br>
他们从不循规蹈矩,不相信任何规则、定理、科学家,总是从常人不可想象的角度去<br>
思考、去编程,这样做的结果,或者发现系统漏洞,或者发现更高效、巧妙的方法。他们<br>
从不满足于使用别人封装的接口、定制的框架,总是要刨根问底,对技术的钻研直至底层。<br>
他们的编程能力惊人。当别人为了做某件事而到处寻找工具时候 ,他们在自己编程<br>
来实现这个工具。结果往往是别人找不到或很久以后才找到合适的工具,而他们已经做完<br>
了工作,并且把程序删除了。<br>
他们使用C语言,汇编,甚至机器码编程。对他们来说,Java、C#等等都是玩具,<br>
是干不了大事情的。他们也用Java,因为大家都喜欢玩玩具,更何况玩玩具还可以挣钱。<br>
玩玩具的结果是他们自己写了一个Java虚拟机。<br>
对他们来说,当黑客决不是职业,而是爱好。如果一个人对自己所作的事充满兴致,<br>
并能从中得到乐趣,他肯定能获得非凡的成就。这就是他们成功的根本原因。<br>
编程就是他们的生活,计算机就是他们的朋友,除此以外,一无所有。<br>
黑客创造了一个又一个像Linux、Apache这样的神话,他们是推动技术进步的最重要力<br>
量之一。<br>
<b><font color="#3300CC">三、 工程师程序员</font></b><br>
他们是不用写代码的程序员,但他们的工作是写出好的、有价值的代码的重要条件。<br>
他们能控制整个开发的过程,分配人员与任务,使开发有条不紊地进行,按时完成。<br>
他们懂市场,知道用户需要什么样的软件,喜欢什么样的软件。可以保证程序员的劳动不<br>
是徒劳的,而是有价值的,是他们使软件真正成为产品。<br>
他们能够设计出最好的软件结构。即使最挑剔的客户频繁改变需求,他们设计的软件<br>
也能很快地修改以适应客户。做他们的手下,同样的代码你肯定不用写第二遍,因为他们<br>
设计的模块都是可重用的。如果程序出了bug,你也不用慌,他们设计的软件功能封装得<br>
很好,可以快速定位错误出处,一改了之。他们就是为高中生程序员设计表格的人。<br>
他们也懂语言,懂技术,不过他们更注重的是技术的思想而不是使用。比如Java出<br>
现的时候,他并不是去学Java 的语法、函数库,而是看各种介绍Java 的文章,听专家的<br>
评论,领会Java 的功能和思想,思考怎样利用Java 的特性。<br>
随着软件业的发展,必须抛弃作坊式的手段,实施基于团队的科学的管理和开发过程。<br>
中国正需要大量的工程师来完成这个变革,然而现在合格的、富有经验的工程师却很少。<br>
<font color="#3300CC"><b>四、 科学家程序员</b></font><br>
科学家程序员与其他程序员最大的不同在于科学家以理论研究为主要工作。计算机科<br>
学家中有两类,一类研究出纯理论的算法后,将它交给他人在计算机上实现。另一类在设<br>
计的同时便考虑到可实现性,并能利用计算机的特性增强算法,更可贵的是他们还能饶有<br>
兴致地自己编程实现算法。后一种科学家便是科学家程序员。<br>
数学是科学家最基本,也是最有力的武器。是一个个数学定理、方法构建了计算机科<br>
学大厦。但是数学并不是万能的,有时候仅靠公式是不够的。著名的三维游戏MDK在开<br>
发的初期请了三位数学家来设计三维模型,结果发现按照他们的公式实现的程序运行缓慢,<br>
根本不能使用。后来他们请来了一位丰富三维开发经验的程序员,他使用了很多巧妙的方<br>
法做出了漂亮的三维效果,而且运行起来很快。如果一个理论不能很好的用于实践,那么<br>
这个理论是空洞的。物理学家、化学家都要自己做实验来验证自己的理论。计算机科学家<br>
也要如此来寻找解决问题的最佳方法。<br>
无论那种类型的程序员,都承担着极富挑战性的工作。每一个合格的程序员无不最大<br>
限度地调动自己的智力、经验,来攻克一个又一个高峰,而当你已经站在一座峰顶时,你<br>
会发现又有新的高峰在不知不觉间升起了,甚至升得更高,幅员更广,并且很多人已经开<br>
始攫得攀登,那么就请马上走下现在的峰顶,去拥抱新的一切吧。不要让自己陶醉于当前<br>
的成绩,固步自封。信息产业总是日新月异的,能走在潮流最前列的人才是成功的。</p>
<p> 未来信息社会的缔造者,将是我们——程序员!<br>
(本文原载于《程序员》2000/2期)</p>
<p></p>