北京《程序员》2001.05
台北《 Run!PC》2001.06
作者简介:侯捷,台湾电脑技术作家,着译评兼擅。常着文章自娱,颇示己志。
个人网站:www.jjhou.com
北京镜站:www.csdn.net/expert/jjhou
「侯捷观点」进行了4期。通过这个专栏的作用,我开始接触大陆的电脑技术刊物《程序员》和电脑技术网站 CSDN,并累积了相当量的观察和感想。这个专栏前数期谈的都是技术,不是深度书评就是高阶技法。这一期让我们轻松一下,谈谈程序员 (programmer)与编程(programming)。其中不少议题起因於读者来信的触发,许多观点我也已经回应於侯捷网站上。所以若干文字可能你 曾经在侯捷网站上阅读过。有些看法也许读来刺眼,听来刺耳。但如果大家不把我视为外人,当能平心静气地思考。台湾存在许多相同的问题,我也时常为文针砭。
有一句话这麽说:如果你想使人发怒,就说谎。如果你想使人大怒,就说实话。说实话的人来了,但愿你心平气和。
急功近利是大忌
一位读者写信给我,说他非常着急。他一个月挣300元人民币,家里情况又不好。他希望赶快把 VC/MFC 学会,进入 IT 产业挣钱。信写得很长,看着看着,我也不禁为他着急起来。
有许多读者,虽然情况没有那麽急迫,燃眉之情却也溢於言表。不外乎都是希望能够尽快把某技术某技术学习起来。
但是哪一样东西哪一样技术是可以快速学成的呢?能够快速学成的技术,人才也就必然易取易得,根据市场供需法则,也就不可能有很好的报酬。所以诸君当有心理准备,门槛高的,学习代价高,报酬高;门槛低的,学习代价低,报酬低。
说起来是老生常谈了。这其中最可怕的心理在急功近利。从读者的来信,以及从 CSDN 上的众多帖文,我感觉,许许多多人学习 IT 技术,进入 IT 产业,是认为 IT 产业可以助你脱困,远离贫穷。
是的,IT 产业有这个「钱」景,但你得有那份实力。要吃硬核桃,也得先估量自己的牙口。
「好利」是基本人性,Acer 总裁施振荣先生大力提倡「好逸恶劳」之说,视为人性之本,进步的原动力。谁能说不是呢?好利可以,近利就不妙了。近利代表目光浅短,一切作为都因此只在小格局中打转。
梨园有句话:要在人前显贵,就要在人後受罪。台上一分钟,台下十年功。老祖宗这方面的教诲太多了,身为中国人的我们,应该都耳熟能详。
对 於心急的朋友,我只有一句话:勿在浮沙筑高台。你明明很清楚这个道理,为什麽临到自己身上,就糊涂了?急是没有用的,浮躁更会坏事。耐住性子扎根基吧。做 任何事都要投资,扎根基就是你对自己的未来的投资。如果想知道如何按部就班扎根基,侯捷网站上有一篇文章:「97/06 选义按部 考辞就班」,请你看看。
轻浮躁进没信心
只要上网看看程序员出没的论坛,你就会看到一片浮躁与焦虑。反映出来的就是没有信心。
「C# 推出,Java 将死」,「Java 演进,C++ 将亡」,「.Net 推出,VB程序员死定了」,「Kylix 推出,大夥儿快学」,「Delphi 持续新版,哥儿们别怕」,「我刚学VC,怎麽它就出场了」,「MFC 真的要过时了吗」┅。诸如此类的问题,不知该归类为谣言还是童语?
很奇怪也很感叹,为什麽大家对这类问题如此感到兴趣。那透露出一种肤浅 ─ 没有深刻了解技术本质,因而汲汲营营慌慌张张惶惶惑惑於新工具、新事务、并且认为新的大概一定都是好的。对自己没有信心,对整个环境也没有信心。
有深度的程序员绝对不会在意这种事情。当然,并不是早晚三柱香就万事保平安。并不是告诉自己别在乎别在意,就真的能够不在乎不在意了。那必需是发自内心,胸中自有丘壑的一种笃定,有着好的本质学能做靠山。
台湾 BBS(连线)前阵子也有许多热烈讨论 Java, C#, C++, .NET 的贴信。我把我最欣赏的一封引於下。其最後结语,扩张到任何领域都是合适的。
发信人: algent@kkcity.com.tw (流云), 看板: programming
标 题: 一些想法Re: 不懂,业界一直喊Java,在喊些什麽..."
发信站: KKCITY (Sun Feb 18 12:55:49 2001)
以目前台湾业界的情形来看,C\C++ 应该是想成为一个软体工程师的基本技能;至於 Java,如果熟悉 C++,学 Java 应该花不了一个月的时间。
以我个人的观点,Java 的 OO 程度是胜於 C++ 的,而且在这个 Internet盛行的年代,效率的瓶颈在於网路本身的频宽而不在单机执行时的效率,Java 所提供的 Collection framework 是非常威力强大的程式设计工具,又内建了对 Multi-thread 程式的支援,丰富的 class library 让人在设计网路、资料库┅的相关软体时无後顾之忧。
C++ 可能是过去十多年以来最重要的程式语言之一,它的效率显然较Java为佳,但在撰写需要安装在Internet上成千上万种不同厂牌的机器上执行的程式时,相对於Java可能就不是最好的解决方案。
「目前」不需要以 Java 来开发 DeskTop 上的应用程式,因为「当下」而言 Java 撰写的程式相对於 C++ 会占据更多的记忆体且执行效能不彰。
我们不能期待免子游得比鱼快,也不能期待鱼飞得比鹰高。
工程上的需求使得各种场合有不同的适合的程式语言,不必费心去批评 A、推崇B、打压 C。基本的理论比这些事重要多了。
VB 将死?Java 将亡?C++ 将被 Java 取代...,这很重要吗?我用Java 也用 C++,即使明年它们全都被 Java++、C++++、Lisp++、Forth++取代,何有於我哉?FFT 还是 FFT、Dijkstra algorithm 还是Dijkstra algorithm...还是别太担心这些事了...
侯捷除了偶在 BBS 上自说自话外,绝少回应或叁与讨论。看了上封信,忍不住回了一帖:
作者: jjhou (jjhou) 看板: programming
标题: 一些想法Re: 不懂,业界一直喊Java,在喊些什麽..."
时间: Fri Feb 23 21:12:14 2001
同意你的看法。写得非常精采。
人到了一个层次,才会去思考事物的本质是什麽,不被浮面的工具所系绊。
熟练工具是必要的,但工具的演化汰换,不是大家在这里关起门来喊爽就好。
Donald Knuth 说:「语言持续演进,那是必要的。不论现在流行什麽语言,你都可以肯定十年二十年之後它不再风光。我总是在自己的书中写些不时髦的东西,但这些东西却值得後代子孙记取。」(注:以上局部是《程序员》2000/12 的译文)
DDJ 1996/04 p18:
"Language keep evolving, and that is necessary. ...Whatever computer language is in fashion, you can guarantee that whitin a decade or two it will be completely out of fashion. In my book, I try to write things that are not trendy, but are things that are going to be worth remembering for other generations."
追求新知固然是一个计算机从业人员该有的态度,但是追求新工具与充实固有知识两者之间,应该取得一个平衡。过犹不及!
再说,凡走过必留下足迹。你现今的任何努力,只要它是扎扎实实的,就绝不至於落空。技术是有累积性的呀,技术总是触类旁通的呀。你说 MFC 和 OWL 就没有累积性,我说有,message map 的原理不一样吗?framework 的工作原理不一样吗?
我个人并非任何语言或任何工具或任何技术的狂热者,我是务实派。对於自称熟稔多种(属性不同的)语言的人,我充满敬畏并保持工作上的距离。要精通一个语言,使自己能发挥其最大效能,不是件容易的事,需要不少精力的投注。99.99% 的人都是凡人,身为凡人的我们,把时间用来精通一(或二)种适合其工作性质的「语言」,比泛泛认识多种「语法」,要高明得多,回报也大得多。
真的,还是别太担心谁将兴起谁将亡的事了吧。