----林锐Q?999q岁?/FONT>
大学十年Q一个程序员的\E)(一)
林锐Q?999q岁?/P>
写此文我很为难Q一是担心读者误以ؓ我轻得现在开始写自传Q二是担心朋友们误以为我得了l症而早早留下遗作?
不论是落俗套q是不落俗套地评P我在大学十年里都是出cL萃的好学生。ƈ且一直以来我Ҏ(gu)友们和一些低q的学生们都有很大的正面媄响。这十年是一个从q稚到成熟的q程Q交l着聪明与蠢W、勤奋与懒散、狂热与怯懦、成功与p|。做对了的事可树立ؓ榜样Q做错的事可挂作钟。我写下l历与感受,期望以此引导和勉励无数比我年ȝ学生们。我资历浅Q既没有哲学家的深遂Q也没有诗h的风华,不以堂皇地育hQ只能讲一些故事以表心ѝ?BR> 我出生在1973q的春节Q属牛,?牛头"。父母ؓ我v了很好听的名字叫"林锐"。这一切暗C着上天Ҏ(gu)别有用心Q将降大M我,可是q时候上帝去了一厕所。天堂与人间的时差如此之大,在上帝大小便的几分钟内Q我h沌沌地度q了童年和少q_天才因此成ؓ凡h?BR>
我小时候生长在江黄岩的偏d区。父母都是中学教师,׃山区师资~ZQ父母经常要从一个山头调到另一个山头教学。我换读q的学的数目比我的q龄q大Q没有伙_也没有家的概c我pzd货郎担里的小鸡,~成一团,在高兴或恐惧时至??"?地叫几声。我在读学与初中的8q里Q既不聪明活|也不调皮捣蛋Q确切地说象块木_直是我名字的反义词。在学习上我没有受过一ơ表扬,也没有Q何值得留念的h或事。无论我现在多么努力都已无法q回失去?q金色年华,好心痛!
我草草地q且E里糊涂地?3岁时从初中毕业,无处可去。这下我发慌了,开始望学习。我灰溜溜地d山区Q可怜巴巴地C个比较好的乡下中学重d三。我勤快得早?:30pv来读pQ脑袋似乎也被吓开H了Q?数理?学得很好Qƈ且生q第一ơ在物理考试中得了满分。当我再一ơ从初中毕业Ӟ我以全校W一的成l考入了黄岩中学读高中?
黄岩中学分农村班与城市班Q我当然是农民阶U?阶区别与歧?Ҏ(gu)是相当有促进作用的。我qQ了几q的卫生委员Q星期六和星期天同学们习惯地把活留给我,我这官当得有滋有味。《物理》学得极好,有一U直觉帮我快速准地解题Q常常是老师刚把题目写完我就报出{案来。上物理课时我没法讲废话Q因为我一开口就是标准答案?
可惜我的文科成W极差。那时期盛传"学好数理化,走遍天下都不?Q我们年不懂事Q糟t了学文U的好时光。我写作文的最高目标就是不逃题Q考试前我L反复祷Q我没干q坏事,保佑我作文不逃题吧!历史考试时填?任课老师某年某月某日在我家乡英勇׃"Q比谁的成W更接q零分。更让我沮的是Q这些行径都不是我发明的Q我多是个跟屁虫而已Q一点回忆时的自豪感都没有?
我现在认为文U教育实质是素质教育Q如果素质不高,男孩再聪明也难以成大器,当然也难以吸引好奛_?
高考时我语文得?4分(是班里的中上水^Q,d只比重点UK十几分。我不敢报考好地方Q只好选择内地。选来选去只觉得西安与成都两个城市q不错,我拿把尺子在地图上一量,发现我家乡离西安的直U距较短,于是选了西安。老师们只听说q西安交通大学比较有名气Q但谁也不了解。我以ؓ在西安交通大学是学习开火R、开轮船的,管我也很望能开车开船,但考虑到自qw材单小Q就忍痛割爱了。我觉得西安?sh)子U技大学的名字很好听Q符合我做科学家的梦惻I于是报考西安电(sh)子科技大学Q以下简U西?sh))技术物理系?
上帝_拌擞C厕所回来Q发现我已经上大学。也总原先是把我安排在清华或者北大的Q但事已xQ干脆也撒手不了。他q一h反而是好事Q我在读大学的十q中自由发展Q成了卓而不的学生?/P>
刚进西电(sh)Q首先吸引我的是麻雀和馍。那麻雀滚圆滚圆的,直是会飞的肉式V它们不怕hQ成堆聚集吵闹,常让我误以ؓ是没有教ȝ一鸡。那馍又白又大,既不攄也不攄Q既不象馒头也不象包子。馍凉了后贼,据说有同学被g扔下的半块馍怸脑袋Q当场长Z?肉包?。最好笑的是Z?馍夹?叫成"肉夹?Q那东西实在好吃?
西电(sh)原是军校Q作风严谨,校园q不华丽Q生zL些单调。尽我来自山清水秀的地方,可我的确喜欢西电(sh)的粗犷与憨厚。有一天我看到一个新生写的很肉麻的赞西늚大字报,有一句是"我踏上了东去的列?Q我不禁W掉牙。这一W意味着"大个子欺负小个子"历史的结束,"个子欺负大个子"新纪元的开始?
上大学的W一个学期刚好碰上美国打伊拉克("沙漠风暴"行动Q。那时全国都在谈?sh)子战,我们全校都是研究电(sh)子的,而且以军事应用ؓ丅R在那种气氛里,同学们都有很强的使命感,q且被鼓动得信心十?
一日,pM任视察早读,偏偏有同学迟到。系MQ喝问Q?你ؓ什么迟CQ?
"因ؓ我来q了Q?同学毫不含糊地回{,昂然入?
我在班里q龄最个子也,上课时就象猩猩堆里的猴子那么昄。由于我们是物理pd生,W一学期的《普通物理》课E就昑־非常重要。系副主ȝ我们上课Q他长得象叶利钦Q口若?zhn)治I板书极快。象在高中上物理NP我常?叶利?刚写完题目时报出答案。开头几ơ,"叶利?满脸疑狐地扫视我们,好像是要抓住拔掉他自行R气门芯的那个捣蛋鬹{后来他在第一排发C我,我俩乐得裂了嘴。课间候息Ӟ"叶利?常坐在我旁边Q乘他给同学们答疑时Q我qW拔弄他大无比的手指,在他指甲上涂点什么?
在第一学年Q我pp丛中的野花那栯颖而出Q倍受老师和同学们的关怀。就在我光荣到感觉屁股都能熾攑օ彩的时候,发现了o我胆战心惊的学习~陷--不会做实验。一q实验室Q我束手无{,n发抖。我怿大一的学生都有虚荣心Qؓ了维?最聪明"q个荣耀Q我完全可以掩盖、躲避甚臛_偷地弥补实验能力的不?
我做了一件了不v的事Qؓ了对抗虚荣的引诱Q我夸张其辞地把"~陷"告诉每一个我认识的hQ让我没有机会欺骗自己?
聪明的hq不见得都有智慧Q他可能~Z"真实"q种品质。虽然我是在士毕业的时候才立下誓言--"做真实、正直、优U的科技人员"Q但我在18岁的时候就已经做到?真实"Q我必定一生保持?
W一q暑假回Ӟ得到一个惊喜:安竟然有了?sh)\实验室!
因ؓ我常在信中鼓吹自己实验能力何{之差,"长此以往Q下场将极ؓ(zhn)惨"。父母经不vq种"恐吓"Q教p的父亲将半年的工资连?U有财"全部捐出Q每周到很远的商品交易市买电(sh)子元件以及器材,在家里徏立了实验室。父亲很威严Q我从小怕他Q但那个暑假我一点也不怕他。我们一起做实验Q都从零学vQ话不投机就用电(sh)烙铁"交流"Q完全是同事关系。后来,我的兴趣转向了计机Q家里的实验室就q亲独掌,l箋发扬光大。现在父亲修理电(sh)器的水^在家乡远q闻名,学生们都忘了他是p教师?
母亲是数学教师,q轻时略有姿Ԍ智力q胜父亲。当她与他在山头的学校里盔RӞ他一热情洋溢的饭菜把她缴C。我时候家里很贫穷Q家p一条飘荡的船Q父亲划,母亲掌舵。当?岁上学时Q母亲就_"儿子啊,你将来只能靠W吃饭而不能靠锄头吃饭?时候,母亲怕我变狡诈而不允许我学下棋。尽我在大学里已经相当Q母亲来信M忘叮?h体全面发?。她常用独特的方式检查我Q?
Q?Q看我是否变胖。如果我胖了Q表明我懒了。因为勤奋的人没有理由变胖?
Q?Q看我说话是否还快。如果我说话慢条斯理Q表明我变笨了。因子灵zȝ人没有理p话不快?
我读博士研究生时Q母亲的眉头才舒开。她l常在师生中发表自由a论:"儿子的智力与性格完全是我遗传的,他爸毫无半点功劳?
大学十年Q一个程序员的\E)(?
林锐Q?999q岁?/P>
W三学期的主要课E是?sh)\分析。电(sh)路题目常常很滑稽Q当你满头大汗地解完方程Ӟ{案往往是零。我归纳了不公式用于简化计,所以照栯在老师d?sh)\图时报出{案。学习是如此的轻松以致于我有太多的课余时间?
在课余我常做两g有意思的事:
Q?Q我为学习较差的十几名同学办了补习班Q给他们讲课Q改作业Q出考题。我p老母鸡那L护着一小鸡,使班ѝ学习委员等班干部Ş同虚设。我q样做既提高了自q表达能力Q又帮助了同学。这事不是老师叫我q的Q是我自qL?
Q?Q我l常在宿舍里焊接?sh)子U\Q技艺渐_。我曾花了两天时_把磁带盒做成能发声、发光的_C物Q乐颠颠地送给一个女孩子。可惜不久后我迷上了计算机,从此再也没亲手做q好玩的东西?
上大学以前我Ҏ(gu)没见q计机。在W四学期时我遇到了十q来最敬爱的老师周维真,从而对~程产生了强烈的兴趣。他教我们F(xin)ortran语言QFortran语言Ҏ(gu)没有影响Q媄响我的是周老师高尚的师德以及他在教学和U研中的敬业_。我从他那里学到的是怎样做hQ怎样做学问?
很多计算机系老师改作业时喜欢??或打"×"了事。周老师不仅把作业里的错误都扑և来,而且逐一评注"好在哪里"?差在哪里"。ؓ了不让周老师q于劳篏Q全pd学有一个约定:上课时不准吵闹,否则别来Q作业必L楚,否则别交Q提的问题必L质量Q否则闭嘴?
Fortran语言期末考试Q我的卷面成l是97分,有个奛_学考了99分。我当时官ؓ课代表,想不到被一个女生超q,甚ؓ沮。可是报到系里的成W单上Q我的成l是99分,那个奛_学是97分。我以ؓ周老师搞错了,跑去问他。周老师W笑_"你^时的学习表现Q该得满分。不能因试中的一个失误而打M的积极性,所以给你加Q分作ؓ鼓励。而她一上机束手无{,要让她知道考试成W高ƈ不表C已l学好了Q扣?分以C告。你本来是W一名?q时又跑来一??成W的同学,他得?9分,哀求周老师让他及格。周老师_"你的试卷我看了好几遍Q的的确是59分。而你qx的学习表C不会过59分。这一分不能加Q否则我会害你一生?
在我q一U(90U)Q周老师臛_为技术物理系教出两名软g高手--我和马佩军。我和马佩军d士时已在Y件方面雄霸西?sh),计算机系学生毫无n之望。由于马佩军不好名利Q风头让我一人独得。我d西电(sh)数年后,余威在。可惜我和周老师相处不到一q_他便调到北京信息工程学院。然而师恩的厚薄不在于时间长短,好的老师会让人想c感Ȁ一辈子?BR>
在上大学的前三个学期Q学习如同表演,有趣而且L。自从第四学期学习了计算E,我就有了新的q求Q我多么渴望拥有一台计机Q可以天天编E。如果挨一个巴掌能换取一分钟上机旉的话Q我愿意每天?440个巴掌。如果非得加上一个期限不可,我希望是一万年?
我本U的专业是半g物理Q一二年U由p里负责教学Q三四年U由微电(sh)子所负责教学。在W四学期末,我央求系里把我推荐到微电(sh)子所参加U研Q贾新章教授"收留"了我。我t进微电(sh)子所的那一脚,让我从纯_学习{向了U研Q从"高分低能"转向?低分高能"?
我终于有了一?86?sh)脑Q那个暑假我q在实验室里,时时d守着它,深夜里我一个h冲着它发W,一会儿盖上布,一会儿掀开布,一会儿摸摸它的"?Q一会儿理理它的"辨子"。我很快地完成了d--设计一?立方q算"的模拟电(sh)路,q且学会了C语言?
西电(sh)有个好传l,每年冬季丑֊一ơ全校性的"星火?学生U技作品竞赛。每届都有六七百件作品展C,低年U的学生看后无不热血沸腾Q跃跃欲试。我很希望能独立开发一套YӞ参加本届"星火?竞赛。贾新章老师是研I成电(sh)路可靠性的Q见我如此热切,p我开?集成?sh)\可靠性分析Y??
我开始一边研I数值算法,一边设计Y件。从炎热?月䆾到发L十一月,几乎天天通宵~程Q程序很快增长到一万多行。在ȝ赛还剩一个月左右的时候,出现了大量的问题。不仅程序老是出错误,而且发现原先的算法ƈ不有效。此时已l没??我。贾老师不会~程Q不知道问题I竟出在E序上还是出在算法上Q实质上两者都有问题)。而那些懂软g开发的q青教师Q实在看不明白我的上万行E序是如何组l的。他们只能?zhn)伤地看着我挣扎。由于我l常逃课Q好学生变成了坏学生。系里意见极大,贾老师十分为难。不老师和同学劝我赶?攚w归正"Q放弃项目,不值得因小失大?
当时我有个无法动摇的心念Q如果放弃一ơ,那么到下一个挫折时我就会l放弃;如果坚持而成功,那么到下一个挑战时我会Ȁp己再取成功?
在压力面前,我依然坚挺。每当略有进展时Q心里一늋喜,但很快又会碰到新的困难,有时一坐就?0个小时。每天在喜?zhn)的颠C苦恼的深渊之间反复折腾。在竞赛前二天,我终于成功地完成了Y件研发,l果获得软g与论文两个二{奖。这个荣誉本w不值得一提,q且我付出很重的代h(hun)--对物理专业失d而彻底抛弃了它。但那时我才19岁,在极限状态下Q我练了意志,使我日后充满Ȁ情?
在本U四qQ我认识了微?sh)子所的郝跃老师。他是数学博士,是微?sh)子所最有才华、最潇洒、最有领导风范的青年学者。我常去向他h数学问题Q他讲得意气风发Q我听得如痴如醉。我俩一个月?交流?很多士化一q时间也得不到。有一天,郝老师_"你做我的学生吧?我就毫不q疑C贾老师门下"x"到郝老师门下。郝老师后来是我的硕士生导师Q他高兴时喜Ƣ说Q?好,很好Q非常好Q?我看着他升教授Q升博导Q升副校长,师生两h分别在各自的阶层中名声显赫?
在三四年U,我的专业评没有一门及D。但׃微电(sh)子所的老师们已l认可了我,把我的卷面成W作ؓ及格U,我对同学们的帮助莫大于此Q如果要我考研I生Q我l对考不上。系MQ安毓p得我来很有前途,于是不顾别h反对Q一锤定韌我免试读士研究生?BR>
大学十年Q一个程序员的\E)(?
林锐Q?999q岁?/P>
ȝ士研I生后,我的U研条g相当好。导师十分开明,L自由发展。我最喜欢做的事是设计囑Ş用户界面和开发数据可视化软g。图形程序的最大魅力是即便它毫无用处,你也可以自我ƣ赏。L人担?花很多精力、物力让界面那么漂亮Q图形那么逼真是否值得Q?q种问题不能强求别h与你一致。我当时赞美奛_子的最高境界就是把她和我的囑ŞE序相提q论?
我喜Ƣ设计用L面是因ؓ自己有相当好的美感。在LU时我模仿过六七个流行Y件的界面Q常常向同学演示、卖弄。觉得还不过瘾,写了一名?用户界面设计学"的短文。凡是\q我实验室的同学都被我逮住Q被q听完我得意之极的朗读,茫然者与痛苦者居多。不久我的朗M所向披p,d者逃之夭夭?
我的研究工作基本上以集成?sh)\的数Dؓ主,数D生的一堆堆数据常把我搞得晕头{向。我发现用图形来表征、解释数据可以让自己不再qL下去Q那感觉p刚睡醒时冲凉水一栗我士学位论文中的软g是用图形来仿真集成?sh)\生q程?~陷"Ҏ(gu)品率的媄响。我q不是在看了学术论文后才开始研I可视化技术的Q我是在做了工作后才发现那些好玩的技术叫?可视?。由于我肚子里头的确有货Q在士一qQ我没有使用"剪刀"?糊"Q这是很多h写书的法宝)Q只化了三个月时间就写完W一本著作《微机科学可视化pȝ设计》?
我在ȝ士期间的工作强度与本U时的相当,但工作方式有很大不同。我有了明确的目标:Q?Q开发自ȝ权的软g产品Q(2Q培d领导的才能。这个目标可以通过团队工作Q参加全国性大学生U技竞赛而实现?
我在西电(sh)成立?可视创意软g组"Q马佩军、戴玉宏、马晓宇是我的主要技术伙_帮手很多Q有几个漂亮的女生负责宣传)。办公室里脓(chung)满了标语Q如"创造性的事业要靠Ȁ情来推动"Q?生于忧?zhn)Q死于安?Q?让春天消?。还有大q的"作战?Q倒计时牌。每个伙伴写了一?军o?攑֜机器上,我迄今还记录着那些U真、活泹{充满激情的文字。那是多么艰苦而幸的日子Q夜里放震x聋的音乐、咬G椒提,有伙伴篏得蹲在厕所里睡着了?
?994q和1995q的冬季Q我们的软g作品分别获中国大学生应用U技发明大奖赛二{奖和全国大学生"挑战?学术U技作品竞赛二等奖,在西北地区,我们?老大"。我成了西电(sh)学生的榜栗如果你是西?sh)学生,你可以不认识校领|有名字的人ƈ不见得就有名Q,但你不能不认识我Q否则你׃是个好学生。Ԓ慕我的学生有一大批Q我刚到大d士学位时Q收C个西?sh)计机pd生的信,他说Q?你走了,我呆在西甉|有意思,我准备考浙大的士Q你到哪里我p到哪里?
在硕士毕业前Q我在鉴定表上这样写道:"我热q技事业Q如同热q命一栗近5q的U研工作带给我最充实的生z,也寄托着我美好的向往。可我同时也感到了痛苦,因ؓ5q来我耳闻目睹U研中太多的弄虚作假。我发誓Q做一名真实、正直、优U的科技人员Q以正n自勉?
我在西电(sh)度过了幸的6q半Q最让我牵肠挂肚的是"??友情"?爱情"?
当我W一ơ吃U红的和青青的G椒时Q?感动"得满脸是泪,那滋呌我觉得前17q白zM。我在读士时已l能自力更生Q我开发的软g不仅竞赛获奖挣了名气Q而且q挣了钱Q卖了二十多份YӞq_每䆾?00元)。写书得E费7000元,那时我简直就是富。这些钱的小部分用来l女孩子买礼物,大部分用于和与哥儿们吃香的喝辣的?
我相信自己已l尝遍了西安的小吃,q且发现了一个真理:最好吃的东襉K在地摊上Q最香的东西一定是辣的Q最辣的东西一定是香的。曾l难为水Q我在浙大的三年里很再吃G椒,因ؓ怕它沾污我心目中的G椒?
在我时候,我爸很讨厌土豆,他竟然因此不让我吃土豆。我哪敢跟他论理Q于是忍啊忍Q一直忍到我上大?q走高飞"。如果说辣椒是我C的女朋友Q那么土豆就是我天生的命Q迄今尚未发现能让我不要命的食物Q。我在西늻常用늂Q从来都没被抓住q)?以土豆ؓ核心"的菜Q天长日久,朋友们干脆叫?土豆"?
我吃饱土豆和辣椒后不免深思而感叹,是认认真真地吃,真的׃了多钱Q那些贪官究竟是怎么吃掉巨款的?我将来怎么吃得掉自己挣来的钱?
我在M学与本科Ӟ满头白发Q脑袋可以当白帜灯用。当我硕士毕业再照镜子时Q吓了一跻I白头发不见了Q我不知道究竟是哪种食物L作用Q估计是辣椒Q。那些早生白发的伙子们Q你们就到西安上学吧?BR>
大学十年Q一个程序员的\E)(?
林锐Q?999q岁?/P>
马佩军是我最早的朋友。刚入学时我们同住一个宿舍,他象国民党兵盘问良家妇女那样上下打量我,问:"喜欢q啥Q?
我怯生生地回答Q?打乒乓球?
他再问:"什么风根{?
我答Q?快球?
他突然象阎锡山那h笑Q拍拍我的肩膀_"好!我喜Ƣ,以后你就是我的朋友。我是陕西hQ农民,会开拖拉机和卡R。这里是我的Ӟ以后你有啥事Q就Ҏ(gu)׃声?
马佩军和我打乒乓球时口中念念有词Q?|你对我狠Q我对你更狠Q你Ҏ(gu)好,我对你更好?他好几次说要把世上最好吃的板栗送给我一袋,q一袋板栗我到现在都没拿到?
马佩军夜里极能侃Q吹他家乡的得快Q常把野兔追断气。有时他吹得太离谱,o我们6人群赯攻之。ؓ了把我们一举歼灭,他白天到图书馆查"资料"Q夜里再挑v事端。双方就象印度与巴基斯坦Q常q两个秃子争一把梳子的事?
马佩军上大学前也没见q计机Q但他对计算机技术有极强的领(zhn)力。我们第一ơ上机时Q他把我拉到打印机旁边说Q?帮我防着机房的Q我要修理这台打印机"。还没等我反应过来,他就开?肢解"打印机。我无比深刻C会到Q歹徒在作案旉不害怕,最提心吊胆的就是那个放风的。他?分钟内修好了打印机,我佩服得五体投地Q甘愿下ơ再跟他q?坏事"?
我一直认为马佩军是西늼E第一高手Q他~程的时候根本不是hQ是指针。之所以我的名气大Q一是因Z不好名利Q二是我把他的程序写上了我的名字Qƈ且卖了不钱Q?
马佩军的x友是我介l的Q我一眼就看出她将嫁给他。后来俩人果真结婚了Q只是他嫁给了她。硕士毕业后Q马佩军留在西电(sh)d。前q我再见CӞ他说我害M了,快乐得要C我。我喜欢陕西人源于马佩军?/P>
宋Q儒是我们的班长,也是班里最早的预备党员Q满口仁义之道,比唐僧还让h受不了。在二年U时Q我q上一个比我大一岁有了男朋友的女同学Q多日沮丧。他看在眼里痛在心里Q跑L那女同学教育了一通。苏联解体的时候他十分沉痛Q在思想教育课上Q他向我们作了深ȝ讨,好象是他没有教好戈巴乔夫那小子。最后他为我们点燃了希望Q在不久的将来,"苏联"重新成联,׃M旗帜l在全世界飘扬?
在本U三四年U,他对跌十分入迷Q连上厕所都滑而去。我那时常把自己兛_实验室里搞科研,极少有空与他玩乐Q等到本U毕业时Q猛地发C已经风度翩?
宋Q儒的学习既不好也不差Q我们从来没有合作研I过什么。我喜欢他是因ؓ他很有情,不落俗套。也许,我俩本来是"敢爱而不?的同一cMh?
本科毕业Ӟ他分到威工作,C前我Z饯行。可在硕士开学时Q我的房门被Z脚踢开Q他Ҏ(gu)喊了一?林子啊,我又回来?。我p林嫂见C被狼D的孩子?
宋Q儒读士时被发配C?71所Q他在那里过上了乐不思蜀的日子。有一天,他带来两个文静的奛_子(一个读士Q一个读本科Q来串门。就在我z水果的几分钟里Q三个h已玩得乐M天,两个奛_满屋子追他,一会儿把他按到桌子上打Q一会按到床上打。我惊诧之极而又慕之极Q恨不得挨打的h是我。想不到上学竟然会有q等Ƣ乐Q看来我ȝ士的日子白过了?
后来Q那个大一点的奛_子嫁l了他。当他带她去见公婆时Q公公长叹一壎ͼ"把儿子交l你Q我放心了?而婆婆已乐得合不拢嘴Q竟然无法叹气?
现在Q宋d已从复旦大学获得博士学位Q比我更早地成家立业。他和她既是夫妻Q又象兄妹,q象伙伴。他叫她"聪聪"Q她叫他"W笨"?
"聪聪"?W笨"Q?老公啊,人活着Z什么?"
"W笨"{:"是让咱们每天快快乐乐?
我迄今亲眼看到的q福莫过于此?BR>
大学十年Q一个程序员的\E)(?
林锐Q?999q岁?/P>
我在大二时曾为系里学习最差的十几名同学办了补习班Q谢伟在q个补习班里名列倒数前茅。在他睡懒觉Ӟ我象催命鬼那样喊他捅他。他无比吃力地抬h重的眼皮Q就象Y弱无力的Nq动员,q没有挺hp下了?
他开始呻吟:"q一ơ就饶了我吧Q下一ơ我一定一定会ȝQ求你了?
我不肯?
"那么让我再睡5分钟Q?他不d?
我仍不同意?
"那么你就?数到10Q要慢一点,"他讨仯仗?
当我数到9Ӟ他就接着?.1,9.2, 9.3 …?
一开始他觉得我很好玩Q后来他喜Ƣ得M开我了。ƈ不是因ؓ我学习好Q而是那时侯我天真q且充满zd。在三四q我忙于科研时Q他照顾我的生活Q叫?爷"Q既做管家又做兄ѝ我们不仅共用饭菜票Qƈ且共用仅有的一个碗QL他买饭菜和洗?
我们那一U的学生大多崇拜巨h公司的创始h史玉柱,我问谢伟Q?我是不是和史玉柱一栯吃苦Q?
他说Q?如果考虑q龄因素Q你已经比他更能吃苦。你来一定能做大事业Q我把希望寄托于你了?
在我们都q不成熟的时候,我成了他心中的灯塔,只要灯不灭,希望在。现在他Z娶一个日本姑娘,披荆斩棘q到日本Q有了新的希望?
二十几年来,我就Z个男人哭q,那时他本U毕业?BR>
我读士研究生时Q由于受我的影响Q本pM四年U的学生蜂涌臛_?sh)子所参加U研。夜里看十二层高的科技大楼Q灯火通明、热闚w凡的那一层就是微?sh)子所。那Ӟ我在微电(sh)子所学生中的C仿佛(jng)伊拉克的萨达姆,手下兵将极多?
我写W一本书Ӟ有几个h老向我着手等待输入稿子,p火R站行乞的人那样阴不散,使我没时间慢腾腾地打草稿。我p金庸写小_有如来之笔Q想到那里就写到那里Q写了一D他们马上输入一D,一气呵成。那本科技书写得很滑稽Q同学们看得W出眼泪Q编辑看了拍案叫l,只改了几个字出版了?
那时侯我的心情是如此之好Qؓ一男同学ؕ蓬蓬的头发写了一散文,q他一把梳子。又把一奛_学的实验报告写成评书。我的文W大概就是这L出来的?
q一学生中Q戴玉宏、史江一和马晓华是我最好的伙伴Q我们都属于牛)?
戴玉宏其貌甚帅,眉中有一根白毛闪闪发光,因此L"白眉鹰王"?白眉鹰王"武功了得Q是我Y件品的核心开发h员,我们合作最深最久。后来我开公司Q他׃q州辞职到杭州ؓ我助威,令我感动不已Q可见读大学时期我们有多铁!戴玉宏有一ơ打饱嗝Q整整打了两天两夜,我差点心疼死?
我尚未发q之日曾与戴玉宏在校园里卖花Q无人问z,p?sh)子工程pȝ鲁洁救助。鲁z温柔貌,她一a一W尤如春风吹拂苏堤的杨柳Qo人心里一荡再荡。顷刻间有L围观Q有人看花,有h?贵妃"Q鲁z一赎ͼ我和戴玉宏可怜得p两根蜡烛。鲁z读大学时调皮捣蛋,到四q时还不太会编E。她的本U毕业设计是仿真"雯跟踪飞行?Q程序基本上全是我编写的。我已记不v用了什么公式,只知道每ơ计后都弹Z个对话框"报告长官Q击中目?。鲁z毕业后到深圳的一家Y件公司工作,几年一q,Ҏ(gu)了行家。再与她交谈Ӟ我只有听的䆾Q象鸡琢c一L头?
史江一和马晓华都是狭西人,和马佩军一样厚道热情。史江一性格E重Q属?你办事我攑ֿ"的那cMh。我对微?sh)子专业一H不通,全靠他帮我q实验这一兟뀂后来我开公司p|Q陷入经危机,把希望工程的一个小孩托l了他?
马晓华是我最不放心的人。他常常为别人做事情Q但热情q头忘了自q事情。有几个不道L学生利用他的这个缺点,l常使唤他,q且借他的钱不还。马晓华喜欢为那些h"卖命"q且挨训Q他L在受虐待够了的时候再跟我们嘀咕,我们实在气不q,只好对着他的屁股q加一拳脚,q给他一个Ԓ?受虐?。但愿他找个好老婆Q我可以早日攑ֿ?
我们q一小伙子同时喜欢上一个女孩子Q她叫姜姗,是她班里的四大美Z一。我们不仅没有争风吃醋,而且心甘情愿地让她坐遍每个h的脖子。姜姗小?岁时她爸姜晓鸿成了我的同事,我们l常一起去钓鱼Q亲得象一家h。姜姗喜Ƣ大喊大叫,声音高过帕瓦|蒂Q我们教唆她喊她?姜球??
我常带姜姗到炒摊去吃女孩子不敢吃的东西Qƈ哄她Q?世上最好吃的东西是鸡屁股?
Ҏ(gu)师自通地加上一句:"世上最好听的屁是鸡攄屁?
我常想着来生个儿子q把他培L天才Q但如果能有姜姗q样的女儿,不要儿子也Ş?BR>
大学十年Q一个程序员的\E)(?
林锐Q?999q岁?/P>
在本U三q我第一ơ参?星火?竞赛q获得Y件二{奖后,马上成ؓ低年U学生眼中的明星。我义务当上了一q学生的上导员。一天晚上我巡视机房Q一女生h帮助?
我见屏幕上空白一片,Ҏ(gu)没有一行程序,十分疑惑地问Q?什么问题?"
"没有问题?Ҏ(gu)书往我手上一塞说Q?q些作业你帮我做?然后p个子跟她的同学玩乐,把我撇在一边,g我辛辛苦苦地学习是Zl她做作业?
我定对她细看,发觉她简直就是《射雕英雄传》里的黄蓉再世,时心就"H突H?直蟩。当天晚上我没睡着Q接下几天的课不知所云。在选修课《操作系l》考试Ӟ我给安写了一超短信Q请快寄钱来Q我谈恋׃。我交了白卷直奔她去?
我的初恋只有两个月,却让我思念?q。她L而去时没有Q何理由,而我却失落。在我本U毕业前?8个月里,白天我狂热工作强作笑容,夜深人静时心痛如刀割而无法抑制。没有h为我"疗伤"Q我是硬ȝQ这一D늻历我日后心理承受能力极强。后来我开公司的失败虽然对信心有所打击Q但Ҏ(gu)无痛可言?
我们分手后ƈ未成为陌生hQ就象两只刺猬,dq了有点留恋,dq了Q就刺着Ҏ(gu)。认识她时我虽然已略显才气,但ƈ不具备成熟男人的力Q很多事情我q不知道怎么L握。有?喜欢"q不能成??Q感情也许是永远研究不透的学问?BR> 我读士研究生时有了一生机勃勃的朋友Q感情的伤痛被掩没了。朋友堆里夹着一位女生,Ҏ(gu)雅而富有气质。^日里无拘无束Q大伙戏U她是我的秘书。我的言行D止和I着都经q她的调教,俩h出双入对Q十分亲q,不知不觉有了感情。别人已l把我们当成恋hQ我和她늝姜姗散步时Q简直就象天堂里的一家h。她的温柔有时能让我失去所有斗志?
可是我当时着q于事业Q认׃久将q一番惊天动地的事。鉴于史玉柱在创业时qq婚Q所以我认ؓ感情是事业的累赘Q两者不可得兹{?
更糟p的是,我和W一个朋友耦断丝连Q偏偏她俩是同班同学。我知道脚踩两只Ҏ(gu)有好下场Q可我的的确同时喜Ƣ着两个人,q梦惛_俩能合二Z。我情愿被h指责Q也不愿掩饰真实的感觉。有时她俩一同走q,我站在\上丢了魂似的看着俩h的背影,d看热闹的人指指点炏V?
我和W二个朋友已l有了很q感情Q她毕业后我曑֝火R千里送鲜q她,让她感动q。而我固执的性格和对初恋的思念l于让她心碎。尽我们已l几q没见,我依然看得见她留在我心里的那颗眼泪?BR>
我在西电(sh)六年半的学习和生zM许是一生中最珍贵的,叫我怎能不爱西电(sh)?
两年前我回西?sh),惊奇地发现校园里房前屋后长满了待收割的小麦!q所大学是从事电(sh)子科技的,U小麦干啥呀Q?
朱ȝ曾讲q:"目前国家_食充Q再来三q自然灾害也不怕?现在国泰民安Q似乎用不着"深挖z,q积_?吧。我素知西电(sh)提创勤P节约、自力更生,但与其种麦q不如种蔬菜呢?
老同学告诉我Q种麦是ؓ了应?211"工程Qؓ21世纪选拔100所重点大学Q的查团Q因?211"工程有较高的l化指标。偏偏检查赶在冬天,那时的西北极N草。西甉|来就人多地少Q地上一长草马上׃被谈恋爱的学生给折磨歅R一到冬天,整个校园光U秃一片。用麦l化校园可谓千古l笔Q检查团的那些权贵h士早已五谷不分,岂知所见的"草坪"乃是麦田?BR> 江大学依山而傍西湖Q是个美丽而高늚大学?997q春天,我就象干儿子那样挤进她的怀抱,q期望得到关爱。我C向往已久的计机辅助设计与图形学QCAD&CGQ国安点实验室d士学位。导师是x英教授,矌师虽然q过六旬Q但_֊充沛Q红光满面,施拉普纳不及他半分精?
我幸地qL着大干一番自己喜q专业Qƈ计划?5岁左x为实验室MQ。开学的W一天,我兴冲冲地奔向实验室。进门不?分钟Q就因不懂规矩被看门的年青女子训了几ơ。ؓ了不再冒犯规矩,我就老老实实地抓v一份计机报纸q且站着阅读Q心惌下不得罪谁了吧!
H然一个气得脸色铁青的男hQ机房管理员之一Q对我断喝:"你在q什么!你怎么可以不经允许q看别人的报纸Q?g我是他一生中见到的最无ȝ人?
我就象一个情H初开的少q飘飘然地去拥抱梦中情hQ不料迎来两个耛_Q此下场比《猫和老鼠》中的猫q惨。如果这两个q轻人有q看到我q篇文章Q应该好好?zhn)q自斎ͼ她与他的工作态度打击q数十个学生的积极性。我本是因ؓ向往CAD&CG实验室而来的,得到的却是极坏的W一印象?
不出几日Q我发现实验室里h们大多轻a寡语、小心翼{井水不犯河水。初到此实验室的北方同学极ؓqh地问我:"你们江人是不是都这个d性?我看你不太象嘛?
也许你以为我以前的研I单位很土,刚到高贵的CAD&CG实验室,有点象刘姥姥那样无所适从Q甚x点自(zhn)Ӏ非也,西电(sh)微电(sh)子所的设备、h员超qCAD&CG实验室数倍,我在微电(sh)子所的办公室比CAD&CG实验室主ȝq好。比物质条g是没有Q何意思的Q学生望的是自由、欢乐的环境Q这h能激发他们的创造力。压抑的环境会把一个个本来充满zd的年d生变成一小老头Q他们只好套上硕大的眼镜以显C眼里的世界有多么ؓ?
如果不允怸个男人在工作时Ԓ天大W,q样的地方不M|?
我颇费周折地考入CAD&CG实验室,却尚未热w就全力而退Q决心自立门戗至今我都没有用实验室的计算机编q一行程序?BR>
大学十年Q一个程序员的\E)(?
林锐Q?999q岁?/P>
刚读博时我穷困R倒,只有一床,一盆,一Ӟ一。我那些Ih友们象挤牙膏一h一些钱资肋我。我C一台计机Q在宿舍里开发Y件?可视化Y件开发工?VA 4.0"?997q?月,我去北京参加首届中国大学生电(sh)脑大赛Y件展C,路费也是借的。同学ؓ我壮胆时_"如果不能获奖Q就回到实验室干zd?
我说一定会拿第一名,不然d啥?
在Y件展C时Q我们发现很多好的作品是国家的科研项目,Ҏ(gu)不是学生个h的作品,q背了竞赛的宗旨。如果允许这样做的话Q我应该q几条生产线q来。我写了一份抗议书Q找了十几个人签名(很多人感恨而不敢签Q。但抗议能顶屁用Q我参加q的U技竞赛、见q的U研鉴定多了Q哪一ơ我没看到虚假?我写抗议书是因ؓ眼里容不得沙子。如果我的专业是政治Q早坐牢去了?
q次竞赛选出十个"软g明星"Q只有我的Y件和清华大学博士生的目值得一看。我不能否认他的目水^极高Q但那不是他个h的作品(评委甚至认识他的导师Q知道项目的来龙去脉Q。我的作品被评ؓW一Q他的项目被评ؓW二。组委会来拍?sh)视Q可是找不到江大学的展ѝ因为浙江大学没有Q何准备,我是一个h来的Q我的作品夹在杭늚作品之中Q没名没姓。我只好从塑料袋上剪?江大学"四个字,贴在展板上撑撑门面?
自新中国成立以来Q清华大学就一直在江大学头上"作威作福"Q我好歹也争了一口气。可是颁奖时Q组委会竟按地方序从北京念P我落到W七Q差点咽气?
我曾在上L一辆公共汽车上与一位北京来的旅客聊天,此公极健谈。似乎他Ch游的目的是Z发掘北京的优性。见我挂着江大学的红色校徽,且对清华、北大ƈ不神往Q不十分迷惑,问Q?江大学在东还是西?我要ȝ看?
北京已经是极度优了Q那里的处长局长比我见q的土豆q多。就请不要把什么鸡皮蒜毛的好东襉K拿走Q给我们留点希望吧?BR>
1997q?1月,在穷得快挨饿的时候,我获得了中国大学生跨世纪发展基金特等奖(全国?0名,奖金1万元Q。在人民大会堂领奖时Q我以ؓ能碰到宋健等人物Q不料见到的却是政协的h手,不禁甚ؓ失望。给我们出钱的是一个靠资本q作发胦的集团,在宴会前Q该集团领导人和我们座谈Q他什么不好吹偏偏吹自己是个高U技企业Q?我们主要从事生物工程Q几q前掌握了克隆技术,英国?克隆?直是菜一。……我们在东北有个农场Q新品种的小麦长得比高,麦粒跟葡萄一样大Q你们不久都会喝到用q种麦酿的啤酒。……我如果ȝ国炒个ȝQ那p玩似得?
我们几个获奖的博士生吃饱喝、拿了钱后,兌v门来把那个老板臭骂一通,扬长而归。别以ؓl钱p让我们说好话Q?
刚拿?跨世U发展基?Q又马上获得"江省青年英才?Q浙江大学也l我发奖学金。比起那些一个月只有300元工资的博士生们Q我直是"暴富"。还了朋友们l我?救济?后,仍然是个"富翁"。我老是觉得手头的钱是抢劫来的,心里不踏实。于是找江大学校团?诉苦"Q请校团委把我的"不义之胦"捐给大的困学生。校团委的老师热情而坦诚,说愿意等我成为真正的富翁时再接受捐款Q现在不能让?杀鸡取?。但Z能让我表辑ֿ意,我资?希望工程"的中学生Q让我选了5个初一的学生,每个学生500元。我LQCq的帮助了5个中学生Q直?998q暑假我见到了其中的一个中学生Q才发现自己做的好事只不q杯水R薪而已。我是到了自p困失意时才真正去帮助那些孩子的?BR> ?997q_我在学生时期的荣誉已d造极Q觉得自q膀已经了Q不惛_混下厅R我M己是W二个史玉柱Q应该开个Y件公司来振兴民族软g产业。我曑ֈ东Y集团Q沈阻I参加"民族软g产业青年论坛"Q大不咧咧地作了一ơ演Ԍ现在发现演讲的内Ҏ(gu)有一Ҏ(gu)可以操作的)。杭州有一个记者来采访我,我谈了一天的理想Q记者还是没听明白,q脆自己写新L道,q且含蓄地做了一个广告:万事俱备Q只待投资?
׃我能说会道,频频上电(sh)视,引来q?0个投资者。我选择了一位年龄比我大一倍、非常精明的商h作合伙hQ成立了"杭州临境软g开发有限公?。彼Ӟ我可谓光芒四,名片上印着"以振兴民族Y件业ؓ已QQ做真实、正直、优U的科技人员?江大学惛_除我Q被?晓之以理、动之以?安抚住?
我当时想开发一套名为Soft3D的图形系l,此系l下臛_发工P上至应用软gQ无所不包。公司名字v?临境"有两个含义:一是表Cn临其境,q是我对囑Ş技术的q求Q二是表C快C与SGI公司U兄道弟的境界,q是我对事业的追求?临境"q个名字我在LU时已l想好了Q?997q底公司成立的那一天,我有一U?媛_熬成?的?zhn)壮感觉?
我从实验室挖来一位聪明绝的士生做技术伙伴。他叫周昆,q龄很小Q?978q出生)Q研I能力极强。如果按照浙江大学计机pd士生毕业的论文要求,他入学读士的那一天就可以博士毕业。周昆的头明显比我的大,估计其脑定w臛_是我1.5倍。我曄以师兄的w䆾Zz过一双袜子,他因此觉得我是个好h。我俩一拍即合,常常为Soft3D的设计方案自我們ր。一惛_Microsoft公司的二lWindowspȝ卛_被Soft3D打击得狼狈不堪时Q我们就乐不可支Q冲劲十?
我已l把"振兴民族软g产业"列入日程Qƈ且提前担忧将来钱挣得太多用不完该怎么办?998q?月䆾Q我们做了一套既不是U研又不全象商品的Y件。Y件品宣传了几个月,q没有出现订单如潮、接应不暇的局面(事实上压根就没有反应Q。我意识到没有找对市场,但仍觉得产品中的一些技术很有h(hun)|它改装成其它Y件也许能开?东方不亮西方?的新局面?
于是我向只有一面之~尚在北大方正工作的周`一求助。他是真正的软g高手Q当我小心翼地展示U?0万行C++代码的Y件时Q他竟在十几分钟内就指出多处重大的设计错误,使我目瞪口呆地意识到整个软gpȝ的h(hun)gؓ零。那U心痛啊Q就象眼睁睁看着孩子被狼吃掉一栗?BR> ?998q?0月,我用光了30万元资金。周鸿一再一ơ从北京飞到杭州Q三下五除二替我把只zM一q的公司l关闭掉。他攑ֿ不下Q觉得我"恶病需用猛药补"Q于是意未地把我捉到北大Ҏ(gu)插在他管辖的部门Q让我学习怎样做事情?
北京寒冷的冬天可以营造一U凄凉的气氛Q冲M切可以自我原谅的借口。我q不是太p荣的人,知道q次p|是我的毛病积累到一定水准忍不住喷发出来的结果。我l不能以q纪轻不太懂市Z理为理p率地敯q去?
从北大方?x"了两个月回来Q我心服口服地承认失败了。我把察觉到的数十个毛病列出来,日后一个一个克服掉。我写的《Y件工E思想》一书,大部分内容取自我开公司p|的教训录。我现在能客观地从可行性分析角度说明我和投资方所犯的主要错误Q以我那幼q夭折的软g公司?
我的主要错误Q?
Q?Q年青气盛,在不具备条g的情况下Q想一下子做成石破天惊的事。我的设计方案技术难度很大(有一些是热门的研I课题)Q只?0万元资金的小公司Ҏ(gu)没有财力与技术力量去做这U事。分析经与技术可行性,卛_否定我的设计Ҏ(gu)?
Q?Q我以技术ؓ中心而没有以市场Z心去做品,以ؓ自己喜欢的Y件别Z一定喜Ƣ。我涉的是在国内尚不成气候的市场Q我无法估计q市场有多大Qh们到底要什么。伙伴们跟着我瞎忙乎一整年Q结果做Z个洋z洒z没的Y件。分析市场可行性也可以否定我的设计Ҏ(gu)?
Q?Q我做到?真实、正?Q但q没有达CU的程度。我曑־到很多炫目的荣誉Q但学生时代的荣誉只是一U鼓励,q不是对我才能和事业的确认。正因ؓ我不够优UQ学识浅薄,加上没有更高水^的h指点我,才会把事情搞怺?
投资方的主要错误Q?
Q?Q投资方是个_明的商人,他把我的设计Ҏ(gu)交给国的一个Y件公司分析,l论是否定的。但他觉得我q个人很有利用h(hun)|希望可以做成功其它事情,即Soft3D软g做不成功Q只要挣到钱p。这U赌博心态得正的可行性分析变得毫无h(hun)倹{?
Q?Q由于我不懂商业Q又象所有单U的学生那样Ҏ(gu)怿别h。他让我写下了不公正的合同,我竟然向他借钱C本来属于我?0%技术股份。他名ؓ投资方,实质上双方各Z一半的资金Q他?1%Q我?9%Q。他在明知Soft3D软g不能成功的情况下Q却Z占我的便宜而׃应有的精明,最l导致双斚w损失?
关闭公司Ӟ他搬C所有的固定财。我明明投入了技术,又亏?5万元Q却一无所得。几个月后当我意识到不公q找他协商时Q他_"只能怨你自己愚蠢Q读到博士,q张合同都看不懂?我觉得自己在此事上虽愚但不蠢Q真实、正直的品质加上不懈的努力会让我变得有智慧。自q奋斗没什么可以后(zhn)的Q学到的q比失去的多Q下一ơ会做得更好?BR>
大学十年Q一个程序员的\E)(?
林锐Q?999q岁?/P>
公司关闭后,我就面壁反省Q补习基Q准备ؓ几年之后"东山再v"ȝ蓄锐?
1999q?月,有一个民营企业家G先生向我h一个问题:"我给一个年Mh投资?00万元Q徏立一家从事环保信息应用开发的软g公司。他曾许Zq内创利润上千万元,可是才过?个月Q他把100万元用完了,什么也没挣到。我实在不明白是怎么回事Q请你帮我分析分析?
q位G先生q龄有我?.5倍,曑֜西北当过几十q的技术兵Q性格豪爽。他投资的那个年Mh叫YQ以下称Yl理Q,自称有英国的理学文凭,能对公司的市场、技术、管理一把抓。G先生喜欢?钱我没问?Q于是想也不惛_投了100万元Qƈ且给Yl理40%的股份?
G先生请Yl理到家里坐谈。我那时H然狡猾hQ自U是G先生的远房亲戚,在浙大读半导体物理,特M慕那些做软g的同龄hQ望听听Yl理的高见。Yl理果然信口开治I滔滔不绝Q连l不断,如黄x滥,一发而不可收拾。我Ȁ动地惛_参观他的公司和品,q表C抛弃物理专业Q立马{向Y件专业?
Yl理得意而笑Q?对于IT行业你就不懂了,我们l营的是一U理念而不是品,q是国外最先进的思想。你可以来参观我的公司,但你看不到具体的东西Q只能用心去领会?
q屁话比曹元朗的诗还臭(《围城》)。我搞Y件只?q功夫,说我不懂IT行业q不q分。可我读?0q大学都没听到过如此"先进"的思想。如果这是英国管理学教育的成果,我认己已l发Cq个曄?日不落帝?的衰败的真正原因Q有必要找英国首相切一番?
我对G先生_"Yl理Ҏ(gu)不懂技术,Zh极其夸。应马上关闭公司Q以l后(zhn)。那100万元你也亏得P׃个教训吧?
G先生_"钱我没问题,?00万元?yu)q我在澳门赌博输掉了?
1999q?月,G先生又来找我h另一个问题?
他说Q?林啊,你上ơ说得很有道理,我接受了教训?
我说Q?那是好事Q不论年龄大,知错改L好孩子嘛?
他叹了一口气Q?最q几个月QYl理又花了我100万元?
我当时差点给噎死Q气凶凶地训G先生Q?我早跟你讲过QYl理不是好东西,叫你关闭公司你不听,你老说钱没问题Q亏?00万元z该?
老先生象犯了错误的小孩子Q?Yl理每一ơ向我要钱时Q都拍拍胸脯保证下个月就有利润,所以我一而再、再而三地掏q他,希望能救zY件公司。现在该怎么办?"
一个有20名职员的软g公司Q程序员只有三四个,q?十羊?ji)?都不如?00万元的胦务报表中Q有100多万元用于吃喝玩乐和行較。这U公司完全无药可救。台湾作家李敖曾说过Q?当你没法扶一个h上马Ӟ也许应该拉他下马"。从5月䆾?月䆾Q我行侠仗义Q替G先生清理软g公司Q根除Yl理q些败类?
可是隑֓Q因为G先生投资的公司根本不把G先生攑֜眼里Q又岂能让我插手。就在我x设法卡住Yl理的脖子时QYl理总能从G先生那里挖出钱。G先生p被吸血鬼附w,却仍存惻I"如果吸血Dd我的病,p它再怺血吧?
Yl理又和一个来自深圳的骗子H想了注意Q教唆G先生再投?00万元新徏一?指纹"公司Q说利润比开发环保信息的应用开发更加可观(估计要用亿来度量Q。就在他们准备鉴合同之际Q我偶而\q,发现异常Q便L?
G先生是个好hQ但太顽固。好几次我气极想撒手不管Q但又不忍心好h被坏人欺负。我曾请求G先生Q?我求(zhn)别再说钱没有问题,(zhn)的Uh财会被人骗光。请让我把这漏洞堵住吧,好让我安心地回学校做完博士学位论文?
?月䆾Q我和G先生的两个儿子,伙同"黑社?的朋友,把那个Y件公司搬回G先生的工厂中Q辞退所有员工。现在那个Y件公司被别h接管Q仍然半Mz,好在每月亏损不过几万元,G先生承受得vQ我׃再去G先生的伤疤?
我以前从未玩q与人勾心斗角的游戏Q此三个月的l历让我疲惫不堪。那个Y件公司的员工N露QYl理的英国文凭大U是在上h杭州某个大专培训班里h的。方鸿渐买美国克莱顿大学博士文凭知耻(《围城》)Q而Yl理却趾高气扬。害得我q白无故国教育界担心Q回惌v英国鬼子曾打劫过中国Q倍感耻i?
G先生是正人君子,不防hQ实在不是现代的商h。我和他成了忘年交。G先生W一ơ见到我旉我工资几何,我答曎ͼ"300元,够买几本书?G先生甚ؓ着急:"q样的条件怎么能生z?你就搬到我家来住吧,我家条g好,你可以安心地学习Q将来可为国家多作A献?后来他几ơ相邀Q我q在国家的份上住入他家Q一直住到博士毕业。自从读中学以来Q我W一ơn受食来张_不用z衣服的奢侈。唯一的麻烦是我得向很多朋友解释:"我不是被别h养v来了Q是Z国家的利益,不得已才q么做的。G先生是男的不
我在d士学位的三年里,l历有点奇特。我遗憾的是"真才实学"没有长进Qƈ且没有了在西?sh)那LU真友情和缠l늈情。略为欣慰的是我做了几g感h的事Q也到了几件有的事,让我发觉自己变得成熟了?BR> 我很惌一讲自己参加希望工E的l历与感受?
1998q暑假,江省云和县梅源中学的老师们带希望班几名优U学生来到江大学Q其中有受我资助的何晓丽同学。我才知道初中学生一个学期的学杂费就?00元。何晓丽哭诉下学期不能再上学Q其它的学生处境怼。我以前资助?000元是5个h3q^均分zQ根本不起作用?
那时侯,公司倒闭使我债务累篏Qƈ且自信心遭受十年来最大的打击。我在入不敷出、心事重重的情况下,没有推卸义务Q而是"变本加利"的去这个义务。我在西늚好朋友史江一替我"接管"了一个中学生。有一个小姐追求我Q我乘机l她一个活生生?见面C??999q?月䆾Q我把工资卡送给了一个大学生Q自己成了无产阶U。从1997q?1月v到我博士毕业期间Q我直接或间接地?个困学生捐助了U?万元。我有了几点感受Q?
Q?Q对人的帮助莫过于给予希望?BR> Q?Qh在Q何时候都能够帮助比自己更困难的hQ哪怕自己处于困境?BR> Q?Q帮助是要负责Q的,一定要设法做成有意义的l果。不负责ȝ帮助是"施舍"?施舍"~Z诚意Q不配称?帮助"?
不少人曾Ҏ(gu)_"你是做大事的人,不要在小事上费_֊Q更不要Z别h而害了自己?
很多人M己将来是伟大人物而不愿做事Q从而到M没做成什么有价值的事。也有很多h希望自己成功后再d助别人,无论他最l成功还是失败,一辈子也没有帮助过人。还有很多h略有权势或略有名气后Q便觉得自己吃喝玩乐、放屁、上厕所都是重要的事Q在他们最能够帮助人的时候却?太忙""没空"为理׃d好事?
我也在忙、在奋斗Q也渴望成ؓ伟大人物Q但我希望让有意义的事充实一生?BR> 我还要讲另一件我常干的小事?
很多受过高等教育的h保留了随地扔垃圾?风俗习惯"Q这恶习p脚气那样虽然不致ZdQ但能遗臭万q。即便象江大学q等兔R的地方,你都l常可以看见草坪、校门口的废U、果皮、塑料袋Q垃圑ְ如同天怸的一砣狗屎那样鲜艻IZ竟然无动于衷。我C误己多次当众、当道捡垃圾Q可是几q来我都没有在大学里发现W二个做q种事的人?
我很惛_所有的教授、博士、硕士、学士们讲句话:"救hq不只是ȝq的事,保护环境也不只是清洁工干的事。只要你多化几秒钟,弯几ơ腰Q就能让环境更加清洁Q让心灵更加清洁。我们不必个个道貌岸Ӟ但至应该做?M明理'?
那些正在q我和将要追我的姐们,你多捡一ơ垃圑ְ多一份希望,你丢一ơ垃圑ְ不再有希望?
我这L不休地?希望工程"?捡垃?Qƈ不是在沽名钓誉,也不是在布道Q只是希望我q些"金玉良言"能触动更多的自以己是高素质的Z?BR>
大学十年Q一个程序员的\E)(?
林锐Q?999q岁?/P>
在浙大的三年里,我没有对感情"播种"Q所以也没有收获Q但有一?艳遇"?
在关闭公司的那天晚上QhLI,我象严监生断气前那样盯着未熄灭的灯。这时一位杭大(现已q入新浙大)的四q女生来找我。一q前Ҏ(gu)作ؓ实习记者采访过我,谈得很投机。我知道Ҏ(gu)聪明好学的学生,曑֤a不惭地教D她几ơ。我开公司的一q里几乎没与Ҏ(gu)往q,想不到当我成了光杆司令时她还?兔死狐?zhn)?地来看望我,着实让我感动?
我不无自嘲地对她_"你不用安慰我了,q次p|我还能挺得住?
她说Q?我不是来安慰你的。我一直盼望你的公司倒闭Q等了整整一q。在你去北京之前Q我有话跟你说?
我心下一凉,搞不清什么地方得|她了,让她如此记恨我。大概是我得意之日教导她时言语过重,伤了她的自尊心。好在我是知错就改的人,当下惭愧地向奚w歉?
她不理会我,_"你开公司时光环重重,我根本无法靠q你。即侉K时我成了你的好朋友,你也不会把我攑֜眼里。我暗恋你一q了Q一直都没跟你讲。我早知道你会失败的Q失败时你就剩下一个hQ你才会知道我是真心׃的,而不是冲着其它来的。你是个优秀的理U学生,我是个优U的文U学生,门当户对Q珠帘合壁。请你不要觉得女的追L很荒唐,我是认真的,请你l我一ơ机会?
我虽然评不上情场高手Q好歹也在爱河里游过泻I呛过水。想不到仓促之下Q被一奛_说得脸红而Q无法掩盖窘相?
我一直认为男人应该勤劳一辈子Q好让柔q奛_舒舒服服地在大树下乘凉。而学习、工作出色的奛_只能做朋友,不能做夫人?
她从习诗弄文,d学时蜚声杭大。我见到她第一面时把她归cMؓ事业上的朋友Q所以才会正儿八l地与她交谈q教导她。我在西늚两个x友就属于M不太好但比较有魅力的女生Q我从来也没有指D她们学习。如果我喜欢一个女孩子q希望她成ؓ我的x友,我早去q求她了Q岂能轮到她q我?
她见我彷徨不安,便滔滔不l地例D爱我?证据"。我开公司一q来发生的事她了如指掌,p在我的房间里放了H听器,在我的朋友中安插了间谍。她甚至跑到团中央去查阅我的老底Q有?案g"我过ȝ伙伴都未必知道。她思念我时Q写了很多诗Q留了很多泪Qؓ此杭大的一些男生四处追?凶犯"?
我早知道有些Z~程序、不做实验就能写文,N男女之间不接触也能滋生感情?
W一回合我就被她挑翻在地Q我莫名其妙地成?负心?Q无地自容地把她送走。我以ؓq是文科女生的风|当作一个趣事不攑֜心上?
我从北大Ҏ(gu)"x"回来不久后,Ҏ(gu)着一鲜花来找我QƈҎ(gu)说了她的梦想Q在寒冷的冬天,大地铺满U雪Q四野h鸟绝qV我孤独求|地深居在冷冰冰的木屋里。在一个狂风呼啸的黄昏Q她一手拎着亲手做的饭菜Q我惛_该有土豆和G椒)Q一手拎着一捆木_敲开了那扇紧闭的门和心房。终于木屋四壁生辉…?
我对W一个朋友最好的赞美是:"黄蓉很象你?
我对W二个朋友最深情的话是:"来׃老了Q我回黄岩当物理老师Q你当语文老师?
相比之下Q我的确不及杭大女生O。此后她再找q我几次Q当我意识到她动真格的时候,她已不能自拔。爱情是很怪的东西Qƈ不是两个好hp出火花。就象一头好牛和一匹好马,可以一起干z,但没有必要吃住都兛_一赗?
与其让她长痛Q还不如让她狠痛一ơ?
我对她说Q?我们真的不能在一赗? 奚wZ么? 我说Q?我不喜欢你? 她再问ؓ什么? 我说Q?不ؓ什么,我没有心跳的感觉?
她说十年之后再找我?
我知道她会奋发图强,因ؓ她会一直想着"Z?Q期望让自己有个满意的答案?q条?q前我已l走q了?
半年前我再见到她Ӟ她已l直d了,在文学上有了长的进步。ƈ且找了一个Y件工E师做朋友?
我说软g工程师未必就懂得软g工程的道理,待我写的软g工程书籍出版后再送她一本?
她说会送给我她的第一本著作,书中开头的几个故事是关于我和她?
我说看了她的书后一定会写一读后感l她?
她仍然提醒我不要忘记十年后的相约?BR>
我在大有一个值得怀늚人,Ҏ(gu)宿舍楼的大妈。在1999q?月至5月,我在博士生宿舍静心修炼内功,大妈p我的"护法"。晚上九(ji)炚wӞ她就会烧些东西给我吃。我和大妈非亲非故,同学们都不明白大妈ؓ什么待我好。我想那是因为我没把自己当成"博士"来看Q而是当成"?来看?
5月䆾后,我看在国家的份上搬到一个千万富家里去住,大妈也调?熊猫?当掌门h。我一般隔几个月去看望大妈一ơ,中秋节我和她在一赗朋友们知道我和大妈有这层关p,qUh大妈物色x友?
大妈果然U职Q她p特务那样审视大楼里的女生。可大妈毕竟是大妈,奚w用的"标准"是几十年前的版本Q无法与C的兼宏V她盯住了不该盯的,却漏掉了不该漏的Q至今都?推销"成功一个?
qg事让我又明白了一个Y件工E道理:光有完善的数据库q不够,q应该提供很好的搜烦引擎?BR> 我相信生zR科学、艺术中的很多道理是盔R的Q于是就不嫌人笑Q写下《Y件工E思想》这本书Qƈ写下了十q来的故事,交最后一ơ作业?
大学十年l我留下了很多美好的回忆Q现在可以打上漂亮的句号了。尽我卛_告别大学Q但我会l生学习。也许我成不了天才,但还有机会成为天才的爸爸?
我想大声呼喊出那U可以用双手把握未来的自豪?
我要对年ȝ朋友们说两句之言Q?
一、主动去创造环境,否则你无法设计h生?
二、生zd工作要充满激情,否则你无法体会到淋漓致的欢乐与痛苦?
如果我碰C帝,只会对他说一句话Q?你看厕所d?
]]>修练8qC++面向对象E序设计之体?林锐博士) http://www.tkk7.com/faintbear/archive/2005/09/09/12514.html力力力 力力力 Fri, 09 Sep 2005 02:59:00 GMT http://www.tkk7.com/faintbear/archive/2005/09/09/12514.html http://www.tkk7.com/faintbear/comments/12514.html http://www.tkk7.com/faintbear/archive/2005/09/09/12514.html#Feedback 0 http://www.tkk7.com/faintbear/comments/commentRss/12514.html http://www.tkk7.com/faintbear/services/trackbacks/12514.html
六年前,我刚热恋“面向对象”(Object-OrientedQ时Q一口气C了近十个定义。六q后Q我从几十万行程序中滚爬出来准备写点心得体会Ӟ却无法解释什么是“面向对象”,p说不清楚什么是数学那样。Y件工E中的时髦术语“面向对象分析”和“面向对象设计”,通常是针对“需求分析”和“系l设计”环节的。“面向对象”有几大学派Q就象如来佛(jng)、上帝和真主用各自的方式定义了这个世界,q留下一堆经书来解释q个世界?/P>
有些学者徏议这h“对象”:分析一个句子的语法Q找出名词和动词Q名词就是对象,动词则是对象的方法(卛_敎ͼ?/P>
当年国民党的文hZҎ(gu)毛泽东的《沁园春·雪》,Ҏ(gu)h朝遗老们写了一些对仗工整的诗,误介石q目。老蒋看了气得大骂Q“娘希匹Q全都有一股棺材里腐尸的气呟뀂”我看了几千늚软g工程资料Q终于发现自己有些“弱智”,无法理解“面向对象”的理论Q同旉(zhn)到“编E是道理。?/P>
面向对象E序设计语言很多Q如Smalltalk、Ada、Eiffel、Object Pascal、Visual Basic、C++{等。C++语言最讨h喜欢Q因为它兼容C 语言Qƈ且具备C 语言的性能。近几年Q一U叫Java 的纯面向对象语言U极一Ӟ不少人叫喊着要用Java 革C++的命。我认ؓJava 好比是C++的外甥,虽然不是直接遗传的,但也几分象样。外甥在舅舅w上玩耍时z了一泡尿Q俩Z该ؓ此而争c?/P>
关于C++E序设计的书藉非常多Q本章不讲C++的语法,只讲一些小的~程道理。如果我能早几年明白q些道理,可以大大改善数十万行程序的质量了?/P>
1. C++面向对象E序设计的重要概?/STRONG>
早期革命q里有q样一个角Ԍ他说Q“我是党代表Q我代表党,我就是党。”后来他l同志们带来了灾难?/P>
会用C++的程序员一定懂得面向对象程序设计吗Q?/P>
不会用C++的程序员一定不懂得面向对象E序设计吗?
两者都未必。就象坏蛋入党后未必能成为好人,好h不入党未必变成坏蛋那栗?/P>
我不怕触犯众怒地说句大话Q“C++没有高手QC 语言才有高手。”在用C 和C++~程8q之后,我深深地遗憾自己不是C 语言的高手,更遗憾没有hҎ(gu)我如何进行面向对象程序设计。我和很多C++E序员一P在n用到C++语法的好处时便以己已l明白了面向对象E序设计。就象挤掉牙膏卖牙膏皮那P真是暴殄天物呀?/P>
Z不懂拼音也会讲普通话Q如果懂得拼韛_会把普通话讲得更好。不懂面向对象程序设计也可以用C++~程Q如果懂得面向对象程序设计则会把C++E序~得更好。本节讲qC个非常基的概念:“类与对象”、“承与l合”、“虚函数与多态”。理解这些概念,有助于提高程序的质量Q特别是提高“可复用性”与“可扩充性”?/P>
1.1 cM对象
对象QObjectQ是c(ClassQ的一个实例(InstanceQ。如果将对象比作房子Q那么类是房子的设计图U。所以面向对象程序设计的重点是类的设计,而不是对象的设计。类可以数据和函数装在一P其中函数表示了类的行为(或称服务Q。类提供关键字public、protected 和private 用于声明哪些数据和函数是公有的、受保护的或者是U有的?/P>
q样可以辑ֈ信息隐藏的目的,卌cM仅公开必须要让外界知道的内容,而隐藏其它一切内宏V我们不可以滥用cȝ装功能Q不要把它当成火锅,什么东襉K往里扔?/P>
cȝ设计是以数据Z心,q是以行Zؓ中心Q?/P>
d“以数据Z心”的那一zhxcȝ内部数据l构Q他们习惯上private cd的数据写在前面,而将public cd的函数写在后面,如表8.1(a)所C?/P>
d“以行ؓZ心”的那一zhxcd该提供什么样的服务和接口Q他们习惯上public cd的函数写在前面,而将private cd的数据写在后面,如表8.1(b)所C?/P>
很多C++教课书主张在设计cL“以数据Z心”。我坚持q且读者在设计cL“以行ؓZ心”,即首先考虑cd该提供什么样的函数。Microsoft 公司的COM 规范的核心是接口设计QCOM 的接口就相当于类的公有函数[Rogerson 1999]。在E序设计斚wQ咱们不要怀疑Microsoft 公司的风根{?/P>
设计孤立的类是比较容易的Q难的是正确设计基类及其zcR因为有些程序员搞不清楚“扎쀝(InheritanceQ、“组合”(CompositionQ、“多态”( PolymorphismQ这些概c?
1.2 l承与组?/P>
如果A 是基c,B 是A 的派生类Q那么B 承A 的数据和函数。示例程序如下:
class A
{
public:
void Func1(void);
void Func2(void);
};
class B : public A
{
public:
void Func3(void);
void Func4(void);
};
// Example
main()
{
B b; // B的一个对?/P>
b.Func1(); // B 从A l承了函数Func1
b.Func2(); // B 从A l承了函数Func2
b.Func3();
b.Func4();
}
q个单的CZE序说明了一个事实:C++的“扎쀝特性可以提高程序的可复用性。正因ؓ“扎쀝太有用、太Ҏ(gu)用,才要防止q“扎쀝。我们要l“扎쀝立一些用规则:
一、如果类A 和类B 毫不相关Q不可以Z使B 的功能更多些而让B l承A 的功能?/P>
不要觉得“不吃白不吃”,让一个好端端的健壮青q无~无故地吃h参补w体?/P>
二、如果类B 有必要用A 的功能,则要分两U情况考虑Q?/P>
Q?Q若在逻辑上B 是A 的“一U”(a kind of Q,则允许B l承A 的功能。如男hQManQ是人(HumanQ的一U,男孩QBoyQ是男h的一U。那么类Man 可以从类Human zQ类Boy 可以从类Man z。示例程序如下:
class Human
{
?/P>
};
class Man : public Human
{
?/P>
};
class Boy : public Man
{
?/P>
};
Q?Q若在逻辑上A 是B 的“一部分”(a part ofQ,则不允许B l承A 的功能,而是要用A和其它东西组合出B。例如眼QEyeQ、EQNoseQ、口QMouthQ、耻IEarQ是_HeadQ的一部分Q所以类Head 应该qEye、Nose、Mouth、Ear l合而成Q不是派生而成。示例程序如下:
class Eye
{
public:
void Look(void);
};
class Nose
{
public:
void Smell(void);
};
class Mouth
{
public:
void Eat(void);
};
class Ear
{
public:
void Listen(void);
};
// 正确的设计,冗长的程?/P>
class Head
{
public:
void Look(void) { m_eye.Look(); }
void Smell(void) { m_nose.Smell(); }
void Eat(void) { m_mouth.Eat(); }
void Listen(void) { m_ear.Listen(); }
private:
Eye m_eye;
Nose m_nose;
Mouth m_mouth;
Ear m_ear;
};
如果允许Head 从Eye、Nose、Mouth、Ear z而成Q那么Head 自动具有Look、Smell、Eat、Listen q些功能Q?/P>
// 错误的设?/P>
class Head : public Eye, public Nose, public Mouth, public Ear
{
};
上述E序十分短ƈ且运行正,但是q种设计却是错误的。很多程序员l不起“扎쀝的诱惑而犯下设计错误?/P>
一只公鸡劲地q打一只刚下了蛋的母鸡Q你知道Z么吗Q?/P>
因ؓ母鸡下了鸭蛋?/P>
本书3.3 节讲q“运行正”的E序不见得就是高质量的程序,此处是一个例证?
1.3 虚函C多?/P>
除了l承外,C++的另一个优良特性是支持多态,卛_许将zcȝ对象当作基类的对象用。如果A 是基c,B 和C 是A 的派生类Q多态函数Test 的参数是A ?指针。那么Test 函数可以引用A、B、C 的对象。示例程序如下:
class A
{
public:
void Func1(void);
};
void Test(A *a)
{
a->Func1();
}
class B : public A
{
?/P>
};
class C : public A
{
?/P>
};
// Example
main()
{
A a;
B b;
C c;
Test(&a);
Test(&b);
Test(&c);
};
以上E序看不出“多态”有什么h(hun)|加上虚函数和抽象基类后,“多态”的威力显C出来了?/P>
C++用关键字virtual 来声明一个函Cؓ虚函敎ͼzcȝ虚函数将QoverrideQ基cd应的虚函数的功能。示例程序如下:
class A
{
public:
virtual void Func1(void){ cout<< “This is A::Func1 \n”}
};
void Test(A *a)
{
a->Func1();
}
class B : public A
{
public:
virtual void Func1(void){ cout<< “This is B::Func1 \n”}
};
class C : public A
{
public:
virtual void Func1(void){ cout<< “This is C::Func1 \n”}
};
// Example
main()
{
A a;
B b;
C c;
Test(&a); // 输出This is A::Func1
Test(&b); // 输出This is B::Func1
Test(&c); // 输出This is C::Func1
};
如果基类A 定义如下Q?/P>
class A
{
public:
virtual void Func1(void)=0;
};
那么函数Func1 叫作U虚函数Q含有纯虚函数的cd作抽象基cR抽象基cd定义纯虚函数的形式Q具体的功能由派生类实现?/P>
l合“抽象基cZ和“多态”有如下H出优点Q?/P>
Q?Q应用程序不必ؓ每一个派生类~写功能调用Q只需要对抽象基类q行处理卛_。这一
招叫“以不变应万变”,可以大大提高E序的可复用性(q是接口设计的复用,而不是代码实现的复用Q?/P>
Q?Q派生类的功能可以被基类指针引用Q这叫向后兼容,可以提高E序的可扩充性和可维护性。以前写的程序可以被来写的E序调用不为奇Q但是将来写的程序可以被以前写的E序调用那可了不赗?
2 良好的编E风?/STRONG>
内功深厚的武林高手出招往往qxE无奇。同理,~程高手也不会用奇门怪招写程序。良好的~程风格是生高质量E序的前提?/P>
2.1 命名U定
有不h~程时用拼音l函数或变量命名Q这样做q不能说明你很爱国,却会让用此程序的p(很多南方Z懂拼韻I我就不懂Q。程序中的英文一般不会太复杂Q用词要力求准确。匈牙利命名法是Microsoft 公司倡导的[Maguire 1993]Q虽然很烦琐Q但用习惯了也就成了自然。没有h你采用何U命名法Q但有一点应该做刎ͼ自己的程序命名必M致?/P>
以下是我~程旉用的命名U定Q?/P>
Q?Q宏定义用大写字母加下划U表C,如MAX_LENGTHQ?/P>
Q?Q函数用大写字母开头的单词l合而成Q如SetName, GetName Q?/P>
Q?Q指针变量加前缀pQ如*pNode Q?/P>
Q?QBOOL 变量加前~bQ如bFlag Q?/P>
Q?Qint 变量加前~iQ如iWidth Q?/P>
Q?Qfloat 变量加前~fQ如fWidth Q?/P>
Q?Qdouble 变量加前~dQ如dWidth Q?/P>
Q?Q字W串变量加前~strQ如strName Q?/P>
Q?Q枚丑֏量加前缀eQ如eDrawMode Q?/P>
Q?0Q类的成员变量加前缀m_Q如m_strName, m_iWidth Q?/P>
对于int, float, double 型的变量Q如果变量名的含义十分明显,则不加前~Q避免烦琐。如用于循环的int 型变量i,j,k Qfloat 型的三维坐标Qx,y,zQ等?/P>
2.2 使用断言
E序一般分为Debug 版本和Release 版本QDebug 版本用于内部调试QRelease 版本发行l用户用。断aassert 是仅在Debug 版本起作用的宏,它用于检查“不应该”发生的情况。以下是一个内存复制程序,在运行过E中Q如果assert 的参Cؓ假,那么E序׃中止Q一般地q会出现提示对话Q说明在什么地方引发了assertQ?/P>
//复制不重叠的内存?/P>
void memcpy(void *pvTo, void *pvFrom, size_t size)
{
void *pbTo = (byte *) pvTo;
void *pbFrom = (byte *) pvFrom;
assert( pvTo != NULL && pvFrom != NULL );
while(size - - > 0 )
*pbTo + + = *pbFrom + + ;
return (pvTo);
}
assert 不是一个仓促拼凑v来的宏,Z不在E序的Debug 版本和Release 版本引v差别Qassert 不应该生Q何副作用。所以assert 不是函数Q而是宏。程序员可以把assert 看成一个在Mpȝ状态下都可以安全用的无害试手段?/P>
很少有比跟踪到程序的断言Q却不知道该断言的作用更让h沮的事了。你化了很多旉Q不是ؓ了排除错误,而只是ؓ了弄清楚q个错误到底是什么。有的时候,E序员偶还会设计出有错误的断言。所以如果搞不清楚断a查的是什么,很隑ֈ断错误是出现在程序中Q还是出现在断言中。幸q的是这个问题很好解冻I只要加上清晰的注释即可。这本是显而易见的事情Q可是很有E序员这样做。这好比一个h在森林里Q看到树上钉着一块“危险”的大牌子。但危险到底是什么?树要倒?有废井?有野兽?除非告诉Z“危险”是什么,否则q个警告牌难以v到积极有效的作用。难以理解的断言常常被程序员忽略Q甚臌删除。[Maguire 1993]
以下是用断a的几个原则:
Q?Q用断a捕捉不应该发生的非法情况。不要淆非法情况与错误情况之间的区别,后者是必然存在的ƈ且是一定要作出处理的?/P>
Q?Q用断a对函数的参数q行认?/P>
Q?Q在~写函数Ӟ要进行反复的考查Qƈ且自问:“我打算做哪些假定?”一旦确定了?/P>
假定Q就要用断a对假定进行检查?/P>
Q?Q一般教U书都鼓q序员们进行防错性的E序设计Q但要记住这U编E风g隐瞒错误。当q行防错性编E时Q如果“不可能发生”的事情的确发生了,则要使用断言q行报警?
2.3 new、delete 与指?/P>
在C++中,操作Wnew 用于甌内存Q操作符delete 用于释放内存。在C 语言中,函数malloc 用于甌内存Q函数free 用于释放?存。由于C++兼容C 语言Q所以new、delete、malloc、free 都有可能一起用。new 能比malloc q更多的事,它可以申请对象的内存Q而malloc 不能。C++和C 语言中的指针威猛无比Q用错了会带来灾难。对于一个指针pQ如果是用new甌的内存,则必ȝdelete 而不能用free 来释放。如果是用malloc 甌的内存,则必ȝfree 而不能用delete 来释放。在用delete 或用free 释放p 所指的内存后,应该马上昑ּ地将p |ؓNULLQ以防下ơ用p 时发生错误。示例程序如下:
void Test(void)
{
float *p;
p = new float[100];
if(p==NULL) return;
?/ do something
delete p;
p=NULL; // 良好的编E风?/P>
// 可以l箋使用p
p = new float[500];
if(p==NULL) return;
?/ do something else
delete p;
p=NULL;
}
我们q要预防“野指针”,“野指针”是指向“垃䏀内存的指针Q主要成因有两种Q?/P>
Q?Q指针没有初始化?/P>
Q?Q指针指向已l释攄内存Q这U情冉|让h防不胜防Q示例程序如下:
class A
{
public:
void Func(void){…}
};
void Test(void)
{
A *p;
{
A a;
p = &a; // 注意a 的生命期
}
p->Func(); // p 是“野指针”,E序出错
}
2.4 使用const
在定义一个常量时Qconst ?define 更加灉|。用const 定义的常量含有数据类型,该常量可以参与逻辑q算。例如:
const int LENGTH = 100; // LENGTH 是int cd
const float MAX=100; // MAX 是float cd
#define LENGTH 100 // LENGTH 无类?/P>
#define MAX 100 // MAX 无类?/P>
除了能定义常量外Qconst q有两个“保护”功能:
一、强制保护函数的参数g发生变化
以下E序中,函数f 不会改变输入参数name 的|但是函数g 和h 都有可能改变name的倹{?/P>
void f(String s); // pass by value
void g(String &s); // pass by referance
void h(String *s); // pass by pointer
main()
{
String name=“Dog?
f(name); // name 的g会改?/P>
g(name); // name 的值可能改?/P>
h(name); // name 的值可能改?/P>
}
对于一个函数而言Q如果其?’或?’类型的参数只作输入用,不作输出用,那么应当在该参数前加上constQ以保函数的代码不会改变该参数的|如果改变了该参数的|~译器会出现错误警告Q。因此上q程序中的函数g 和h 应该定义成:
void g(const String &s);
void h(const String *s);
二、强制保护类的成员函C改变M数据成员的?/P>
以下E序中,cstack 的成员函数Count 仅用于计敎ͼZ保Count 不改变类中的M数据成员的|应将函数Count 定义成const cd?/P>
class Stack
{
public:
void push(int elem);
void pop(void);
int Count(void) const; // const cd的函?/P>
private:
int num;
int data[100];
};
int Stack::Count(void) const
{
++ num; // ~译错误Qnum 值发生变?/P>
pop(); // ~译错误Qpop 改变成员变量的?/P>
return num;
}
2.5 其它
Q?Q不要编写一条过分复杂的语句Q紧凑的C++/C 代码q不见到能得到高效率的机器代码,却会降低E序的可理解性,E序出错误的几率也会提高?/P>
Q?Q不要编写集多种功能于一w的函数Q在函数的返回gQ不要将正常值和错误标志混在一赗?/P>
Q?Q不要将BOOL 值TRUE 和FALSE 对应? ? q行~程。大多数~程语言FALSE定义?QQ何非0 值都是TRUE。Visual C++TRUE 定义?Q而Visual Basic 则将TRUE定义?1。示例程序如下:
BOOL flag;
?/P>
if(flag) { // do something } // 正确的用?/P>
if(flag==TRUE) { // do something } // 危险的用?/P>
if(flag==1) { // do something } // 危险的用?/P>
if(!flag) { // do something } // 正确的用?/P>
if(flag==FALSE) { // do something } // 不合理的用法
if(flag==0) { // do something } // 不合理的用法
Q?Q小心不要将? =”写成?”,~译器不会自动发现这U错误?/P>
Q?Q不要将123 写成0123Q后者是八进制的数倹{?/P>
Q?Q将自己l常犯的~程错误记录下来Q制成表D(chung)在计机旁边?/P>
3 结
C++/C E序设计如同林寺的武功一样博大精深,我练? q_大概只学C三成。所以无Z么时候,都不要觉得自q~程水^天下W一Q看到别人好的技术和风格Q要虚心学习。本章的内容得可怜,p口时只l你一颗杨梅吃Q你一定不q瘾。我借花献佛(jng)Q推荐一本好书:Marshall P. Cline 著的《C++ FAQs》[Cline 1995]。你看了后一定会赞不l口。会~写C++/C E序Q不要因此得意洋z,q只是程序员基本的技能要求而已。如果把pȝ分析和系l设计比作“战略决{”,那么~程充其量只是“战术”。如果指挥官是个大笨蛋,士兵再勇敢也会吃败仗。所以我们程序员不要只把眼光盯在E序上,要让自己博学多才。我们应该向北京胡同里的孩们学习,他们小q纪p指点江山Q评Z界大事?/P>
]]>如果你不知道RSS是什么。一定要看看~ http://www.tkk7.com/faintbear/archive/2005/09/06/12210.html力力力 力力力 Tue, 06 Sep 2005 05:50:00 GMT http://www.tkk7.com/faintbear/archive/2005/09/06/12210.html http://www.tkk7.com/faintbear/comments/12210.html http://www.tkk7.com/faintbear/archive/2005/09/06/12210.html#Feedback 0 http://www.tkk7.com/faintbear/comments/commentRss/12210.html http://www.tkk7.com/faintbear/services/trackbacks/12210.html 也许q个比较直观。看看哈
RSS 是一U用于共享新d其他Web内容的数据交换规范,h?A title=|景通讯公司 技术,订戯阅的内容传送给他们?A title=通訊協同格式 >通讯协同格式(Protocol)。RSS可以是以下三个解释的其中一个:
Really Simple Syndication Q真正简单的整合Q?
RDF (Resource Description Framework) Site Summary
Rich Site Summary Q丰富站Ҏ(gu)要)
但其实这三个解释都是指同一USyndication的技术?/P>
目前RSS规范的主要版本有0.91?.0?.0?/P>
0.91版和1.0版完全不同,风格不同Q制定标准的Z不同?.91版和2.0版一脉相ѝ?.0版更靠拢XML 标准?/P>
RSS目前q泛用于blog ?A title=Wiki >wiki和网上新闻频道,世界多数知名新闻C站都提供RSS订阅支持?BR>
]]> 我的收藏 http://www.tkk7.com/faintbear/archive/2005/03/10/1915.html力力力 力力力 Thu, 10 Mar 2005 08:07:00 GMT http://www.tkk7.com/faintbear/archive/2005/03/10/1915.html http://www.tkk7.com/faintbear/comments/1915.html http://www.tkk7.com/faintbear/archive/2005/03/10/1915.html#Feedback 0 http://www.tkk7.com/faintbear/comments/commentRss/1915.html http://www.tkk7.com/faintbear/services/trackbacks/1915.html ORACLE: http://www.eygle.com/ (牛horacle) http://www.anysql.net/index.html (牛h d.b.c.a) http://skyhorse.blogbus.com/logs/2004/03/106569.html http://www.dbanotes.net/ http://www.psoug.org/reference/ (我靠.最好的学习oracle pl/sql的地? JAVA: http://www.javaresearch.org http://www.java-cn.com/ http://www.javayou.com/ (java自由? http://yhe.dalian.cn/ (红帽的blogQ个人收藏,java学习...) JAVA---J2ME Java憩园 (高手? http://www.j2medev.com/ Blog: http://www.nihaoblog.com/index.html http://www.rainbowsoft.org/zblog/ c/c++: http://www.luocong.com/ (数据l构的学?