`
yangshen998
  • 浏览: 1244840 次
文章分类
社区版块
存档分类
最新评论

程序员与编程——[侯捷老师的帖]

 
阅读更多

程序员与编程——[侯捷老师的帖]

1.急功近利是大忌

一位读者写信给我,说他非常着急。他一个月挣300元人民币,家里情况又不好。他希望赶快把 VC/MFC 学会,进入 I T 产业挣钱。信写得很长,看着看着,我也不禁为他着急起来。

有许多读者,虽然情况没有那么急迫,燃眉之情却也溢于言表。不外乎都是希望能够尽快把某技术某技术学习起来。

但是哪一样东西哪一样技术是可以快速学成的呢?能够快速学成的技术,人才也就必然易取易得,根据市场供需法则,也就不可能有很好的报酬。所以诸君当有心理准备,门槛高的,学习代价高,报酬高;门槛低的,学习代价低,报酬低。

说起来是老生常谈了。这其中最可怕的心理在于急功近利。从读者的来信,以及从 CSDN 上的众多帖文,我感觉,许许多多人学习 I T 技术,进入 IT 产业,是认为 I T 产业可以助你脱困,远离贫穷。

是的,I T 产业有这个「钱」景,但你得有那份实力。要吃硬核桃,也得先估量自己的牙口。

「好利」是基本人性,Acer 总裁施振荣先生大力提倡「好逸恶劳」之说,视为人性之本,进步的原动力。谁能说不是呢?好利可以,近利就不妙了。近利代表目光浅短,一切作为都因此只在小格局中打转。

梨园有句话:要在人前显贵,就要在人后受罪。台上一分钟,台下十年功。老祖宗这方面的教诲太多了,身为中国人的我们,应该都耳熟能详。

对于心急的朋友,我只有一句话:勿在浮沙筑高台。你明明很清楚这个道理,为什么临到自己身上,就糊涂了?急是没有用的,浮躁更会坏事。耐住性子扎根基吧。做任何事都要投资,扎根基就是你对自己的未来的投资。如果想知道如何按部就班扎根基,侯捷网站上有一篇文章:「97/06 选义按部 考辞就班」,请你看看。

2.口舌之战有何益

最常在程序技术相关论坛上看到毫无价值而又总是人声鼎沸的口舌之战,就是诸如「VB 和 Delphi 谁好」、「BCB 和 VC 谁优」、「Linus 和 Windows 谁棒」、「Java 和 C++ 谁强」这种题目。每次出场都一片洋洋洒洒,红红火火急速窜升为超酷话题。众人各拥所好,口沫飞扬,但是从来说服不了任何异阵营的人,话都只说给自己人听,给自己人爽。

这样的论战有何意义?许多人在重组自己的偏见时,还以为自己在思考呢。战到最后,就只是争谁说最后一句话而已。而且,擦伤引起的争吵几乎总是以刺伤结束。

工具与技术的评比,是一场高水准的演出。真有能力做评比,侯捷是很尊敬的。但是这些各拥所好,口沫飞扬的人,真的对评比两造都有深刻的了解吗?很多时候我们看到的只是无知,而无知是这麽一种东西 : 当你拥有了它,你就拥有巨大的胆量。

很多人喜欢某种工具,只不过因为那是他的初体验。他玩它玩出了一点心得,可以说出它的某些好,就开始做「评比」了。你只看到牡丹的艳丽,又怎知寒梅的清香,幽兰的空灵?

绝大多数人使用某种工具,不是因为它最好,不是因为众里寻它千百度,仅仅只是因缘际会。虽然说不同的应用环境选择不同的工具,是最伶俐的作为,但我真的怀疑,在现今工具(以及工具背后反映的技术)如此繁复的时空下,有多少人能够同时精通一个以上的同质工具?追二兔不得一兔,我还是认为你精专一样工具,把它发挥到最高效能,获得的利益多些。被大家拿来评比的,都是市场上的佼佼者,还能差到哪里去?能够两雄相争,必然是在技术面、非技术面(资源的普及、品牌的可靠度)各有一片天,你的评比意义大吗?全面吗?

大多数人没有能力同时精通两种同质工具,初学者听了网路上不知名大侠的高论,也不可能有所选择(如果有,怕也只是蒙着头瞎选)。这种没有提供数据,评论者也没有显示任何信誉(credit)的论战,没有任何意义,纯粹只为自己爽。浪费网路资源!

以后再看到语言评比文章时,请留心是谁写的,他的表述是不是以事实为依据,以公正为准绳,特别是评判的标准是不是对于所引述的每一种语言来说都公平合理。这可不容易做到。

我说过了,真正精譬的技术评比,对于相当程度的研究者,是很有价值的,但我很少在论坛上看到精品 —— 论坛还能有什么精品,99% 是打屁闲谈没有营养的文字。我们每每在其中看到偏见、我执、以及最后免不了因擦伤而引起的刺伤。这真令人伤感。这些人把时间拿来学习,多好。奉劝各位少花时间瞎打屁,多花时间学习,看些真正的精典,别动不动就在论坛上提问,也别动不动就挂在论坛上看别人的瞎打屁。

不但评比性的话题,大家喜欢强出头,其他话题,情绪性的反应也很多。中国强盛之道,眼前彷佛全压宝在 IT产业(尤其软件工业)上面。程序员被赋予了过多的期许,程序员也自我膨胀了许多。夹杂着民族主义或个人好恶,看到不满意的人事物,就号召大家「黑(hack)」过去。这是什麽心态?比拳头吗?说实话,就算要比拳头大小,「黑」个网站算是什麽尺寸的拳头?网路是个大暗室,君子不欺暗室。

追求新知固然是一个计算机从业人员该有的态度,但是追求新工具与充实固有知识两者之间,应该取得一个平衡。过犹不及!

再说,凡走过必留下足迹。你现今的任何努力,只要它是扎扎实实的,就绝不至於落空。技术是有累积性的呀,技术总是触类旁通的呀。你说 MFC 和 OWL 就没有累积性,我说有,message map 的原理不一样吗?framework 的工作原理不一样吗?

我个人并非任何语言或任何工具或任何技术的狂热者,我是务实派。对於自称熟念多种(属性不同的)语言的人,我充满敬畏并保持工作上的距离。要精通一个语言,使自己能发挥其最大效能,不是件容易的事,需要不少精力的投注。99.99% 的人都是凡人,身为凡人的我们,把时间用来精通一(或二)种适合其工作性质的「语言」,比泛泛认识多种「语法」,要高明得多,回报也大得多。

真的,还是别太担心谁将兴起谁将亡的事了吧。

让我们再回头谈谈基础建设。很多计算机专业的在校学生对于学校所开的课程,非常不服气,非常不屑,认为对编程能力一点帮助也没有。首先我要说,编程、软件开发并不是计算机专业学生的唯一出路。计算机领域何其广泛,编程只是其中小小的一支而已(但对就业市场而言则是大大的一脉)。其次我要说,基础理论课程并非对你的编程一无是处 ─—— 不是无用,只是未到用时。有些科目的影响非常直接而深远,例如对编程最重要的两门课:数据结构(data structure)和算法(algorithm),这两门课对逻辑思考与实现能力的训练,有关键性的价值。没有这两门课做底,任你 C/C++/Java 多强多行,也写不出个好程式。其他基础理论课程也都各有用途,会不会在你未来的编程生涯中带来帮助,那得看你编哪一种程。就业与学校所学,不必然会发生关系,不必然不会发生关系。

编程能力强的年轻同学,容易孳生一种趾高气扬的恶习,看这不顺眼,看那不顺眼,教授都老朽,同学都可笑。问他为什麽,哦,因为「他们的编程功力都不如我」。可笑的正是你自己呀!

编程实力的培养其实很容易的。我所谓容易,是指不需借助外力,纯粹自修就几乎可以做到。再没有比这更幸运的事了。当然你的进修必须按部就班(在我的专长范围内,我写了很多让你前进时有所依循的文章,都在侯捷网站上)。任何高深的理论,只要实际操作过都可以霍然理解,编程的实作又有什麽难的。几本好书,一部电脑,一些必要的工具,全部搞定,只欠一股「头悬梁锥刺股」的苦读精神。实力进展到一个阶段後,我非常鼓励你追踪名家源码(有人指导更好)。司马相如说:能读千赋则善赋,能观千剑则善剑。侯捷说:读过千赋亦能赋,观过千剑亦能剑。

最後我还要说,学校(尤其大学)原本不是职训所。但是关於人格的培养,思想的启迪,视野的开拓,现今言之,恐怕是陈义过高,没人爱听了。

学校肯定有学校的缺失。其一是课程太过理论,高来高去。以大学生的程度而言,太过抽象的东西他们是没有能力接受的。但是要化抽象为具象,化繁为简,可得有非常深厚的实力才行。其二是教材、教具、教师太过陈旧,跟不上时代。我印象最深刻的是,台湾BBS时常有学生问 Turbo C 3.0 上的问题。我的妈呀,C++ Standard 都出来两年了,学校还在用TC3.0。倒不是说一定要追最新最炫的工具或产品,但是TC3.0 距离 C++ Standard,有月球到地球的距离吧。用这个编译器,可想而知老师教的是什麽内容,可想而知老师本身跟上外界脉动的程度。如果新工具新产品都很贵,顾及学校经费,我们也能体谅。可 Borland C++ 5.5, GNU C++ 2.96, TAI C++ 都是可以免费下载或限期试用的呀。它们对 C++ Standard 的实现,比TC3.0 好太多太多了。

这就涉及学校教育里头最重要的关键:师资。说句实在话,大学里头有不少老师,书是念得很棒,就是没有实作经验,更没有业界经验。因循苟且之念一动,万年教材一摊,同学们就只有自求多福。

自救之道当然有:你必须更勤奋。勤奋看书,勤奋发问。勤奋搜寻好的导师和好的读物。或许天道酬勤,就让你碰上一个传道授业解惑的贵人,就让你知道一本必读的经典,并且就让你找到它。

说到勤奋发问,让我发出本文的最後一声感叹做为结束。台湾大学生在「表达能力」这一点,程度普遍低下幼稚。能够条理分明把自己的意思表达清楚的,十分罕见。反映出来的,就是怯怯懦懦,理不直而气不壮。私底下声若洪钟,要他站起来公开表示意见,却如细蚊之嗡嗡。不论口语或文字,用词普遍地「俗」。大陆情况,就我的印象,以及我收到的读者来信,感觉好很多。以前台湾的说法是,因为大陆斗争厉害,人人得有一口利嘴以求自保。但文革已过数十年,我看大陆的表达能力普遍还是很不错,是不是求学阶段中曾经特别重视这个?

发问的能力影响学习甚巨。善问者使人继其声,善教者使人承其志。我常自诩为一名善教者,但如课堂上兼能有一名善问者,高潮迭起,全班受惠。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics