﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-to myself 的分类学习日志-随笔分类-essay</title><link>http://www.cppblog.com/toMyself/category/14789.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 06 Oct 2010 00:02:04 GMT</lastBuildDate><pubDate>Wed, 06 Oct 2010 00:02:04 GMT</pubDate><ttl>60</ttl><item><title>一个WSN在美国的奋斗</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125232.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:17:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125232.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 自在心语 BBS 站(展开完整界面) &#8594; 欸乃 &#8594; 阅读文章P.invertebrate 版con,244,16592回复帖子发表话题[上一篇] [下一篇] [同主题上篇] [同主题下篇]发信人: endymion (樱木&amp;受伤专家), 信区: P.invertebrate标&nbsp; 题: 一个WSN在美国的奋斗(转载)发信站: 自在心语 BBS 站 (Wed ...&nbsp;&nbsp;<a href='http://www.cppblog.com/toMyself/archive/2010/08/29/125232.html'>阅读全文</a><img src ="http://www.cppblog.com/toMyself/aggbug/125232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:17 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谈谈写程序与学英语</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125231.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:15:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125231.html</guid><description><![CDATA[<p>谈谈写程序与学英语</p>
<p>俗话说，没有金刚钻，就别揽瓷器活儿。套用到IT业，英语不行，就别做程序员。网上关于程序员学英语的文章不少，但我想谈谈我自己的看法。首先详细讨论一下为什么程序员离了英语不行，然后针对程序员应该怎么学英语说说我的体会。</p>
<p>英语是计算机的母语，是程序的母语，所以必然是程序员的母语。程序中的变量名、函数名起得好不好是决定代码质量和可维护性的最关键因素。高质量的代码应该是这样的：代码基本上是自解释的（self-explanatory），不需要太多注释，不管代码的规模有多大，具有相关知识背景的读过文档的人都可以立刻上手、立刻参与维护和开发。要想使代码能够自解释，给变量和函数起个好名字很关键，很显然，只能用英文起名字，一是用汉语拼音起名字可读性很差，二是英文单词通常比汉语更expressive（看吧，如果用汉语来说，就得说&#8220;表达能力更强&#8221;、&#8220;更有表现力&#8221;这么罗嗦），由于程序的复杂性，变量和函数往往表示一些很抽象的概念，起个既准确又简洁的名字并不容易，可是很多时候，用汉语需要很多字才能说清楚的一件事，用英文一个单词再加点词形变化就能说清楚了。例如APUE上讲sleep函数的实现，其中有个变量表示&#8220;本来应该睡到某个时刻，但是提前被信号唤醒了，唤醒时与本来应该睡到的时刻相差的时间&#8221;，如果为了简洁而不求准确，这个变量名至少也得叫&#8220;未睡到&#8221;，而书中只用了一个单词unslept，非常准确、简洁地表达了这个意思。为了写程序而学英语需要学到什么水平？我认为能起出这种变量名就够水平了。很多在IT外企工作的中国人，说话写文章经常夹杂着英文单词（比我严重多了因为我不在外企），非常可以理解，确实是为了表达得更准确简洁的需要，而不是纯为了play zhuangbility。总之，要写程序必须学好英语，否则连变量名都起不好，这虽然是一个非技术问题，但却是个根本问题，比任何技术问题都重要。当然，现在很多编程语言也支持用Unicode字符给变量和函数起名，但是你见过有人用汉字写程序吗？根本不实用。有人会辩驳说一页英文翻译成中文往往只占半页，中文不是更简洁吗？但是你算算打一页英文和打半页中文哪个敲键盘次数多。另外，要读别人的代码也必须学好英语，如果你不知道unslept是由sleep变形而来的，就体会不到其中的精妙，只有大量阅读高质量的代码，才能写出高质量的代码，创作都是从模仿开始的。</p>
<p>说说英语对于看书学习的重要性。中文技术书和英文技术书的水平根本不在一个量级上，这是有很多原因的，不能全归结于中文书的作者水平差。最重要的是，出中文书的低回报率决定了作者不可能花太多心血在上面，你去amazon看看一本书卖多少美刀，再去chinapub看看一本书卖几块钱。老外写一本书，可以做到全书没有一个拼写错误（当然英文的拼写检查工具更完善也是部分原因），中文能找出一本没有错别字的书吗？Knuth可以悬赏让全世界读者来找磋，中文书作者有哪个敢这么做？不是因为老外态度有多认真治学有多严谨，而是因为他们赚到了，就应该拿出高质量的作品来，不然会被读者骂的。</p>
<p>英文技术书的翻译质量通常很差。也不能归结于译者的水平差，我也翻译过书，也努力想译好，但真的很难译好。IT业的新名词层出不穷，像&#8220;内核&#8221;、&#8220;网络&#8221;这种常见术语还好，稍微专一点的术语都没有统一的译名。我们在教学中发现，很多学员看书时搞不清这本书的名词A和那本书的名词B是什么区别，来问老师，才发现原来A和B就是一回事儿。这是一个单词对应多个译名的情况，还有一个译名对应多个单词的情况，比如field、domain、realm都译成&#8220;域&#8221;，block、bulk都译成&#8220;块&#8221;，argument、parameter都译成&#8220;参数&#8221;，attribute、property都译成&#8220;属性&#8221;，虽然这些词的意思本来就差不多，但是在一篇文章里，作者可以换着用，不同的单词表示不同的概念，翻译完了一看，都成一个概念了。英文书背后都有index，看到一半忘了某个名词是怎么定义的就可以翻index，而译文通常没有index，名词都已经乱七八糟了，没法做index。还有更发指的是，老外喜欢造词，现有的单词上加一点变化和组合（例如有人喜欢说automagically），看着心领神会，想译出来就很费劲。老外即使在技术书中也经常用一些生动的表达方式和俏皮话，而中文的书面语言非常死板，生动的表达方式只存在于口语中，如果写在书上就很不像话，这也是很难翻译的一个重要原因。看中文译本，不仅质量差，而且跟不上时代，通常一本英文书出来，至少要等一到两年才能看到中文译本。两年啊！等你看到这本书的中文译本时，这个版本都快淘汰了。</p>
<p>然后说说英语在开发工作中的重要性。看书学习通常只起一个引导入门的作用，在工作中更有用的是手册、文档。学完了C语言开始写程序了，谁还会去查K&amp;R附录中的库函数？查man page才是最有效率的。然而手册比入门书更少有中文译版，因为手册是随时变的，会随着软件版本更新，而且需要看这些开发手册的人通常不会有英文障碍，有英文障碍的人即使看了翻译的手册也写不出好程序来，所以当然没必要翻译了。不管什么技术，官方的手册和技术标准才是最原始的第一手资料，看别的书都是以讹传讹，由于自然语言不可避免是有歧义的，文档中表达得不准确的地方就会被文档的读者也就是技术书的作者误解，技术书中再有表达不准确的地方又被译者误解。我们小时候都玩过传话的游戏，几个人站一排，通过悄悄话传一句话，传到最后变成什么了？所以，学网络协议，就得看RFC，学ARM，就得看ARM公司的Architecture Reference Manual，要学习C语言就得看C99，有歧义不要紧，自己去揣测原作者的意思，总比道听途说的可靠。</p>
<p>我们的学员出去面试经常被问到的一个问题就是：在开发工作中遇到问题，书和文档上都没有答案，网上搜一下也没有答案，怎么办？要我说，能看懂源代码的就去源代码中找答案，这称为hacking，不管是内核、libc还是各种framework，你调用的东西有问题都能从它的代码中找到原因。如果没有能力hacking，或者时间紧不想去hacking，最好的办法就是去官方邮件列表和IRC问。如果英文不行就没办法了，只能去一些中文论坛：&#8220;各位大虾帮忙，小弟有一个问题求救！跪求！！在线等！！！&#8221;在线等了好几天也无人问津，或者答非所问。岂不知逛这些论坛的没有大虾，都是菜鸟，大虾们都在IRC上聊得正欢呢。我在做Qt开发时曾经有一个问题，当时在教育网，上国外网不方便，去各大中文论坛问了好几天也没人给出满意的回答，后来花钱连了国外网，去trolltech官方新闻组提问，只等了几分钟就得到了满意的解决办法。这次经历给我留下了深刻印象，从此以后再也没有去中文论坛。</p>
<p>那么，如果现在英文水平很差，又想做程序员，应该怎么学英语呢？我下面说的方法有两个前提，一是你的英文至少达到高中毕业水平，也就是语法基本都学完了，即使用得不熟练也知道有那么回事儿，二是你希望尽快在工作中用上英语，写程序够用就行，而不是有考T考G这样的更高要求。</p>
<p>学习英语有听说读写四个方面的要求，做程序员至少需要读和写非常流畅，如果在外企工作还需要听和说的能力。技术英语和考T考G是不一样的，一是听和说不像读和写那么重要，不必担心自己是&#8220;聋哑英语&#8221;，没关系，丝毫不影响你成为编程高手，二是要求的词汇量要小得多。考T考G都要拿一本单词书背，很少有人会觉得背单词很有意思，至少我是觉得很痛苦，幸运的是看技术书不需要多少词汇量。技术书的描述对象都是局限于一个很窄的领域的，就那么几个单词翻来覆去地用，而且技术书是为了让人看懂的（不像诗是为了让人看不懂的），比较复杂的词在书中都有定义或解释。有些作者喜欢卖弄词汇量，用一些很生僻的单词，也有些作者卖弄一些典故，由于文化背景不同很难理解，不过这些通常都可以无视，不会影响阅读，还是因为技术书是为了让人看懂的。对于学习者来说，阅读能力是最重要的，等你完成了学习，成为一个合格的开发者时，需要写代码注释，需要写文档，需要通过邮件交流，写作的能力才开始重要了。所以应该首先从阅读开始练习英语。</p>
<p>现在就拿起一本英文原版书开始看吧。和学游泳一样，阅读的能力只能通过阅读本身来练习。我的经验是，不必先系统学习了单词和语法再看书，可以在看书时用到什么就补什么。我建议初学者看电子版，因为现在的词典软件都可以鼠标取词，边看边查很方便，很多勤快人喜欢把查过的单词都抄下来，我觉得没有必要，反正查字典很方便，下次再看到了就再查，多查几次总会记住的，抄下来就打断了看书的思路，而且不见得抄下来就能记住。也许是因为我这人比较懒，我用的都是懒办法。很多人不喜欢看电子书，理由是盯着屏幕看书太累，那么盯着屏幕写程序累不累？这种人显然不适合做程序员。语法不熟练怎么办？大多数情况下单词的意思都明白了就不影响阅读。技术书有时候喜欢用长句，其中可能包含各种从句，如果实在读不懂就去查语法书，同样也不需要把这种从句彻底弄明白，只要这一句能看过去就行了，以后多查几遍书，自然就掌握了。另外，技术书是说明文，通常不应该有过去时，看到过去时就需要注意了，很可能是虚拟语气，如果不注意这一点，看到的意思可能和真实的意思正好相反。</p>
<p>应该从哪本书开始看起呢？从你当前最需要学的技术书看起。看书是相当花时间的，如果能一边学英语一边学技术，这时间利用得就很有效率。比如，如果你的C语言已经学得相当好了，不要专门为了学英语去重看一遍原版的K&amp;R。市面上有一些专门的计算机英语教材，我的建议是不要看，浪费时间，nonsense。初学时最好选一本有中文译本的书，有看不懂的地方可以翻中文版来对照，但是不要相信中文的翻译，原因在前面讨论过了。如果你是初学编程，没有任何基础，我可以推荐一本英文很浅显技术也很浅显的书：How To Think Like a Computer Scientist，有Python、Java和C++版本，可自由下载。</p>
<p>要逐渐养成良好的阅读习惯。一是不要每个生单词都去查，有些单词很生僻，查了也记不住，记住了也不会再见到它了，但是前面讲过，都是作者在卖弄词汇量，无视它丝毫不影响阅读，因此要学会猜测单词的意思，能不查就不查，继续贯彻&#8220;懒&#8221;的原则。二是看书不要动口，不念出声也不行，就是不要动口，要努力在大脑中建立从词形到语义的直接映射，如果只能从词形到读音再到语义就太慢了，严重影响阅读速度。三是努力做到每句话都从头到尾只看一遍，不许回头反复看，这一点比较难，必须注意力高度集中，经常在记忆中暂存前面半句的内容和句式才能做到，但是一旦神功练成就会成倍地提高阅读速度。最后一层境界，学会skim，就是略读，很多优秀的作者在组织材料时会给读者一些建议，比如这一段是扩展的高级话题，和主线的相关度较低，可以先skim到后面，注意不是让你skip到后面，这一段还是要读的，但是不必逐字句地读，而是抓主旨，大概讲了个什么概念（有一些下定义的句式），有哪些要点（有数字编号或bullet列表项），适用于哪些场合有哪些注意事项（有caveat、gotcha、noteworthy这种字眼），后面可能还会碰到这个概念，虽然你没有仔细看这是个什么东西，但大体上也知道了，这样就能不影响后面的阅读，这不仅需要高度集中的注意力、熟练的语言能力，而且要有足够的背景知识去猜测性地理解。但是语言能力还是最重要的因素，我和几个同学交流过，他们也能熟练地看英文书，但是需要skim查一个东西时就觉得还是不如中文书查得快。skim的技能在查阅手册时尤其重要，没有人会像看入门书一样把上千页的手册从头到尾看一遍，都是用到哪儿就查哪儿。总之，锻炼各种阅读习惯就为了一个目的：如何在最短的时间内，在保证正确性的前提下，获取尽可能多的知识。程序员的学习时间都是非常宝贵的。</p>
<p>以上本着&#8220;够用就好&#8221;的原则，多次提到用懒办法，但是学技术学英语这两件事不能懒，贵在坚持。要养成良好的阅读习惯也有很多东西需要坚持，其中最根本的是持续高度集中注意力，充分调动记忆能力、推理能力、猜测能力，就像考试做阅读题一样看每一段话。最根本也是最重要的，&#8220;有英文原版就不看中文版&#8221;这个原则一定要坚持。一开始看英文书可能会很慢，但只要一直坚持就会慢慢达到原来看中文书的速度，再坚持下去就会比中文书看得更有效率，因为避免了很多歧义和术语翻译的问题。有人会说，项目紧任务急，看英文资料太慢，这次就先用中文尽快解决工作中的问题吧，等以后有时间了再看英文书学习。可是什么时候才会有时间呢？工作总是一个接一个的，老板怎么会付了工资让你闲着呢？如果你有这样的困难，我的建议是干脆辞职，学好了英文再去工作。你只要想想，你的同行们在外企全英文的环境下工作，英文和技术每天都在突飞猛进，而你还在用效率极其低下的方式学习和工作，你和别人的差距不是越来越大了吗？另一方面，现在的在校学生从小学就开始抓英语，基础都很好，很多高校也逐渐重视引进原版教材，开设很多英文授课的专业课。你再不奋起直追，就不觉得以后的职业道路充满危机吗？</p>
<p>最后说说写作。刚开始练习时不要怕写错，能表达清楚自己的意思即可。我看过很多源代码和文档中的英文，一看就是中国人写的，谓语动词不分单复数，名词复数不加s，处处可见中国式英语，但是丝毫不影响我对这些编程大牛的景仰，因为其中的思想我看懂了，并且我认为很强大。我有一个朋友，中学毕业就出来混的，由于工作的性质总要跟老外打交道，他从来不惧和老外交流，虽然连一个囫囵的句子都说不出来，但总是能用中学学的那点单词让老外明白他的意思，这一点我就非常佩服。总之就是说，不要因为不知道怎么写是对的就不敢动笔写，只要敢交流，并且别人能懂你的意思，就是很有效的交流。而且随着阅读量的增加，自然能写出一手好英文，前面讲过了，创作总是从模仿开始的。不怕出错才能有一个好的开始，才能逐步练习提高，而练习的最终目的当然还是希望写好，不仅字句通顺无语法错误，还能适当修辞。</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:15 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125231.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何成为一个优秀的程序员</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125230.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:14:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125230.html</guid><description><![CDATA[<p>如何成为一个优秀的程序员(being-a-coder)</p>
<p>宋先生</p>
<p>我们的老师每天都要应对报名者和学员提出的很多同样的问题，以下是这类问题的典型：嵌入式行业（或者IT业）有没有前途？我听说编程编到三十五岁就没人要了一定要转行找出路是吗？做驱动开发和做应用开发哪个更有前途？我一开始看什么书都看不懂，怎么才能理出一个学习顺序？诸如此类。这使我迫切地感觉到，应该总结这样一份非具体技术问题的FAQ了。本文仅代表我个人观点，有问题欢迎mailto: kingsunsoong AT gmail DOT com。</p>
<p>在看这份FAQ之前，你必须先读完ESR的＜如何成为一名黑客＞（本文末尾附有中译版），该文所讲过的道理我不再重复。该文用很大的篇幅讲什么是黑客文化，虽然态度和信仰的确是成功的最关键因素，但是你肯定会想，做不做黑客跟我没关系，我只是想学个一技之长，找个好工作而已，对吧？那么肯定更希望获得一些具体的可操作的指导。</p>
<p>1、各种软件技术之间是怎样的关系？</p>
<p>我把软件技术分为三个层次：</p>
<p>问题域：计算机图形学、音视频编码、信息安全、模式识别、信息检索、自然语言分析、人工智能、科学计算等<br>系统集成：C++和Java等面向对象语言、Python等解释型语言、LISP等函数式编程语言、GUI、中间件、编译器与解释器、虚拟机、数据库、网络服务、并行计算、集群、Peer2Peer、系统管理等<br>系统功能：硬件描述语言、计算机体系结构与编程模型、指令集与汇编语言、C语言、内核、文件系统、设备驱动、网络协议、POSIX等</p>
<p>计算机最终是做什么用的呢？最终是通过问题域的各种技术为用户解决问题的，这些技术都包含很高深的算法，然而它们必须在一个平台上运行，它们需要利用平台提供的各种基础设施，比如计算能力、I/O能力和网络互联能力。系统功能和系统集成层就是用来实现这个平台的。系统功能层实现计算、I/O和网络的基本功能，系统集成层对这些基本功能做一些抽象和包装，提供更方便灵活的接口。</p>
<p>2、为什么要学习嵌入式技术？</p>
<p>在亚嵌的学习期间，你将详细了解系统功能层的各部分是如何工作的，也会在面向对象编程、GUI、数据库、网络服务等系统集成层的技术方向进行探索。嵌入式系统可说是麻雀虽小五脏俱全，虽然没有PC和服务器那么复杂，但计算机系统的各种组成一样也不缺。因此，以嵌入式系统作为切入点开始学习软件技术是非常好的选择，避开不必要的复杂性，把握计算机系统最根本的概念和技术要点。打下扎实的基础之后，你的职业发展则完全不必局限于嵌入式领域，即使你日后做PC或服务器开发，在亚嵌所学的知识和技能同样使你终生受益。正如疱丁解牛，心中有全牛，就能游刃有余。</p>
<p>另一方面，你一定见到各大网站都有大量的宣传，说现在嵌入式行业前景空前的好，嵌入式人才紧缺，有几百万职位空缺等等。这些说法也是对的，但我们需要更深入地理解这说明了什么问题。刚才我们说，嵌入式系统也是一个完整的计算机系统，和PC或服务器没有本质的区别，事实上，嵌入式、PC和服务器的界限已经越来越模糊了。以前的嵌入式就是单片机，只能做简单的运算处理，现在的ARM处理器性能比从前的奔腾还强，打游戏、看电影都没问题，谁能说它不是PC呢？另外有些专用的嵌入式系统已经在充当服务器的功能了，而集群技术更是可以使许多廉价的处理器合在一起发挥大型服务器的作用。由于嵌入式越来越多地应用到电器、汽车和各种设施上，无处不在，并且与PC、服务器呈融合的趋势，所以嵌入式行业前景空前的好。</p>
<p>那么，为什么说嵌入式人才紧缺呢？其实，学嵌入式系统就是学计算机系统，本质上并没有什么特殊的只有嵌入式系统才有的技术。说嵌入式人才紧缺，是因为真正懂计算机的人才紧缺。现在很多学校的所谓&#8220;软件学院&#8221;培养的软件人才都是一叶障目不见泰山的：只懂J2EE和.NET，没学过C和汇编；只会调库函数sort()，而对各种排序算法一无所知；设计模式、软件工程讲得头头是道，却不知道好的软件还是要靠牛人靠智商来做的。培养人像蒸包子一样一屉一屉地出，靠软件工程搭一条生产线然后让熟练工人站在生产线上拧螺丝，幻想着这样就能生产出好的软件，那是把软件工程和程序员的作用本末倒置了。现在嵌入式开发对程序员的素质要求更高了，以上这类&#8220;软件人才&#8221;不能胜任了，因此说嵌入式人才紧缺。亚嵌的就业班虽然只有几个月，但培养目标是有完整的计算机系统概念的软件人才，而不是只会拧螺丝的软件工人，这正得益于我们始终坚持做嵌入式培训而不是Java或.NET培训。</p>
<p>3、有人说软件技术变化太快，现在学的东西过两年就要完全淘汰，是吗？</p>
<p>你知道这话是什么人说的吗？必然是已经被淘汰的人说的。比如Delphi、BCB、PB这些开发工具和语言，都曾经很是风光了一阵，但现在已经完全被Java和.NET取代了。那么Java和.NET会不会被取代呢，也许在相当长的时间内还不会，但是我看好Python。</p>
<p>这些被淘汰的程序员有一些共同的特点：只会用鼠标拖拽控件离开IDE就不知道如何工作，学点儿花拳绣腿的功夫就想吃一辈子，对学习新技术不感兴趣，做一天和尚撞一天钟。现在请回头看看FAQ1，在整个软件技术领域，这些变化快的技术其实只占了很小的一块，却成了这些人的全部看家本领，这样的人能不被淘汰吗？</p>
<p>与这些流行的开发工具和语言相反，很多技术和思想是很少变化的。比如，POSIX和SUS标准规定了一套系统函数接口和基本命令的语义，只有实现了这些才可以称作UNIX，因此今天的Linux、Solaris跟20多年前的UNIX在系统功能层上是基本一致的。而指导计算机科学发展的数学理论，甚至是老祖宗们在计算机还没诞生的年代就替我们想好的：布尔代数发表于19世纪，直到一个世纪后发明了计算机和数字电路才有了用武之地；数论在17世纪就出现了，一直都被数学家们当成一套好玩的理论，但只是好玩而已，直到计算机密码学诞生后才发现它的实际用处。</p>
<p>各种流行的开发工具和高级语言虽然变化很快，但是底层的编程语言却非常稳定，各种操作系统的内核都是用C语言写的，以前是这样，以后也不会改变。另一方面，各种编程语言的设计思想也是非常稳定的。其实世界上只有两种编程语言，一种是C，一种是LISP，前者是imperative的，是对计算机模型的抽象，后者是functional的，是对数学函数模型的抽象。面向对象是一种重要的软件工程思想，却算不上一种新的语言模型，应该归在C的一类。属于同一类的各种语言其实都大同小异，一个精通C++的人学习Java需要多长时间？熟悉语法一个星期，熟悉类库三个星期，一个月足矣，以往的经验都可以套到新的编程语言上。然而要想习得深厚的算法功底、逻辑思维和抽象思维修养，能够真正说清楚&#8220;系统&#8221;是什么，如何分析和设计&#8220;系统&#8221;，需要多长时间？恐怕要数十年。</p>
<p>4、C和Java哪种语言更好？</p>
<p>计算机科学与编程语言无关，甚至与计算机本身也没太大关系，它研究的对象并不是计算机，而是人分析问题解决问题的方法论。程序写出来最主要不是为了给计算机执行的，而是为了给人看的，使用编程语言和使用自然语言一样是为了表达和交流，只不过程序还可以顺便给计算机执行而已。</p>
<p>以上这些话并不是我说的，而是一位著名的计算机科学家说的。所以，在编程语言的层面上争论是没有意义的。很多初学者错误地认为掌握了编程语言就等于学会了计算机，一种编程语言都还没有掌握好，更没有上升到方法论的层面，只有这种无知的人才会去争论哪种语言好的问题。掌握编程语言远远不等于学会了计算机，而只是最开始的一步，最简单的一步，到了工作中，用到什么语言就去学什么语言，什么语言过时了就丢掉，编程语言不需要积累因为它太简单了，真正需要积累的是方法论。</p>
<p>很多人喜欢参与到这类争论之中，毫无例外，每个人都在为自己熟练掌握的编程语言辩护，就是&#8220;我会的语言最好，我不会的语言都不好&#8221;，其实这些人真正想说的是&#8220;我会的语言最好是千秋万代，我就不必学新的语言，不必适应新的变化了&#8221;，概括起来说就是一个字，懒。真正的高手都是会很多编程语言的，国外有些做技术咨询的，每年都要学好几门新的编程语言，这样才能应对市场的变化。不断丢掉旧的编程语言学习新的，看起来好像完全是白费力气，没有积累，其实，每种编程语言的设计都有独到之处，体现了每种语言的精髓，在融汇百家之后积累下来的正是方法论。</p>
<p>争论哪种语言能做的事情更多、功能更强是没有意义的。从理论上说，任何一种符合图灵机模型的编程语言，加上适当的I/O扩展都可以做任何事情，用shell脚本也可以写出很像样的游戏来。只不过各种语言的设计目标不同，表达能力不同，做不同的事情所需的代码量不同而已。</p>
<p>另外一种错误认识是：哪种语言的市场最大，开发人员最多，哪种语言就最好。单从这种意义上说，Java的确比C更好，所以往届有学员问我们为什么只教C语言。请你注意，操作系统内核是用C写的，各种底层的应用程序包括Java虚拟机也是用C写的。如果你想学Java，在亚嵌的学习完成后你将有能力分析Java虚拟机的实现，站在计算机系统的高度来学Java才会使你成为真正的Java高手。如果你只想速成，想早点学成一门技术去做拧螺丝的工作，那么亚嵌不适合你。</p>
<p>在FAQ3里说过，世界上有C和LISP两种编程语言，你现在学了C，以后学了C++、Java、.NET等等，也仍然只认识了半个世界。LISP和Haskell构成了另外半个世界，现在很常见的Python和JavaScript等解释型语言也借用了functional programming的思想。如果你只管闷着头写代码，而不去广泛涉猎，那么你将错过很多精彩。</p>
<p>5、我听说编程编到三十五岁就没人要了一定要转行找出路是吗？</p>
<p>这个观点虽然很流行，但根本不值一驳。现在三十五岁转行的那些人，都具有前面所说的那些特征，对学习新技术不感兴趣，对探索计算机的本质不感兴趣，得过且过，下了班就是打游戏、看电视，总之就是懒。如果是开出租、摆摊，勤快人懒人都有饭吃，而IT这一行对懒人是非常无情的，懒人就不该入IT这一行，不从自身找原因，却到处散布这种言论，怪社会不好，打击新人的信心，着实可恨。</p>
<p>另外一种情况，编程编到三十五岁，进入公司的管理层，或者自己创业，这都是很勤快的人，如果他们把这种勤快用在技术上肯定也可以做得更好，所以也无法证明编程编到三十五岁会因为没有出路而转行。</p>
<p>编程不是个体力活，需要高强度的思考和智力投入，分析能力、思考能力都需要时间积累起来，所以并不是越年轻干得越好。相反，我认为三十岁以前写的代码都是垃圾，三十岁以后才能写出像样的程序来。如果希望一辈子走技术的道路而不会被迫转行，就要不断地把自己的工作性质从&#8220;体力活&#8221;变成&#8220;脑力活&#8221;。什么叫&#8220;不断地&#8221;变呢？这里的&#8220;体力活&#8221;并不是指种地、盖房子这种劳动，而是指简单重复地编写代码，这时你会感觉，派给你的工作都能凭以往的经验轻松应付了，但是千万不要满足于现状，就像温水煮青蛙一样，这是危险的处境！要摆脱这种处境就需要学习、思考、提高，让公司派给你更有挑战性的工作，在工作中应用新学到的知识和技术就是&#8220;脑力活&#8221;了，但是用得久了又会变成简单重复的&#8220;体力活&#8221;，这时就需要再学习、再提高，所以叫做&#8220;不断地&#8221;把自己的工作性质从&#8220;体力活&#8221;变成&#8220;脑力活&#8221;。如果有一天你发现，自己长期陷于简单重复的劳动之中，并且业余时间非常少，无法学习提高，这说明公司不会用人，你就该考虑跳糟了。</p>
<p>从另外一个角度来说，如果希望一辈子走技术的道路，就要有自己的核心竞争力，这个核心竞争力决不是凭以往的经验能够做某些工作的能力，而是学习能力、思考能力和解决有挑战性的新问题的潜力。在IT这一行，凭借以往的经验干重复的活是干不长久的，原因很简单，一个问题不会被解决两次，当你发现你的经验能够解决一类问题时，别人早把解决这一类问题的套路编写成framework，新上手的人即使不具备你的这些经验也可以调用framework中的类和函数来解决问题，然后在这个framework的基础上积累新的经验解决新的问题。正因为如此，全世界开发人员的经验才会积累起来，促使软件技术发展得如此迅速。这并不是说经验完全没有用，最关键的，学习和思考也是建立在以往经验的基础之上的。另一方面，现有的framework并不一定是某方面开发经验的完美整合，也需要不断发展，用新的办法重新解决老问题，以Web开发为例，从早期的ASP、PHP到后来的.NET、J2EE，到现在的Ruby on Rails、Django等等，这些framework解决的是同一问题，就是如何快速有效地开发Web应用，这方面的经验被不断重新整合，推陈出新。总结一下，什么才是核心竞争力呢？应该是在经验的基础上学习新技术、解决新问题的能力。</p>
<p>6、做驱动开发还是做应用开发更有前途？</p>
<p>意思就是说，&#8220;你告诉我哪个更有前途，我就好好学哪个，另外一个就不用学了&#8221;。问这种问题的学员往往会同时问另外一些问题：我以后就想做驱动开发，你教我这些应用开发的技术有什么用？C++用得多吗？学了有什么用？我以后不想做GUI，你教我Qt有什么用？</p>
<p>学习最忌讳的就是&#8220;有用的就学，没有用的就不学&#8221;这种功利的态度。两个问题：第一，在你还没学进去、还不了解这种技术时，要如何判断这种技术学了有没有用？只能是根据道听途说，看各种论坛上都怎么说的，岂不知论坛上参与这种讨论的100%都是菜鸟，有的水平还不如你。第二，就算你学的技术没有用上，有什么损失吗？从亚嵌毕业的学员从事各种各样的开发工作，有做驱动的，有做系统编程的，有做GUI的，有做Web开发的，只要确定了做一类工作，就不可能把在亚嵌四个月学的知识都用上，但至少也用得上3/4的知识，假设剩下的1/4你一辈子也没机会用上了，那也就损失你一个月的学习时间而已，相比于你的收获，这算是很大的损失吗？请注意，上面的假设是不成立的，没用上的那1/4也只是暂时没用上而已，程序员要换工作或者换项目是很常见的，任何人都不可能只涉及一类开发工作，只要有扎实的基础、完备的知识体系，任何工作都能轻松上手。</p>
<p>扎实的基础，完备的知识体系，我们在安排就业班课程体系的时候，正是以这两点为依据的。有的课程内容很少有学员在以后工作中会用到，但是缺了这一环就不成为一个完备的知识体系，例如MMU和Cache，那这种课该不该上呢？毫无疑问该上。有的课程培养一种基本的编程思想，例如通过C++来讲面向对象编程，通过Qt来讲面向对象、事件驱动和状态机编程，这些编程思想是程序员必备的基本素质，而C++和Qt可能有些学员以后工作用不到，那这种课该不该上呢？毫无疑问该上。至于还有些人争论说C++不如Java用得多，Qt不如GTK用得多，请翻回去看FAQ4，这种争论是无意义的，有工夫争论谁优谁劣，不如把两种都学了，会更有收获。</p>
<p>回到做驱动开发还是做应用开发更有前途的问题。我只能说，做好了都有前途，做不好都没有前途，只会做一样而完全不懂另一样是最没前途的。不要以为内核开发者就不写应用程序，Linus写了一个源代码管理系统git来维护内核，因为觉得现有的源代码管理系统都不好用。牛人都是这样，需要什么就写什么，才不管是kernel space还是user space。同样，做应用开发如果不懂内核，也没有办法很好地利用内核提供的服务写出性能最优的程序。做内核难，因为调试难，要跟踪大量的并发线程，因为入门难，要写一个hello world都需要学很多知识。做应用也难，回头去看FAQ1，计算机科学从理论到实践大部分都在上面两层做文章。所以不存在哪个更难哪个更有前途的问题，任何关于哪个更难的讨论都是too naive的。</p>
<p>7、我一开始看什么书都看不懂，怎么才能理出一个学习顺序？</p>
<p>以前有个学员在学C语言时说，&#8220;C语言很多地方都很奇怪，都得用内核的知识去解释，可是你又不先教我内核，我没法学C语言。我只好自己看操作系统的书，看内核代码，可是看不懂。&#8221;当然看不懂了，内核代码都是用C写的，如果不学内核就没法学C语言，那不学C语言又怎么可能看懂内核？看来这是一个鸡生蛋还是蛋生鸡的问题。</p>
<p>懒真的是人的本性，就连学习的过程都希望是一条路顺利地走下去，不用动脑就能学会的：身后走过的路都是&#8220;已知&#8221;，每走一步就把眼前新的&#8220;未知&#8221;变成&#8220;已知&#8221;，如此一路走来，把所有的&#8220;未知&#8221;都变成&#8220;已知&#8221;就算学成了。可惜，知识不是一条路，而是一个圈，你从任何一个地方跳进这个圈开始走，身后都是&#8220;未知&#8221;，眼前也都是&#8220;未知&#8221;。有的人就是不能容忍自己的身后是&#8220;未知&#8221;：看一本书，一个新的概念A是用我不了解的概念B、C来解释的，我连B、C都不懂怎么学A？没法学了！</p>
<p>不是人家书写得不好，而是没有任何办法能把一个圈扯成一条直线的。学习的过程本质上就是一个循环往复的过程，唯一的办法就是&#8220;存疑&#8221;：在本子上记着，有B、C这样两个概念是我暂时不理解的，然后就不再去想这回事，而是相信自己已经理解了B、C，基于自己的理解和假设去学习A，由A再去理解X、Y，这样学下去，走完一圈之后再回来，自然就明白当初对B、C的假设正确不正确了，理解了这两个概念，就从本子上划掉，这时需要再走一圈，把原来的一些错误认识纠正过来。所以，任何书都要至少看两遍，第二遍看的时候你会对很多概念有新的认识，因为你看过这个概念后面的章节，在此基础上产生了新的认识。古人早就明白这个道理，所以提出了&#8220;温故而知新&#8221;。</p>
<p>亚嵌的课程体系经过多年教学实践的锤炼，已经很好地理顺了知识之间的关系，使你从最佳的位置跳进这个圈开始学习，所谓&#8220;最佳位置&#8221;是指，在你初学的时候需要容忍的&#8220;未知&#8221;尽可能少，需要做的假设尽可能少，但要想消除所有的&#8220;未知&#8221;是不可能的，例如没有学内核就要学C语言。根据你以往的经验和一些运气因素，你对内核的一些假设可能正确也可能错误，但这并不影响你学C语言，对内核的一些错误假设可能会导致在学C语言的过程中有些误解，但没关系，只要跟着我们的课程体系一步一步走下来，这些误解和错误的假设最终都会纠正过来。</p>
<p>8、有哪些好书可以推荐一下吗？</p>
<p>能问出这个问题的都是聪明的学员。看书学习是入门过程中非常重要的一环，如果用一本烂书入门，浪费时间还是小事，如果被误导了就麻烦了，如果形成的错误认识不能及时纠正，变得根深蒂固了就更麻烦了。所以，看书一定要有&#8220;品牌意识&#8221;，在决定看书学习一门技术时先问问这一领域最权威的书是哪本，这里列举一些Bible级别的书：</p>
<p>The C Programming Language, 2nd Edition<br>C++ Primer, 4th Edition</p>
<p>Structure and Interpretation of Computer Programs, 2nd Edition&nbsp;<br>Introduction to Algorithms, 2nd Edition<br>Compilers: Principles, Techniques, and Tools</p>
<p>Advanced Programming in the UNIX Environment, 2nd Edition<br>TCP/IP Illustrated, Volume 1: The Protocols<br>UNIX Network Programming Volume 1, 3rd Edition: The Sockets Networking API</p>
<p>Understanding the Linux Kernel, 3rd Edition<br>Linux Device Drivers, 3rd Edition</p>
<p>在学习过程中，眼界一定要开阔，不要学到一点东西就沾沾自喜，坐井观天，以为这就是技术的全部。要多和别人交流，多了解别人在看什么书、别人对技术的认识是怎样的。书是看不完的，活到老学到老，对于程序员来说尤其如此。</p>
<p>9、如何处理打游戏和学习的关系？</p>
<p>ESR的文章中也说过，黑客们都有一些特别的业余爱好，并且往往是非理性思维的爱好，大概是需要换换脑子吧。典型的例子是因滑翔机事故去世的Stevens，他写了FAQ8所推荐的Bible当中的三本。爱打游戏的优秀程序员肯定大有人在，有一些还成了优秀的游戏开发人员。但是我认为，要想成为优秀的程序员，必须有两点基本素质，一是对编程非常感兴趣，二是对所有别的事情都不感兴趣，或者都不如对编程感兴趣。有人说，人的一天有24小时，8小时休息，8小时上班，另外的8小时在干什么就决定了你以后有多大发展。一有时间就看书学习，这就是一个程序员应该做的。今天打游戏，明天看电影，后天炒股，那么你就等着三十五岁下岗。如果你不能够认同编程和思考是比其它事情更有吸引力的，那么你不必学编程，集中精力去做最喜欢的事情或许会有更大的成就。</p>
<p>======</p>
<p>附：</p>
<p>如何成为一名黑客</p>
<p>作者：Eric Raymond<br>翻译 waterbird [AKA]<br>校对 kingsunsoong</p>
<p>－－什么是黑客?</p>
<p>Jargon File中对&#8220;黑客&#8221;一词给出了很多定义，大部分定义都涉及高超的编程技术，强烈的解决问题和克服限制的欲望。如果你想知道如何成为一名黑客，那么好，只有两方面是重要的：态度和技术。</p>
<p>长久以来，存在一个专家级程序员和网络高手的共享文化社群，其历史可以追溯到几十年前第一台分时共享的小型机和最早的ARPAnet实验时期。 这个文化的参与者们创造了&#8220;黑客&#8221;这个词。 黑客们建起了Internet。黑客们使Unix操作系统成为今天这个样子。黑客们搭起了Usenet。黑客们让WWW正常运转。如果你是这个文化的一部分，如果你已经为它做了些贡献，而且圈内的其他人也知道你是谁并称你为一个黑客，那么你就是一名黑客。</p>
<p>黑客精神并不仅仅局限于软件黑客文化圈中。有些人同样以黑客态度对待其它事情如电子和音乐－－事实上，你可以在任何较高级别的科学和艺术中发现它。软件黑客们识别出其他领域的同类并把他们也称作黑客－－有人宣称黑客实际上是独立于他们的工作领域的。但在本文中，我们将注意力集中在软件黑客的技术和态度，以及发明了&#8220;黑客&#8221;一词的那个共享文化传统之上。</p>
<p>另外还有一群人，他们大声嚷嚷着自己是黑客，实际上他们却不是。他们是一些蓄意破坏计算机和电话系统的人（多数是青春期的少年）。真正的黑客把这些人叫做 &#8220;骇客&#8221;（cracker），并不屑与之为伍。多数真正的黑客认为骇客们是些不负责任的懒家伙，还没什么大本事。专门以破坏别人安全为目的的行为并不能使你成为一名黑客，正如拿根铁丝能打开汽车并不能使你成为一个汽车工程师。不幸的是，很多记者和作家往往错把&#8220;骇客&#8221;当成黑客；这种做法激怒了真正的黑客。</p>
<p>根本的区别是：黑客们建设，而骇客们破坏。</p>
<p>如果你想成为一名黑客，继续读下去。如果你想做一个骇客，去读 alt.2600 新闻组，并在发现你并不像自己想象的那么聪明的时候去坐5到10次监狱。关于骇客，我只想说这么多。</p>
<p>－－黑客的态度</p>
<p>黑客们解决问题，建设事物，信仰自由和双向的帮助，人人为我, 我为人人。</p>
<p>要想被认为是一名黑客，你的行为必须显示出你已经具备了这种态度。要想做得好像你具备这种态度，你就不得不真的具备这种态度。但是如果你想靠培养黑客态度在黑客文化中得到承认，那就大错特错了。因为成为具备这些特质的这种人对你自己非常重要，有助于你学习，并给你提供源源不断的活力。同所有创造性的艺术一样，成为大师的最有效方法就是模仿大师的精神－－不仅从理智上，更要从情感上进行模仿。</p>
<p>So，如果你想做一名黑客，请重复以下事情直到你相信它们：</p>
<p>1. 这世界充满待解决的迷人问题</p>
<p>做一名黑客有很多乐趣，但却是些要费很多气力方能得到的乐趣。这些努力需要动力。成功的运动员从健壮体魄、挑战自我极限中汲取动力。同样，做黑客，你必须要有从解决问题、磨练技术、锻炼智力中得到基本的热情。如果你还不是这类人又想做黑客，你就要设法成为这样的人。否则你会发现，你的黑客热情会被其他诱惑无情地吞噬掉－－如金钱、性和社会上的虚名。</p>
<p>（同样你必须对你自己的学习能力建立信心－－相信尽管你对某问题所知不多，但如果你一点一点地学习、试探，你最终会掌握并解决它。）</p>
<p>2. 一个问题不应该被解决两次</p>
<p>聪明的头脑是宝贵的、有限的资源。当这个世界还充满其他有待解决的有趣问题之时，它们不应该被浪费在重新发明轮子这些事情上。作为一名黑客，你必须相信其他黑客的思考时间是宝贵的－－因此共享信息、解决问题并发布结果给其他黑客几乎是一种道义，这样其他人就可以去解决新问题而不是重复地对付旧问题。</p>
<p>（你不必认为你一定要把你的发明创造公布出去，但这样做的黑客是赢得大家尊敬最多的人。卖些钱来给自己养家糊口，买房买车买计算机甚至发大财和黑客价值也是相容的，只要你别忘记你还是个黑客。）</p>
<p>3. 无聊和乏味的工作是罪恶</p>
<p>黑客们应该从来不会被愚蠢的重复性劳动所困扰，因为当这种事情发生时就意味着他们没有在做只有他们才能做的事情－－解决新问题。这样的浪费伤害每一个人。因此，无聊和乏味的工作不仅仅是令人不舒服而已，它们是极大的犯罪。要想做得像个黑客，你必须完全相信这点并尽可能多地将乏味的工作自动化，不仅为你自己，也为了其他人（尤其是其他黑客们）。</p>
<p>（对此有一个明显的例外。黑客们有时也做一些重复性的枯燥工作以进行&#8220;脑力休息&#8221;，或是为练熟某个技巧，或是获得一些除此无法获得的经验。但这是他自己的选择－－有脑子的人不应该被迫做无聊的活儿。）</p>
<p>4. 自由就是好</p>
<p>黑客们是天生的反权威主义者。任何能向你发命令的人会迫使你停止解决令你着迷的问题，同时，按照权威的一般思路，他通常会给出一些极其愚昧的理由。因此，不论何时何地，任何权威，只要他压迫你或其他黑客，就要和他斗到底。</p>
<p>（这并非说任何权力都不必要。儿童需要监护，罪犯也要被看管起来。如果服从命令得到某种东西比起用其他方式得到它更节约时间，黑客会同意接受某种形式的权威。但这是一个有限的、特意的交易；权力想要的那种个人服从不是你的给予，而是无条件的服从。）</p>
<p>权力喜爱审查和保密。他们不信任自愿的合作和信息共享－－他们只喜欢由他们控制的合作。因此，要想做得像个黑客，你得对审查、保密以及使用武力或欺骗去压迫人们的做法有一种本能的反感和敌意。</p>
<p>5. 态度不能替代能力</p>
<p>要做一名黑客，你必须培养起这些态度。但只具备这些态度并不能使你成为一名黑客，就像这并不能使你成为一个运动健将和摇滚明星一样。成为一名黑客需要花费智力、实践、奉献和辛苦。</p>
<p>因此，你必须学会不相信态度，并尊重各种各样的能力。黑客们不会为那些故意装模做样的人浪费时间，但他们却非常尊重能力－－尤其是做黑客的能力，不过任何能力总归是好的。具备很少人才能掌握的技术方面的能力尤其为好，而具备那些涉及脑力、技巧和聚精会神的能力为最好。</p>
<p>如果你尊敬能力，你会享受提高自己能力的乐趣－－辛苦的工作和奉献会变成一种高度娱乐而非贱役。要想成为一名黑客，这一点非常重要。</p>
<p>－－基本黑客技术</p>
<p>黑客态度是重要的，但技术更加重要。态度无法替代技术，在你被别的黑客称为黑客之前，有一套基本的技术你必须掌握，这套基本技术随着新技术的出现和老技术的过时也随时间在缓慢改变。例如，过去这套技术包括使用机器码编程，而直到最近才包括了HTML语言。但现在明显包括以下技术：</p>
<p>1. 学习如何编程</p>
<p>这当然是最基本的黑客技术。如果你还不会任何计算机语言，我建议你从Python开始。它设计清晰、文档齐全，对初学者很合适。尽管是一门很好的入门语言，它却不仅仅是个玩具。它非常强大、灵活，也适合做大型项目。</p>
<p>但是记住，如果你只会一门语言，你将不会达到黑客所要求的技术水平，甚至也不能达到一个普通程序员的水平－－你需要学会如何以一个通用的方法思考编程问题，独立于任何语言。要做一名真正的黑客，你需要学会如何在几天内通过一些手册，结合你现在所知，迅速掌握一门新语言。这意味着你应该学会几种不同的语言。</p>
<p>如果要做一些重要的编程，你将不得不学习C语言－－Unix的核心语言。其他对黑客而言比较重要的语言包括Perl和LISP。Perl很实用，值得一学；它被广泛用于活动网页和系统管理，因此即便你从不用Perl写程序，至少也应该能读懂它。LISP 值得学习是因为当你最终掌握了它你会得到丰富的经验；这些经验使你在以后的日子里成为一个更好的程序员，即使你实际上可能很少使用LISP本身。</p>
<p>当然，实际上你最好四种都会（Python，C，Perl，and LISP）。除了是最重要的四种基本语言，它们还代表了四种非常不同的编程方法，每种都会让你受益非浅。</p>
<p>这里我无法完整地教会你如何编程－－这是个复杂的活儿。但我可以告诉你，书本和课程也不能做到。几乎所有最好的黑客都是自学成才的。真正能起作用的就是去亲自读代码和写代码。</p>
<p>学习如何编程就象学习用自然语言写作一样。最好的做法是读一些大师的名著，试着自己写点东西，再读些，再写点，又读些，又写点儿&#8230;&#8230;如此往复，直到你能够运用自己在范文中看到的那种简洁和力量。</p>
<p>过去找到好的代码去读是困难的，因为很少有大型程序的源代码能让新手练手。这种状况已经得到了很大的改善；现在有很多可用的开放源码软件、编程工具和操作系统（全都由黑客写成）。这使我们自然地来到第二个话题&#8230;&#8230;</p>
<p>2. 得到一个开放源码的Unix并学会使用、运行它</p>
<p>我假设你已经拥有了一台个人计算机或者能够使用一台（ 今天的孩子们真幸福 :-) ）。新手们最基本的一步就是得到一份Linux或BSD Unix，安装在个人计算机上，并运行它。</p>
<p>当然，这世界上除了Unix还有其他操作系统。但它们都是以二进制形式发布的－－你无法读到它的源码，更不可能修改它。尝试在DOS或Windows的机器上学习黑客技术，就象是在腿上绑了铁块去学跳舞。</p>
<p>除此之外，Unix还是Internet的操作系统。你可以不知道Unix而学会用Internet，但不懂它你就无法成为一名Internet黑客。因为这个原因，今天的黑客文化在很大程度上是以Unix为中心的。（这一点并不总是真的，一些很早的黑客对此很不高兴，但Unix和Internet之间的共生关系已是如此之强，甚至连微软也无可奈何。)</p>
<p>So，装一个Unix－－我个人喜欢Linux，不过也有其他选择（你也可以在同一台机器上同时运行DOS、Windows和Linux）。学会它。运行它。用它跟Internet对话。读它的代码。试着去修改它。你会得到比微软操作系统上好得多的编程工具（包括C，Lisp，Python，and Perl），你会得到乐趣，并将学到比你想象的更多知识。</p>
<p>关于学习Unix的更多信息，请看 The Loginataka</p>
<p>要得到Linux，请看： 哪里能得到 Linux</p>
<p>3. 学会如何使用WWW和写HTML</p>
<p>大多黑客文化建造的东西都在你看不见的地方发挥着作用，帮助工厂、办公室和大学正常运转，表面上很难看到它对他人的生活的影响。Web是一个大大的例外。即便政客也同意，这个巨大而耀眼的黑客玩具正在改变整个世界。单是这个原因（还有许多其它的），你就需要学习如何掌握Web。</p>
<p>这并不仅仅意味着如何使用浏览器（谁都会），而是要学会如何写HTML－－Web的标记语言。如果你不会编程，写HTML会教你一些有助于学习的思考习惯。因此，先建起自己的主页。</p>
<p>但仅仅建一个主页也不能使你成为一名黑客。Web里充满了各种网页。多数是无意义的零信息量垃圾。</p>
<p>要想有价值，你的网页必须有内容－－必须有趣或对其它黑客有用。这样，我们来到下一个话题&#8230;&#8230;</p>
<p>－－黑客文化中的地位</p>
<p>象大部分不涉及金钱的文化一样，黑客王国的运转靠声誉维护。你设法解决有趣的问题，但它们到底多有趣，你的解法有多好，是要有那些和你具有同样技术水平的人或比你更牛的人去评判的。</p>
<p>相应地，当你在玩黑客游戏时，你知道，你的分数要靠其他黑客对你的技术的评估给出。（这就是为什么只有在其他黑客称你为黑客时，你才算得上是一名黑客）这个事实常会被黑客是一项孤独的工作这一印象所减弱；它也会被另一个黑客文化的禁忌所减弱（此禁忌的效力正在减弱但仍很强大）：拒绝承认自我或外部评估是一个人的动力。</p>
<p>特别地，黑客王国被人类学家们称为一种精英文化。在这里你不是凭借你对别人的统治来建立地位和名望，也不是靠美貌，或拥有其他人想要的东西，而是靠你的奉献。尤其是奉献你的时间、你的才智和你的技术成果。</p>
<p>要获得其他黑客的尊敬，你可以做以下五种事情：</p>
<p>1. 写开放源码的软件</p>
<p>第一个（也是最基本和传统的）是写些被其他黑客认为有趣或有用的程序，并把程序的源代码公布给大家共享。<br>（过去我们称之为&#8220;自由软件-free software&#8221;，但这却使很多不知free的精确含义的人感到不解。现在我们很多人使用&#8220;开放源码-open source&#8221;这个词。）</p>
<p>黑客王国里最受尊敬的大牛们是那些写了大型的、具有广泛用途的软件，并把它们公布出去，使每个人都在使用他的软件的人。</p>
<p>2. 帮助测试并修改开放源码的软件</p>
<p>黑客们也尊敬也那些使用、测试开放源码软件的人。在这个并非完美的世界上，我们不可避免地要花大量软件开发的时间在测试和抓臭虫阶段。这就是为什么任何开放源码的作者稍加思考后都会告诉你好的beta测试员象红宝石一样珍贵（他知道如何清楚描述出错症状，很好地定位错误，能忍受快速发布的软件中的bug，愿意使用一些简单的诊断工具），甚至他们中的一个能判断出哪个测试阶段是漫长的、令人精疲力尽的噩梦，哪个只是一个有益健康的玩意儿。</p>
<p>如果你是个新手，试着找一个感兴趣的正在开发的程序，做一个好的beta测试员。从帮着测试，到帮着抓臭虫，到最后帮着改程序，你会不断进步。以后你写程序时，会有别人来帮你，你就得到了你当初善举的回报。</p>
<p>3. 公布有用的信息</p>
<p>另一件好事是收集整理网页上有用有趣的信息或文档如FAQ。许多主要FAQ的维护者和其他开放源码的作者一样受到大家的尊敬。</p>
<p>4. 帮助维护基础设施的运转</p>
<p>黑客文化是靠自愿者运转的。要使Internet能正常工作，就要有大量枯燥的工作不得不去完成－－管理邮件列表和新闻组、维护大量文档、开发RFC和其它技术标准等等。做这类事情的人会得到很多人的尊敬，因为每个人都知道这些事情是耗时耗力的苦役，不象编码那样好玩。做这些事情需要毅力。</p>
<p>5. 为黑客文化本身服务</p>
<p>最后，你可以为这个文化本身服务（例如象我这样，写一个&#8220;如何成为黑客&#8221;的初级教程 :-) ）（hehe，象我这样把它翻成中文 :-) ） 这并非一定要在你已经在这里呆了很久、精通所有以上四点、获得一定声誉后才能去做。</p>
<p>黑客文化没有领袖。精确地说，它确实有些文化英雄和部落长者和历史学家和发言人。若你在这圈内呆的够长，你或许成为其中之一。</p>
<p>记住：黑客们不相信他们的部落长者的自夸的炫耀，因此很明显地去追求这种名誉是危险的。你必须具备基本的谦虚和优雅。</p>
<p>－－黑客和怪人(Nerd)的联系</p>
<p>同流行的传说相反，做一名黑客并不一定要你是个怪人。然而，很多黑客都是怪人。做一个出世者有助于你集中精力进行更重要的事情，如思考和编程。</p>
<p>因此，很多黑客都愿意接受&#8220;怪人&#8221;这个标签，更有甚者愿意使用&#8220;傻子（geek）&#8221;一词并引以为荣－－这是宣布他们与主流社会不合作的声明。</p>
<p>如果你能集中足够的精力来做好黑客同时还能有正常的生活，这很好。今天做到这一点比我在1970年代是个新手时要容易得多。今天主流文化对技术怪人要友善得多。甚至有更多的人意识到黑客通常更富爱心，是块很好的做恋人和配偶的材料。更多信息见 Girl's Guide to Geek Guys</p>
<p>如果你因为生活上不如意而为做黑客所吸引，那也没什么－－至少你不会分神了。或许以后你会找到自己的另一半。</p>
<p>－－风格的意义</p>
<p>重申一下，做一名黑客，你必须进入黑客精神之中。当你不在计算机边上时，你仍然有很多事情可做。它们并不能替代真正的编程（没有什么能替代编程），但很多黑客都那么做，并感到它们与黑客精神存在一种本质的关联。</p>
<p>阅读科幻小说。参加科幻小说讨论会。（一个很好的寻找黑客的场合）<br>研究禅宗，或练功习武。<br>练就一双精确的耳朵，学会鉴赏特别的音乐。学会玩某种乐器，或唱歌。<br>提高对双关语的鉴赏。<br>学会流畅地用母语写作。（令人惊讶的是，我所知道的所有最棒的黑客，都是很不错的作家）</p>
<p>这些事情，你做得越多，你就越适合做黑客。至于为什么偏偏是这些事情，原因并不很清楚，但它们都涉及到了左-右脑的综合技巧，这似乎是关键所在。（黑客们既需要清晰的逻辑思维，有时也需要强烈的跳出逻辑之外的直觉）</p>
<p>最后，还有一些不要去做的事情。</p>
<p>不要使用愚蠢的、过于哗众取宠的ID<br>不要自称为网络朋克（punk），也不要对那些人浪费时间<br>不要寄出充满拼写和语法错误的email，或张贴错误百出的文章</p>
<p>做以上事情，会大大损害你的声誉。黑客们个个记忆超群－－你将需要数年的时间让他们忘记你的愚蠢。</p>
<p>－－其它资源</p>
<p>Peter Seebach 为那些不知如何同黑客打交道的经理们维护了一个非常精彩的黑客FAQ。</p>
<p>The Loginataka 有许多关于如何正确培养一个Unix黑客的态度的材料。</p>
<p>我也曾写过一篇&#8220;黑客文化简史&#8221;。</p>
<p>我还写过另一篇文章，&#8220;大教堂与集市&#8221;，解释了许多Linux和开放源码文化的运作原理。我还在它的续集&#8220;开拓智域&#8221;一文中有更直接的论述。</p>
<p>－－FAQ（常问问题解答）</p>
<p>问：你会教我如何做黑客吗？</p>
<p>自从第一次发布此页，我每周都会得到一些请求，要我&#8220;教会他如何做黑客&#8221;；遗憾的是，我没有足够的时间和精力来做这个；我自己的编程项目已经占用了我110%的时间。</p>
<p>甚至即便我想教你也不可能，黑客基本上是一项需要你自行修炼的态度和技术。你会发现即使真正的黑客想帮助你，如果你乞求他们填鸭一样教你的话，你不会赢得他们的尊敬。</p>
<p>首先去学习。显示你在尝试，你能靠自己去学习。然后再去向黑客们请教问题。</p>
<p>问：你会帮我&#8220;黑&#8221;掉一个站点吗？或者教我怎么黑它？</p>
<p>No. 任何在读完FAQ后还问此问题人，都是愚不可及的家伙，即使有时间我也不会理睬。任何发给我的此类mail都会被忽略或被痛斥。</p>
<p>问：哪里能找到真正的可以与之交流的黑客？</p>
<p>最佳办法是就近参加一个Unix或Linux的用户组，参加他们的会议。</p>
<p>问：我该先学哪种语言？</p>
<p>HTML，如果你还不会的话。</p>
<p>但它不是一个真正的编程语言。当你准备编程时，我建议你从Python开始。会有很多人向你推荐Perl，它比Python还受欢迎，但却难学一些。</p>
<p>C是非常重要的，但它却是最难学的。不要一开始就尝试学C。</p>
<p>问：开放源码的自由软件不会使程序员饿肚子吗？</p>
<p>这似乎不大可能－－到目前，开放源码软件产业创造了而不是消灭了大量工作机会。</p>
<p>如果写一个程序比不写一个程序只是个纯粹经济上的收益的话，无论它是否免费，只要它被完成，程序员都会从中得到回报。而且，无论软件是由多么的free的方法开发的，对更新的软件应用的需求总是会有的。</p>
<p>问：我从何学起？哪里有免费的Unix?</p>
<p>本页的其它地方指向最常用的免费Unix。要做一名黑客，你需要自立自强，以及自我教育的能力。</p>
<p>现在开始吧&#8230;&#8230;</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:14 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>aboutADA</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125229.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:11:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125229.html</guid><description><![CDATA[<p>1.1. ada：世界上第一位程序员</p>
<p>1.1.1. 不幸的童年</p>
<p>&nbsp;&nbsp;&nbsp; * ada&#183; 奥古斯塔&#183;拜伦(Ada Augusta Byron)1815年12月10日生于英国伦敦。她的父亲是英国著名诗人乔治&#183;拜伦(George Gordon Noel Byron，1788-1824)，母亲是数学家安娜&#183;伊莎贝拉(Anna Isabella Milbanke)。热恋时，拜伦曾戏称他未来的妻子是&#8220;the Princess of Parallelograms&#8221;(平行四边形公主)。看来，兴趣爱好的巨大反差，埋下了不幸的种子。 ada出生后的第一个悲剧就是父母的离异。她父母的婚姻只维持了一年零半个月：1815年1月2日结婚，1816年1月16日离婚，这时ada出生仅37天。 第二个悲剧应该是幼年丧父。我们知道，拜伦于1816年4月25日离开伦敦出国，而且一直没有再回英国。他先在瑞士生活，后来到了意大利，又转至希腊。在那里，他还参加过希腊反对土耳其的独立战争。37岁时病故于希腊的Missolonghi，这时ada才8岁，好在她一直没有见过自己的父亲。 ada的母亲希望女儿成为一名数学家，而不是诗人。尽管也让女儿学习钢琴，那是为提高她的音乐素养，而不是让她从事艺术。不过，ada与母亲在一起的时间并不多。她的童年主要是在祖母呵护下度过的。然而祖母Noel Byron夫人1822年逝世，ada只有7岁。 </p>
<p>1.1.2. 严格的教育</p>
<p>&nbsp;&nbsp;&nbsp; * 既然ada的母亲安娜对数学有兴趣，而且对&#8220;既疯又坏&#8221;(mad and bad)的丈夫深恶痛绝，当然就把希望寄托在女儿身上，渴望并鼓励她发展理性的修养，而抵制父亲浪漫主义色彩的影响。于是，ada接受了近乎严酷的教育。 ada6 岁时，母亲雇了家庭女教师雷蒙特小姐(Miss Lamont)在家里对她进行启蒙教育。安娜强烈相信，数学作为一门智力的学科，必须让它在ada的头脑里牢牢扎根。她认为打好数学基础将为ada提供稳定的、理智的社会地位，而这也是针对&#8220;粗鲁、轻率、自负、搪塞和狂妄的良好解毒剂。&#8221; 安娜希望女儿喜欢数学，然而女儿却爱好地理，她花很少的时间学习数学，以便应付母亲的严格要求。安娜发现女儿敷衍后，既要处罚ada，如关到小黑屋反省，又要斥责并辞退雷蒙特小姐。所以家庭教师的更换比较频繁。而ada不免要说点小谎话以搪塞母亲。例如，写一些无关痛痒的检讨：&#8220;我，ada，没有好好记笔记，明天一定把它做好。&#8221;(I, Ada, have not done the Notes very well, but I&#8216;ll try to do it better tomorrow)。 在ada的家庭教师名单中，有几位数学家参与。其中既有平庸之辈，也有赫赫有名的数学大师。下面我们列举几位： 首先应该谈到的是威廉&#183;弗雷德(William Frend)。他曾经教过安娜，现在又来教ada。这时他年事已高，竟然不相信有负数存在，更谈不上了解数学的最新进展。 其次必须提及的是劳伦斯小姐(Miss Arabella Lawrence)，安娜请她把13岁的ada那偏好争辩的性情改变过来。不过，ada身体不佳，又染上麻疹，休息了好长一段时间。 还有威廉&#183;金(William King)博士，他1829年也忙过ada的数学教育。但这位博士的数学根基不深，他自己也坦白他学习数学是通过阅读而不是作研究(by reading it rather than by doing it)。此后若干年，虽然他还给ada一些帮助，但在1834年他写给ada的信中，直率地承认&#8220;在您的学习中，很快就能把我难倒(you will soon puzzle me in your studies)&#8221;。 </p>
<p>1.1.3. 大师的影响</p>
<p>&nbsp;&nbsp;&nbsp; *</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 除了以上三位平庸之辈，在ada的一生中，受过三位世界级大师的培养。这就是女科学家玛丽&#183;莎沫维勒(Mary Fairfax Greig Somerville，1780-1872)；计算机鼻祖查尔斯&#183;巴贝奇(Charles Babbage，1791-1871)；数理逻辑学家德&#183;摩根(Augustus DeMorgan，1806-1871)。三位大师彼此之间有多年交情，对ada栽 培的默契可能是她短暂一生感受到的最大幸福。 1830 年由于母亲安娜与女科学家玛丽&#183;莎沫维勒的交往，15岁的ada也成为玛丽家的常客。玛丽有两个女儿与ada年龄差不多，ada经常去玛丽家里，度过一个个美好的夜晚。玛丽则带她们一起去听音乐会，还经常去伦敦大学听地理学讲座。后来，她们成立了女学者联谊会，组织参观博物馆，拜访科学家等活动。正是这些活动使ada认识了巴贝奇。玛丽把ada当作自己的女儿一样，给她数学书籍、指导她的学习、为她设计思考问题。师徒之间无所不谈，她们畅谈数学问题以及其他自然科学问题，特别是讨论巴贝奇及其制造的计算机器。此外，她们也谈论音乐、绘画等艺术，以及争取妇女受教育权与选举权等政治问题。 1833 年6月5日，在一次聚会上ada认识了查尔斯&#183;巴贝奇。两周后她和母亲一起拜访了巴贝奇在伦敦的工作室，在那里她看到差分机的演示以及对分析机的设计。 ada立刻为这些机器着迷，这给巴贝奇留下深刻的印象。当时花季妙龄的ada出落得已令人入神，据索菲亚&#183;弗雷德(她是威廉&#183;弗雷德的女儿、德&#183;摩根的妻子)回忆，&#8220;像她这样年轻，能理解机器的工作，而且看到这一发明的无比美妙(young as she was, understood its working, and saw the great beauty of the invention)&#8221;。此后她就与分析机结上了不解之缘。 1841年，在巴贝奇的建议下，德&#183;摩根专门对ada的数学研究进行了高级的个别指导。 玛丽&#183;莎沫维勒的魅力 女科学家玛丽&#183;莎沫维勒写过许多著作，这些著作对创立电磁理论的麦克斯威都有很大影响。不过我国读者对她可能比较陌生，有必要在此多谈一下。 玛丽1780年12月26日生于苏格兰，1872年11月29日卒于意大利那不勒斯，享年92岁。她的父亲William George Fairfax是英国海军官员，曾担任过舰队副司令。他有两儿两女，儿子都受过良好的教育，女儿却按照当时的风气，没有受教育的必要。玛丽只上过一年学，就离开那所既没有给她快乐、又没有给她知识的牢笼。回家后，她开始读所有能够找到的书，而且自修拉丁文、练习钢琴与绘画。 1804 年玛丽与俄国海军军官Samuel Greig结婚。这位丈夫既缺乏科学知识，又对钻研学问毫无兴趣。三年后他病死，玛丽只好带着孩子回到苏格兰。在朋友的鼓励下，她开始钻研数学和自然科学。在她的朋友圈中，有皇家军事学院数学教授William Wallace，爱丁堡大学自然哲学教授John Playfair。这段时间，她还读了牛顿和拉普拉斯的数学与天文学著作。 1812 年玛丽又与William Somerville结婚。这位丈夫是医院督察，他积极支持玛丽对自然科学，如对植物学、地质学的研究。他们又结识了学术界的许多朋友，如爱丁堡数学教授 John Leslie(1766-1832)，物理学家David Brewster(他发明了万花筒，kaleidoscope)。1816年，她丈夫调到伦敦工作，而且参与皇家学会的工作。于是全家搬到伦敦居住，从而结识了更多学界名流。如经常去看望巴贝奇，他正在制造机械式计算机。还有George Airy(1801-1892，英国数学家，研究过观察误差的理论)，John Herschel(1792-1871，英国天文学家，研究过哈雷彗星。他是巴贝奇在剑桥的同窗好友)，William Herschel(John Herschel的父亲，英国天文学家，发现了天王星)，George Peacock(1791-1858，英国数学家，研究代数的逻辑处理，他也是巴贝奇在剑桥的同窗好友)。同时，在伦敦也有机会与到访的外国著名科学家见面，如法国大数学家拉普拉斯(Pierre-Simon Laplace，1749-1827)，泊松(Simon Poisson，1781-1840)，Louis Poinsot(1777-1859)，Emile Mathieu(1835-1890)等。 1827 年根据知识传播学会的请求，玛丽着手翻译拉普拉斯的《天体力学》(Laplace: The Mechanism of the Heavens)。事实上，玛丽不仅是单纯的翻译，她还详细解释了当时英国数学家不熟悉的概念与方法。这本书于1831年问世，大获成功，赞美之词不绝于耳。 1834 年她出版了《物理科学的联系》(The connection of the physical sciences)，其中讨论了对天王星进行干扰的假想行星。该书导致英国天文学家亚当斯(John Couch Adams，1819-1892)的研究，并最终发现了海王星。 ada和她的母亲安娜成为玛丽&#183;莎沫维勒家庭的朋友。玛丽热情地鼓励、帮助ada研究数学，这使她真正喜欢上数学。同时，ada还从玛丽身上感染到对整个自然科学的热爱。 玛丽的荣誉像潮水般涌来，她成为皇家天文学会会员。英国首相每年给予她津贴。1838年玛丽丈夫的健康恶化，他们移居意大利。玛丽在意大利度过大半生，又写了许多著作。1848年出版的《物理地理学》(Physical geography)是她最成功的著作之一，直到20世纪初，英国许多大学还用它作教科书。 玛丽强烈呼吁妇女应该有受教育的权利、有选举和被选举的权利。1879年牛津大学用她的名字命名了玛丽&#183;莎沫维勒学院，就是对她这种精神的肯定和褒奖。 </p>
<p>1.1.4. 德&#183;摩根的严格要求</p>
<p>&nbsp;&nbsp;&nbsp; * 学过数学的人，应该都知道数学归纳法，它是德&#183;摩根首先提出的；学过计算机的人，大都知道有个德&#183;摩根定理，它对逻辑运算十分重要。德&#183;摩根是在ada结婚并生孩子后，按照巴贝奇的建议，对她进行了严格的数理逻辑的辅导。因为她在为巴贝奇的分析机编制程序时需要这方面的知识。 德&#183; 摩根1806年6月27日出生于印度马德拉斯邦的Madura，当时他的父亲John De Morgan是英国陆军上校，正在印度服役。他是家中第五个孩子，出生不久右眼失明。七个月就随家返回英国。在学校，德&#183;摩根因为残疾并无什么擅长，从来不和其他男孩一起运动，相反却经常成为同学作弄的牺牲品。他10岁时父亲去世。1823年德&#183;摩根16岁时进入剑桥三一学院，在那里他遇到老师 Peacock 和Whewell，他们成为终生的好友。在那里他取得了学士学位，但要取得硕士学位就必须进行神学考试，对此他很反感。然而没有硕士学位，他在剑桥就很难获得奖学金。1826年他返回伦敦家中。1827年他在新建立的伦敦学院大学(University College London)申请数学系主任的职位，虽然当时他尚无数学专著，但还是得到应聘。1828年德&#183;摩根成为该大学第一位数学教授，在就职演讲中他谈了对数学的研究。1830年德&#183;摩根发表了数学著作《算术原理》(Elements of arithmetic)，这部著作曾经多次再版。1831年他原则上辞去系主任的职务，但1836年再次担任系主任，一直到1866年。 1838 年德&#183;摩根引入并定义了数学归纳法(mathematical Induction)，围绕这个题目他写过许多文章。德&#183;摩根还出版过有关微积分的著作(The Differential and Integral Calculus)。1849年出版了有关三角学的著作(Trigonometry and double algebra)，他对复数给出几何学的解释。他认识到代数的纯符号本质，注意到多种代数的存在，而不限于普通代数。他引入了德&#183;摩根定理，对数理逻辑进行了大胆的改革，这大概是德&#183;摩根最伟大的贡献。德&#183;摩根1871年3月18日在英国伦敦去世。 1835 年7月8日ada&#183;拜伦与威廉&#183;金(William King)结婚，当然这个人并不是前面提到过的数学教师Dr. William King。1838年ada的丈夫威廉&#183;金被封为拉夫拉斯伯爵(Earl of Lovelace)，因此ada也获得拉夫拉斯伯爵夫人(Countess of Lovelace)的称号。他们结婚后，有了三个孩子：大儿子叫了外祖父的名字Byron Noel，1836年5月12日出生；女儿叫了外祖母的名字，Anne Isabella，1837年9月22日出生；小儿子仍然留有外祖父的痕迹Ralph Gordon，1839年7月2日出生。这应该算是ada短暂一生的第二个幸福了。 </p>
<p>1.1.5. 创新的注释</p>
<p>&nbsp;&nbsp;&nbsp; * 如上所述，ada18岁时听了巴贝奇关于设计差分机的讲演，从而对巴贝奇的机器产生了浓厚的兴趣。后来又对全新的分析机特别地着迷。从1836年1月18日开始，ada给巴贝奇写信，探讨分析机的各种问题。一直到生命结束，她给巴贝奇写了大量的信件。这是研究ada编程思想的重要资料。 但最有代表性的文献，却是ada翻译一本书时所加的注释。那是1842年10月，法国工程师Luigi Federico Menabrea(1809-1896)发表了一篇关于巴贝奇分析机的理论和性能的文章。ada把它由法文译成英文，而且在其中加入她的许多注释。 关于这个工作，巴贝奇有一段精彩的回忆：&#8220;在日内瓦综合书目上出现Menabrea关于这个机器的实录后，有一天晚上拉夫拉斯伯爵夫人告诉我，她已经把这篇东西由法文翻译成英文。我问她，为什么不就这个题目自己写一篇原创性的论文，你是能够非常亲切地介绍这个机器的。拉夫拉斯伯爵夫人答复道：她的思想还没有形成。然后我建议她在Menabrea的文章上加些注释。这个建议立即被她采纳了。&#8221;&#8220;我们一起讨论了必须引入的各种插图，我建议了几个，但是否选择完全由她决定。还有一些不同问题的代数工作，例如有关伯努利数的计算，为了减少她的麻烦，我给出一些计算。结果她寄来一份修订，纠正了我在计算中的一个重大错误。&#8221;&#8220;拉夫拉斯伯爵夫人的注释比原文的长度扩展了三倍。她全力以赴，对于和这个题目有关的很困难、很抽象的问题都作了解释。把这两个资料一起提供给读者，就能理解机器的工作原理，并通过完整的示范，了解如何使用分析机去执行分析开发的任务。&#8221; </p>
<p>1.1.6. 最早的编程设想</p>
<p>&nbsp;&nbsp;&nbsp; * 在这些注释中，ada描述了分析机如何进行编程，最早给出计算机程序设计的许多想法。下面给出几个注释的内容，以飨读者： </p>
<p>&nbsp;&nbsp;&nbsp; * 注释A：说明设计中的&#8220;分析机&#8221;与已存在的&#8220;差分机&#8221;的区别。她的讨论预言了通用计算机(general purpose computer)的作用，这超出了巴贝奇的想象。她表明分析机可以接受各种各样的穿孔卡：&#8220;控制卡&#8221;、&#8220;数据卡&#8221;、&#8220;操作卡&#8221;，它们如何使计算机自动地对输入的数据完成正确的操作。换句话说，计算机能&#8220;分析数据&#8221;。她还提议数字和其他符号如字母都可以&#8220;编码&#8221;成数字数据，机器可以处理它们，并给出写成的数据。她甚至要为分析机能产生音乐而奋斗。<br>&nbsp;&nbsp;&nbsp; * 注释B：ada讨论了分析机的记忆能力，她把记忆装置称为&#8220;仓库&#8221;。她提出了存储位置或地址的想法。她指出插入&#8220;注解或备忘&#8221;的可能性，计算机不会执行它们，但可以让人们简明地了解程序将走向何方。<br>&nbsp;&nbsp;&nbsp; * 注释C：ada引入&#8220;返回&#8221;(backing)的概念，制作一个操作卡返回到某个位置，而它就是将要工作的下一个数据卡。她解释这样做的原因是：&#8220;在解决一个问题的方案中，能确保某个特殊的穿孔卡或者一组卡能成功地使用若干次&#8221;(to secure the possibility of bringing any particular card or set of cards into use any number of times successively in the solution of one problem)。这个思想我们今天称为&#8220;循环&#8221;(looping)，ada和巴贝奇早就讨论过这个问题。<br>&nbsp;&nbsp;&nbsp; * 注释D：ada解释了如何使用操作卡、返回、仓库以及各种控制卡，以写成一个指令序列，去完成一个特定的操作集合。<br>&nbsp;&nbsp;&nbsp; * 注释E：她解释了机器如何拥有三角函数和其他函数。这就在计算机内部引入了内建函数(built-in function)的思想。<br>&nbsp;&nbsp;&nbsp; * 注释F：她给出利用返回处理(循环)，仅通过重复几个操作，来解一个任意大小的线性方程组。她详细写出解十元线性方程组的程序。她还推测通过简单的循环过程生成素数表的可能性。<br>&nbsp;&nbsp;&nbsp; * 注释G：ada警告读者，如果输入&#8220;不真实&#8221;的信息，那么计算机就不能做任何事情。今天我们把这称为&#8220;输入垃圾，输出垃圾&#8221;(Garbage in, Garbage out)。她写到：&#8220;分析机不能自命不凡，无论什么问题都能解决。它只能完成我们告诉它如何做的事情。它能遵循分析，但没有能力预期任何分析关系或事实。&#8221;(The Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it to perform. It can follow analysis; but it has no power of anticipating any analytical relations or truths)。在注释G中，ada还写了一个程序，让分析机生成伯努利数的表。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o 由上可知，ada获得世界上第一位计算机程序员的荣誉是当之无愧的。 </p>
<p>1.1.7. 辞世与纪念</p>
<p>&nbsp;&nbsp;&nbsp; * 由于受子宫癌和赌博债务的折磨，有的文献还说她曾经吸毒，这位悲剧性的人物ada过早地于1852年11月27日去世，生命周期与她的父亲拜伦同样短促，都只有37岁。最后与她的父亲一起，埋葬在诺丁汉郡Hucknall镇拜伦家族的墓地。 ada 的形象完美地体现了一位程序员应该具备的科学家与艺术家的双重气质。一方面，程序员需要在数学概念、形式理论、符号表示等基础上工作，应该有科学家的素养。另一方面，对于一个高效的、可靠的、便于维护的软件系统，又必须刻画它的细节，并把它组成一个和谐的整体，所以程序员又应该有艺术家的气质。 1975 年1月，美国国防部(DoD)提出统一高级语言的必要性，并为此在国际范围内招标。1979年5月，从四种入围语言中最后选定了一种。现在，该给它起个什么名字呢？总不能把它称为DoD-1语言吧。国防部通过与英国拉夫拉斯伯爵的继承人莱顿(Lytton)伯爵协商，决定把新语言命名为Ada语言，以此纪念ada在130年前对程序设计的历史贡献。于是，ada的名字、生平与事迹才广为世人传诵。<br></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:11 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在飞漫工作过的某大牛的自传+征友帖</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125228.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:10:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125228.html</guid><description><![CDATA[<p>发信人: bierdaci (发现上帝), 信区: PieLove<br>标&nbsp; 题: 这次来推销自己(附照)<br>发信站: 水木社区 (Sun Jul 16 12:57:31 2006), 站内<br>&nbsp;<br>因为俺只有职高文凭,大多女孩看不上俺,可俺想通了,要想得到属于自己的那份儿缘份,俺应该主动的推销自己而不是随缘.</p>
<p>下面是俺的介绍.</p>
<p>小时候俺3岁才会说话, 可是姥姥说俺非常可爱, 白天她绣花的时候俺不吵也不闹，一整天俺都会用小手把手电筒的盖子扭下来再扭上去。</p>
<p>上小学的时候俺经常坐红板凳（红板凳的意思就是倒数最后几名），可是老师还是说俺非常聪明，因为俺二年级的时候能用三年级的方法解出数学题。</p>
<p>四年级的时候俺用了一晚上的时间看懂了一个扑克牌魔术，就是现在大街上那些算命先生让你摆上几次牌就可以算出你的出生年月日的那种。</p>
<p>五年级的时候老师布置了一个剪纸盒的作业，俺是班上唯一个剪出来的，可是老师说什么也不相信那是俺剪的，因为她也没剪出来。</p>
<p>初中的时候同学们都学会了看武侠小说，俺却迷上物理化学这些书,但俺不是听老师在课堂上讲，俺把这些书当成小说看了，虽然英语、语文、政治这些课俺印像中好像没有及过格,可俺的物理化学还是能考出不错的成绩.</p>
<p>一节语文课老师要同学们用一节课的时间把一篇古文背下来，俺一个星期也没背下来。可是初二那年俺用每天放学回家写作业的时间把俺爸的一本厚厚的16K的内燃机原理的书给看完了。并且俺还通过了科教杂志看懂了原子弹氢弹的原理，那段时间上课的时候俺的脑子里除了梦游之外，就是原子弹氢弹了。</p>
<p>基于以上原因，导致了俺的学习成绩一直不怎么样，不过俺在班里至少俺能排到30名左右（每班大概40多个学生吧）。所以俺只考上了一所大多是混混的职高学校。</p>
<p>职高俺学习的是无线电专业，俺还是非常喜欢这门专业的，俺总是提前一两个月把老师需要一个学期才能讲完的课给提前学完了。并且在一次基部数学考试的时候俺考了个第7，要知道这是在俺没有认真听老讲一节课的情况下考出来的，考试的时候俺发现卷子上的题大多是集合这些东东，这些东东脑子一想就出来了，压根就不用学所以俺能考出来不错的成绩，呵呵。</p>
<p>无线电一门课最后的实验是让学生组装一个七管超外差收音机，老师提前一个月就把电子部件发到学生的手里，俺接着就把收音机给装上了，而且接收效果还不错。一个月过后老师在课堂上正式组织学生组装收音机，一个星期过后，印象中记得只有一位同学的收音机是响的，当然除我之外了。</p>
<p>学习电工技术基础的时候，俺发现那本书里有好多公式都不知道是怎么来的，于是俺就买了本电子技术应用数学的书，自己把微积分和什么级数分解的数学给看了，并且自己可以用微分方程导出电工技术基础那本书里的公式了。</p>
<p>除了该学的书之外俺还自学了大学里才有的逻辑数字电路的课程，并且看着很上瘾。</p>
<p>职高毕业后俺当兵了，当兵的第三年俺怀着激动的心情回家探亲了。回家真好啊，不仅可以看到自己的爸妈和小时候一起玩大的伙伴，俺还玩上了俺表哥的步步高学习机。学习机真好玩，可以用一张软盘玩以前游戏机卡带里才有的好多游戏，而且还可以练习打字，还有DOS，DOS里还有BASIC语言，俺还用BASIC写了一个简单的计算加减乘除的小程序，俺上隐了。</p>
<p>10天后俺依依不舍得离开了爸妈，又回到了部队，10天的时间让俺找到了人生的方向，俺回部队的第一件事就是去买本真正的BASIC的书，俺用陪队里紧张的生活挤出的一点时间，两个星期把BASIC看完了，BASIC的书里说学BASIC是为C打基础，俺又花了一个月的时间看完了C，两个月的时间又看完了C++。</p>
<p>半年后俺终于永远的告别俺亲爱的战友回家了。</p>
<p>俺让俺爸给俺买了一台真正的电脑，俺开始和电脑恋爱了。</p>
<p>俺和爱人一起走过了风风雨雨，俺用C编过了许多小程序，俺学习计算机原理，了解了俺的爱人，在DOS下学习了汇编，并且用汇编重新实现了DOS下的一些命令。俺还用汇编在DOS下实现了真彩看图等等。</p>
<p>这些都是小儿科，所以俺花了一年的时间读了linux内核源码，实现了自己的共享内存，虚拟文件系统，结合BSD源码看了TCP/IP详解第二卷，再后来俺工作了。<br>俺工作还算努力，下面是俺从上一家公司辞职后的应聘简历。</p>
<p>/****************************************************************************/<br>/****************************************************************************/</p>
<p>工作经历：<br>曾就职于北京飞漫软件公司，职务是软件开发工程师, 从事嵌入式软件开发工作。</p>
<p>学历：<br>本人只是职高文凭没有上过大学, 所有计算机相关的知识都是通过兴趣自学而来。</p>
<p>所学习知识：<br>工作之前用一年左右时间看过linux2.4内核源码，结合tcp/ip详解第二卷看过BSD网络部分代码，并且通过文件映射机制实现了自己的共享内存，以及类似proc的虚拟文件系统。源码发在chinaunix.net论坛上了，网址如下:</p>
<p>虚拟文件系统<br><a href="http://bbs.chinaunix.net/forum/viewtopic.php?t=332958">http://bbs.chinaunix.net/forum/viewtopic.php?t=332958</a><br>用文件映射机制实现的共享内存<br><a href="http://bbs.chinaunix.net/forum/viewtopic.php?t=336137">http://bbs.chinaunix.net/forum/viewtopic.php?t=336137</a></p>
<p>所掌握开发工具：</p>
<p><br>工作语言主要用c。</p>
<p>早期学习过c++，不过只是在学习期间写了一个字符串操作的类，没有用c++做过其它工作。</p>
<p>曾花了一年时间研究过汇编语言，早期用汇编实现了dos下debug的大部分功能，用汇编写过dos下看真彩图片的程序，看linux内核源码时研究过AT&amp;T的语法。<br>在飞漫的工作和开发环境均在linux下, 由于工作的需要掌握了bash脚本语言的一些技巧, 并为公司写过产品的打包脚本（带菜单选择功能）。</p>
<p>&nbsp;</p>
<p>工作常用工具：</p>
<p>GCC、GDB、CVS、AUTOMAKE、AUTOCONF、vim等（以上工具均在linux环境下使用）。</p>
<p>&nbsp;</p>
<p>开发项目：</p>
<p><br>用minigui写过类似win下acdsee的看图程序。</p>
<p>为手持设备写过看图程序, mp3播放器(支持m3u列表)。</p>
<p>做过带有软键盘功能的输入法。</p>
<p>为应用开发组写过一些通用控件(被加进应用开发的通用库)。</p>
<p>以上项目除了mp3播放器是和某公司合作开发, 其它都是个人独立完成。</p>
<p>&nbsp;</p>
<p>工作需要读过minigui的大部分代码，也做过minigui的维护和开发工作，主要工作如下：</p>
<p>minigui各种bug的修复工作。</p>
<p>minigui输入引擎的编写。</p>
<p>minigiu图形引擎的编写（包括为某公司实现了带gfx硬件加速功能的图形引擎）。</p>
<p>gtk的移植工作（用一周时间读过gtk主要代码，并深刻深解gtk用c实现面像对像的编程技巧)。</p>
<p>其它还做过3d方面的工作（本人对3d很感兴趣，研究过一些3d部分的代码，主要是纹理贴图部分，当然很大部分是汇编代码），还有为minigui增加一些gdi功能的接口等。<br>另外为minigui做过各种开发板的移植工作，公司做过浏览器项目，虽然本人没有参与，但是对浏览器略有熟悉, 依本人能力从事浏览器开发绝没问题(可以轻松分析一些小型的开源浏览器的源码, 比如：dillo, links)。</p>
<p>&nbsp;</p>
<p>除了以上工作之外，在飞漫期间工作的需要写过的一些小程序这里就不多说了，另外早期学习编程期间也写过类似DOS下edit的编辑器和打飞机等小程序，只是都随着老硬盘一起消失了。</p>
<p><br>其它：</p>
<p><br>因为兴趣曾花了一周时间读过quake2的源码，分析了quake2的代码架构，可以毫不夸张的说本人可以在短时间内完全吃透quake2代码，并进行开发工作。<br>对网络编程方面兴趣还行，因为读过BSD网络部分源码，并且对socket接口有着深刻的理解（另外读linux内核源码过程序中，socket接口部分当然不会错过），所以如果从事网络开发决不会有什么问题。</p>
<p>内核编程因为以前读过大量内核源码并写过上面提到的两个内核程序，熟悉内核编程的兄弟对本人的能力应该不会有什么怀疑，相信如果重新拾起，短时间内上手也不会有什么问题。</p>
<p>说明：<br>本人英语很差如果对员工英语有要求的公司就不要考虑本人了。 另外如果面试需要看本人作品,本人可以提供一些参与项目的演示程序并附源码以供参考本人代码风格。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本人虽有欠缺，但从不怀疑自己的能力！</p>
<p>/*****************************************************************************/<br>/*****************************************************************************/</p>
<p><br>现在的公司看了俺的简历后和俺谈了不到半个小时就让俺来了，俺在这里已经半载有余, 虽然工作还算稳定, 可俺还有激情还有梦想，俺心中也一直期待着有个爱人和俺一起用激情去追求俺心中的梦想&#8230;&#8230;</p>
<p><br>俺的邮箱:bierdaci@163.com<br>QQ:121386734<br>MSN:bierdaci@hotmail.com</p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125228.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:10 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125228.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个老程序员的心里话</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125227.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:09:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125227.html</guid><description><![CDATA[<p>&nbsp;<br>风雨十年：一个老程序员的心里话</p>
<p>今年是我大学毕业满10年的日子，也是我投身IT技术的第10年。一直想能对过去的经历做些回顾与反思，以更好地走向未来，但总没有笔。刚好csdn举办"讲述程序员的故事"征文，这件事成了一个引子，我终于趁着暑期有时间，敲了一天键盘，便有了这篇人生自述。</p>
<p>　　10年对于一个人来说是比较长的一个阶段，10年之后，同期大学毕业的同学情况差异之大，让人叹息命运之变幻莫测。</p>
<p>　　我在此记录下了我的生活足迹，由于时间较长，有些事记得不太清了，但我是尽量真实的记录当时的情况，有兴趣看我这篇长文的人请把我看成是一个在你我中间一块生活，一起喜怒哀乐，一起努力的平凡人，相信我们之间会有很多跨越时空的情感交流。</p>
<p>　　好，前面就说到此吧。<br>序<br>　　从1994到2003，不知不觉之间，我已在计算机技术的世界里沉浸了十年。有位哲人说过：如果一个人能用十年的时间专心致志地研究一门学问，或学习一门手艺，或从事一个职业，他一定能成为这个领域的专家。我天资平庸，但哲人的话是有道理的。我用十年的时间先成为了一名合格的程序员，再成为了一个重点大学计算机专业的大学教师。十年磨一剑，蓦然回首，年华如水，青春如歌！</p>
<p>　　我父母都是城市中的平民，家境仅能解决温饱，我想我可能代表了中国社会的一大类青年，我的经历与体会可能会对许多条件并不好的年青程序员有所启示：只要努力，天资差与环境不好都是可以克服的。因为我不是牛人，所以我不能教你如何成为牛人，我只是尽量真实地写下我的经历与感触，写一个平凡人的努力过程。我为我是一个软件开发者而自豪，为我从事的教书育人的事业而自豪，并愿意为中国落后的软件业尽己菲薄之力，为此，我人生无悔！</p>
<p>　　我想分为三部分讲述我的人生经历：上篇：学习人生：主要是我学习计算机技术的经历与感触，时间跨度大约是从1994~1996年；中篇：艰难人生：主要是我流迹社会，失业一年半，三次考研的痛苦经历；时间跨度大约是从1997~1999年；下篇：实践人生：主要是我的技术实践经历：在公司打工，开发软件，毕业求职与教书生涯，时间跨度是1999~2003。</p>
<p>一 计算机是什么东西？</p>
<p>　　我是七十年代初在中国出生的那一代人，等我们长大开始读书时，文革已经结束，相对于我们的兄长，从我们这一代开始，以后出生的孩子都能受到较为正规的教育，这是我们幸运的地方。</p>
<p>　　也就是我们上小学的时候，七十年代末，以美国为技术资源中心的计算机技术开始在全球范围内迅猛发展，这时正是世界性的"软件危机"极为严重的时候，计算机技术各方面都在酝酿着新的突破，而此时比尔盖茨也正在准备构建他的明日微软帝国。</p>
<p>　　七十年代末与八十年代初，在我们的生活中，看不到一点计算机技术的影子，刚刚改革开放的中国，99%以上的人连"计算机"这个词恐怕都没听说过，中国游离于信息技术大门之外。</p>
<p>　　在"振兴中华"成为时代主旋律的八十年代，整个中国真的是呈现出一种勃勃的生机，这是一个民族在经历百年耻辱，十年挫折之后的再起步，象一些老歌--- 《金梭与银梭》，《在希望的田野上》等，就是当时青年的一种积极向上的精神风貌的体现。这种环境下，对于正在成长中的我们这一批少年，在潜意识中有极为深刻的影响，我们认为爱国与振兴中华是天经地义的事，并且成为了努力学习的主要动力（呵呵，现在的一些"愤青"---愤怒青年一定会说我们当时被"洗脑" 了，也许真的是吧，这种信念确实会给人以极大的动力，我看不出有什么不好，至少我不会有现在这一批青年所经历的非常迷茫的感觉）。</p>
<p>　　1986年我考上了桂林市重点高中---桂林中学，在那儿，我第一次见到了电脑。</p>
<p>1．中学的计算机兴趣班</p>
<p>　　1987年我在桂林中学读高二，桂中是重点高中，条件较好，当时学校课外安排了两个班：无线电班和计算机班，我上的是计算机班，当时用的微机是 apple ii，用basic编程。记得当时中国也开发了一种同档次的计算机，叫做中华学习机，要在中小学中大力推广，但apple ii后来发展成了著名的mac系列，并拥有了自己的操作系统，而中国的中华学习机，还有后来的小霸王等电脑学习机，都无疾而终了。</p>
<p>　　 学校安排上机，有同学不知从哪找来了一些有趣的basic程序，什么"比翼双飞"，"飞机空战"等等，都是一些非常简单的小游戏，当时他抄了厚厚一本，一上机就敲一些到计算机中运行，而我是一点也不会，只有站在一边看的份。</p>
<p>　　那时会计算机的人很少，老师讲的我又不明白，考试的时候也不知道怎么过的。呵呵，后来我读研打工时，在网上看到洛阳一个高中生用vb编的一个"电子书童"程序，水平之高，我当时真是没法比。</p>
<p>　　1989年六四动乱，广西高考名额一下减了7000多，竞争激烈，十几人里才能取一个，由于压力过大，我高考前夕失眠，第二天考语文，120分的试卷当时只考了68分，因而与重点高校无缘。本想复读，但父母怕我来年考不上，一定要让我读广西大学，我万分不情愿地顺从了父母的意愿，去了我不喜欢的学校，读了我不喜欢的专业。男怕入错行，我在大学毕业后重新开始学我喜欢的专业，足足用了五六年的时间才转过来，真正成为一名合格的劳动者，走了一条长长的弯路，所以，父母的决定对缺乏经验与决断力的孩子而言，真的是非常重要。</p>
<p>　　现在想起来，父母当时没错，我也没错，那都是在时代与社会环境下的自然选择。</p>
<p>2．失败的四年本科与工作初期</p>
<p>　　作为六四之后第一批进入大学的本科生，我们学习了两年的"六四风波的反思"，四年里我是个老老实实的好学生，但四年除了玩命过了六级，什么也没学会。</p>
<p>　　记得大学第一节课就是basic语言，呵呵，也根本没学会，但我看来注定了要与basic难解难分了，后面的实践篇中我会讲我用basic开发的事。</p>
<p>　　大学里我学的专业是电力系统自动化，学过微机原理与fortran，上机时还用的是古老的主机加终端方式的计算机（叫做l/f机），我上机时真是一塌糊涂，因为这门课我从没学进去，也从没学懂过。有同学很厉害的，会用电脑打印出许多漂亮的图片（当然现在看起来很粗糙，针式打印机打的），我那时就称这些人为牛人了。</p>
<p>　　呵呵，我如果没记错的话，做超级解霸的梁肇新也是广西大学的，但不是我们系，记得我当时就已听到有关几个计算机牛人的事，估计其中就有他吧，如果我记错了，梁肇新先生请指正。在本科期间，我对电脑是神秘多于兴趣。这也说明我成为不了牛人与大师，天资有限。后来，我发现一个普遍的规律，如果能成为计算机方面的牛人与大师，请去翻翻他们的传记，绝大多数在本科期间就已展露出他们的才华。而我们现在的中国高校，这么多的本科生都在为考试、考研、考托、考g而奔忙，这种填鸭式的应试教育体制，扼杀了太多学生的创造性。结果是一个学生在大学里读得越认真，就受到的错误影响越大，我是用好几年的时间反思才得出这个结论的。所以，中国高校十几年数以几十万计的本科生中出不了可编写linux内核的杰出人才，一点也不奇怪。</p>
<p>　　1993年我毕业了，用我总结的一段话来说，是：一张白纸进来，一脑浆糊出去。</p>
<p>　　毕业后我分到了一所号称是"中港合资"的生产蓄电池的公司，呵呵，刚刚工作的日子让我这个单纯的大学生被生活好好的教训了一下，许多无法以前想象的社会现象让我目瞪口呆，年轻气盛导致穿了小鞋，还只能忍气吞声。吃了生活的一个闷棍，我才明白，我除了有张文凭，什么都不是！</p>
<p>　　当时，我感到最郁闷的是我在公司里什么都不会做，一个电机烧坏了我楞不知如何下手修，公司老总办公室里的灯不亮了，学电的大学生我花了半小时楞不知原因在哪！我学的东西没一样能用的。开始我还以为是因为我在学校里没认真学，但后来问了很多同学，90%以上的都有同感，我现在终于认识到这不单是我个人的错，我自认为在学校中是很努力的，从未偷懒过，但如果90%以上的学生所学不能服务社会，这种教育体制一定存在问题。</p>
<p>　　 四年里，我的电脑知识与技能=0！</p>
<p>　　现在看起来，我浪费了宝贵的四年光阴！但当时的环境与认识水平，也只能如此了，没有当初的浪费，怎有后来的珍惜？这是人生必经的一个阶段。<br>二 漫长的理论学习时期<br>1．从电脑培训班开始<br>　　我毕业后的第一个工作单位是一个非常差的企业，我在那儿见识了几乎所有中国差的企业的弊端：人浮于事，拉帮结派，暗箭伤人，损公肥私&#8230;&#8230;。可以想见，在这样的企业工作，人是多么的颓废。我在无聊之中过了大半年的时间。1994年4月的一天我去桂林新华书店买书，看到桂林电子工业学院老师举办一个电脑培训班，教打字、排版、常用dos命令等电脑使用基础，反正也没事，不如上个班学点东西吧。不曾想就是这样一个培训班，却根本影响了我的人生之路。</p>
<p>　　我清楚地记得当我第一次上机时，连电脑开关在哪都找不到，老师拿着一张五寸软盘，插入软驱，打开电源，在一阵"吱吱"的声音之后，屏幕上开始有英文字符出现，然后，教师在键盘上敲入几个键，电脑沉默一会，突然在屏幕上跳出一个小人，出现一行字：快快乐乐学电脑，还传出了音乐。我当时真是惊呆了，电脑怎么还会唱歌？现在想起来，那个软件其实是台湾松岗系列教学软件，而我一个大学本科生，在毕业之后居然对电脑无知到这个地步，我真不知道是该哭还是该笑&#8230;&#8230;！</p>
<p>　　俗语说："一见钟情"。我是相信这种事的，因为就是这第一次上机，让我产生了搜索这一神秘世界的强烈兴趣，从此就再难与电脑分开了。</p>
<p>　　当时，有两位电子学院的老师：尹老师和陈老师。他们给我们讲dos，讲汉字输入，讲他们如何修改天汇汉字系统使它能在一张软盘上运行，讲打字排版&#8230;&#8230;，一个月之后，我不满足，又学了一个月。</p>
<p>　　在上培训班的时间里，我向老师要来了桂林电子工业学院计算机应用专业本科四年的培养方案，回到家中，列出了所有本科课程，再根据书上的先修课程介绍，绘制了一张巨大的课程树，从树根开始，决定一本本地啃，从头开始学计算机技术。计算机科学的学习有较强的系列性，想一步到位很可能会学不懂，但循序渐进又无法跟上技术发展的速度，这是一个非常突出的问题。我现在想起来，觉得好的学习方式是：学理论打基础，在实践中逐步理解理论，多思多悟，就会发现层出不穷的新技术中有许多一直不变的东西存在。把握这种东西，就可以以不变应万变。这种"不变"的东西是什么？就是软件开发的基本原理与理论，基本思想与方法！在我对面向对象理论进行了较深入的学习与把握之后，我学.net只用了三个月的时间就可以独立设计一个完整的全面向对象软件架构，并且用vb.net与c#混合语言把它给做出来了。对于j2ee，我同样有这种自信，也用三个月的时间，一定可以开发与设计基于j2ee平台的软件，因为它们背后的计算机技术基础是一致的，完全可以触类旁通。</p>
<p>　　尹老师和陈老师可能不知道，他们开的一个也许是为了经济效益的培训班，最后居然培育出了一个计算机硕士！所以，作为一名教师，其责任真的是非常重大的，可能会影响学生的一辈子，我感激他们！</p>
<p>2．漫长而艰辛的学习之路<br>　　我当时每月只有一百多元的工资收入，把大半收入都用到买书上去了。电子工业学院门旁的那个科技书店，以及桂林科技书店，成为了我最常去"站读"的地方。我买了数据结构、操作系统、微机原理、ibmpc汇编程序设计，c程序设计&#8230;&#8230;这些教材，就按照预定的计划开始学了。</p>
<p>　　我当时也说不清楚为什么要学这些东西，决不象现在学生学什么东西都有很强的功利性：学英语为了出国，学电脑为了好找工作。当时根本就没有想过今后如何如何，就是对计算机技术本身的兴趣推动我去学习的。</p>
<p>　　当时计算机书还不象现在这样扑天盖地，我几乎看完了我能弄到的每一本计算机书，看了一些书，就特别想有地方上机，能练一练。但我一个月一百多元收入，一台电脑怎么也得几千元，要五六年不吃不喝才攒够钱，父母都是普通百姓，家境仅能温饱，拥有一台电脑真成了我最大的美梦。</p>
<p>　　为了有机会上机，我这个脸皮极薄的人也会什么都顾不上了，带着一盒保存着各种软件的软盘，厚着脸皮到处找可能的地方上机。在这个时候，电子工业学院又一次帮了我，他们的机房管理得并不严，我就冒充是他们的学生去买机票上机。后来去得多了，那儿的老师都熟悉我这张脸了，但搞笑的是，居然没一人知道我是哪个班的！</p>
<p>　　当时电子学院用的局域网操作系统是novell，我在那儿学会了使用许多最基础的软件，现在仍然如数家珍：cpav，turbo pascal 5.5，ucdos，tway（天慧汉字系统），masm，turboc2.0，还有鼎鼎大名的norton公司的磁盘医生ndd，pctools， borland公司的最牛的常驻内存的软件sidekick，&#8230;&#8230;</p>
<p>　　在电子学院机房，我还玩了经典游戏：决战中国海，冒险岛，战斧，三国&#8230;&#8230;。<br>　　学校网络里软件很多，但其中所染的病毒也五花八门。我记忆深刻的是第一次遇见dir ii病毒时，那种感觉决不是害怕，而是欣喜，呵呵，我见到病毒什么样的啦！由于dos内核是开放的，所以那时开发一个病毒程序相对容易，大家又都喜欢用软盘拷来拷去，结果毒源泛滥，病毒的猖獗使得杀毒软件有了巨大的市场，现在大名鼎鼎的江民kv系列，就是在那时开始占据中国防毒市场，同时还有部的kill 等竞争对手，瑞星，金山等都是后来者。</p>
<p>　　那时，我白天在公司上班，就盼望着晚上的上机，每次上机我都有详细的计划，因为机时宝贵，所以份外珍惜。</p>
<p>　　为了上机时能多敲些程序，我一咬牙，向妈妈要了两百元，买了一台电脑学习机，回家苦练英文指法与五笔输入，每天对着家里那台14寸的电视机屏幕，敲击至少键盘2小时以上。练得手腕酸疼，但终于达到了运指如飞盲打的程度。学五笔，背字根"目具上止卜虎皮，&#8230;&#8230;"，足足花了一星期才背下来，并把每个字根与手指对应起来，后来看报纸都不自觉地将汉字给拆得七零八落，再也看不到是一个完整的汉字啦，当时好象练到了每分钟可打60多个字，后来我居然靠着这弹指神功当了一阵打字员混饭吃！呵呵，练好了指法，一上机，确实效率倍增，两小时能敲入并运行调试的程序比以前花三小时敲的还多。</p>
<p>　　94，95年是我条件最差，但学习劲头最足的两年时期，外在环境的恶劣，却反而造就了我高昂的学习兴趣，那种痴迷，我想热恋也不过如此了，可能因为我太喜欢计算机了，所以爱情与我无缘，这也是无可奈何的事。 ：-（</p>
<p>　　我特别想说说我学习计算机技术书籍的感觉。如果你真的喜欢一门学科，那在啃一本本专业书籍时，就决不会觉得它厚，而只嫌它不够厚。对比我在本科学《电磁学》、《自控原理》之类枯燥无味的课程的感觉，那种课程脱离实际，从纸上到纸上，学生根本无法真正掌握。而学计算机课程《c程序设计》、《数据结构》、《操作系统》等课程的感觉真是天壤之别，原来本科学的东西是越学越糊涂，而我在学习计算机科学的过程中自己就感到慢慢地将所有的知识串成了一条线，脑中有一棵知识树在成长，这不是形容词，是真的感受。我学dos命令，学了很久不明其道理，是在一天早上醒来时灵感一来，突然理解了文件与树的概念，于是，就真正把握了dos命令的内涵，开始对copy，format，move&#8230;&#8230;这些英文单词游刃有余了。有段时间，我甚至能感觉得到我的知识在与日俱增！如果那时能有相对稳定的客观条件：比如有一台随时可用的计算机，那我一定学得更快更好。不过话又说回来，条件好的时候，人又容易为安逸所累，进步反而慢。还是那句老话：业精于勤荒于嬉。现在的许多学生就是物质条件太好了，反而不懂得珍惜。</p>
<p>　　后来我看了金庸先生的《射雕英雄传》，郭靖成了我最喜欢的人物，不是因为他有黄蓉的爱，而是他那种坚忍不拔的毅力，以平凡之资终登绝顶！金庸先生真是妙笔！此小说我不知看了多少遍。</p>
<p>　　最值得怀念的就是我学编程的岁月，我学c语言用的是谭浩强的《c程序设计》，当时谭老师在电视上同时讲c程序设计，我每天必看，把书上的每道例题与习题全部做了一遍，并写出了每次上机的安排。我每次都先在纸上把程序写出来，然后上机时争分夺秒地在计算机中调试运行，并根据运行结果思索为什么会运行不正常，在哪儿出错了，如何更正，上机完后还有总结。就是这样，我把谭浩强的《c程序设计》一书中的所有例题和习题全部敲到计算机中运行了一遍，打下了c语言扎实的基础。谭老师的书和课，的确影响了中国多少名程序员！</p>
<p>　　我学了c语言之后，就开始想做点东西了。我用了一个月的时间，用c编写了一个中文下拉菜单的程序，从ucdos中的字库中提取汉字点阵，然后在图形模式下"画"出汉字来，使程序能脱离汉字系统的支持直接显示汉字。整个程序应该有一两千行代码吧，全部是自己寻找资料，一行行敲进去的。后来，我又编了读取wps文件的程序（当时dos下打字排版是求伯君的wps一统天下，word 当时在哪里我不知道呢！《电脑报》介绍过的求伯君，鲍岳桥等作为第一代中国杰出程序员代表，是我当时崇拜的偶像），我还编写了一个绘制简单图形的小程序，从编程调试的过程中，我得到了程序员基本功的最初训练。我当初没人教，遇见各种困难只能自己解决，为找出一个bug，晚上睡觉做梦都在编程，而现在的一些大学生，程序通不过，马上问老师，甚至有学生把程序发到我的邮箱，叫我帮他调程序！有的计算机专业学生，学了四年，四年敲过的代码总数恐怕不超过2千行！</p>
<p>　　的确，我当时的水平很低，现在的本科生比我当时强太多了，但至少有一点他们中的许多人不如我，他们不如我勤奋，也不具备我的毅力，我觉得这是现在这批八十年代出生的大学生最缺的东西。</p>
<p>　　我用一年半的时间基本自学完了计算机专业的主干课程（除了《编译原理》，我实在看不懂），1995年我参加了初级程序员考试，结果上下午成绩加起来有 90多分。但96，97我两次参加程序员级考试，虽然我已有不少编程实践，但仍然通不过，现在看起来，这反映出一个事实：我理论基础实在太差，天资也并不高。直到现在，我仍然痛感我的计算机基础理论不好，使我难以成为一名计算机科学家，而只能成为一名不错的软件工程师。</p>
<p>　　从95年开始，我的生活开始加速下降，我所在的公司由于被一群我现在称之为驻虫与流氓的人给弄得不成样子，每月连100多元的工资都无法保证，我只得离开了公司，把档案往人才交流中心一放，就开始了我四年的社会漂浮生活&#8230;&#8230;。</p>
<p>　　在这四年中，我干了不下四五种工作：当过推销员，当过打字员，当过培训老师，修过电脑，从事售后服务，甚至摆过地摊&#8230;&#8230;，一切的一切，很简单，就为了能有口饭吃。生活是严厉的，不讲情面的，我唯一的爱好就是闲下来就拿起我的计算机书来看。当时我大哥说过：你学这些东西有什么用？能靠它当饭吃？不要惊奇这种观点，在我们那信息闭塞的地方，当时有谁能想到计算机技术会有如此大的改变社会的能力？我之所以不懈学习，纯粹是为了解脱精神上的困惑，在技术的海洋中忘却生活的烦恼。我后来有一句名言：何以解忧，唯有电脑。别人当作一句笑话，但却是我当时的真实写照。</p>
<p>　　万事都有两面，事情坏到极处，就会向好转化。又是一个很偶然的事，改变了我的人生轨迹。<br>　　1996年，我的一个高中同学杨考上了湖南大学计算机系研究生，请客吃酸菜鱼火锅。在大家喝酒时，杨提了一个问题：请大家说出一个自己最想达到的目标。我的桂中同学大多数都是上的全国重点大学，此时毕业三年了，大家都对社会对生活有了自己的认识，于是就有了各种不同的答案，我当时的回答是："我希望能有一天开发出一个好的软件，让许许多多的人都能用上它。"，这个目标我到现在都没达到。但当时大家是给我热烈地鼓励。杨饭后跟我说，你既然那么喜欢计算机，为什么不考研呢？对啊，我为什么不去试试呢？当天晚上我躺在床上，没怎么想就确定了要考研的想法。当时却怎么也没想到，考研之路成了另一条折磨人的不归路。对我一生的影响深远&#8230;&#8230;</p>
<p>　　这就是我早期的学习生涯，深深地体现出中国的时代特色。这段时间我的生活是困苦的，心情是苦闷的，但学习热情却是无以伦比的。现在我一个人拥有两台奔四电脑，随时可上互联网获取丰富的资源，反而在技术上难有寸进了。越来越觉得古语说得好：</p>
<p>　　艰难困苦，玉汝于成！<br>　　这是生活的真理！</p>
<p>第一次考研的失败<br>艰难人生<br>　　在上篇中我说到决定考研，从此迈上了一条对我来说到目前为止最难走的路，是一个人生的炼狱。</p>
<p>　　决定考研之后，我就去买了相关资料，取出尘封己久差点当废纸卖掉的大学课本，又开始了学生生涯。<br>考哪儿的大学？是我首先要考虑的问题。</p>
<p>　　当时还有另一个高中同学也准备考研，也是计算机，他报了广西师范大学的研究生。</p>
<p>　　父母则劝我也考广西师大或我的母校广西大学的研究生，说那好考得多，也可以托人走走关系。但我这人很犟，我在西大混了4年，什么也没学到，我还去那儿干什么？我想起了高中时的梦想，决定直接考北京的高校。当然，北大清华是想都不敢想的，社会上工作几年，我毕竟清楚自己几斤几两，但北京几十所高校，难道一所也不行？我不能再听父母的话了，我要走自己的路，自己的命运自己负责，于是我坚持要考北京的学校。</p>
<p>　　知道这件事的朋友都对我表示惊奇，工作了4年，学校里的知识都忘得差不多了，还想直接考北京的学校，难度之大，相信不少人都认为我成功的希望很渺茫。事实证明，他们的看法是对的，但不全对，因为世上本就没有绝对的事情。</p>
<p>　　这时，我还在一家私营公司里打工，于是，白天上班，晚上就挑灯夜战，每晚不到12点不休息。<br>经过半年的复习，我参加了1997年元月的全国研究生入学考试，成绩出来，我专业课没问题，但数学才得了44分，毫无疑问，名落孙山。</p>
<p>　　这是一个打击，但对我并没有太大的影响。<br>　　这时，我小时住在隔壁的阿姨来到桂林，她说她女儿（我小时的玩伴，也姓杨）去年就考研了，但也同样没过，她原先在北京服装学院读本科，毕业分回广西柳州一个国企里，工作一年之后考研，没考上之后，她就把工作给辞了，专门跑到北京同学家中复习一年。97年考研她成功了。</p>
<p>　　得知这个消息，对我是个很大的鼓励。我想，她一个比我小的女孩都能成功，我为什么不行？我想办法与她联系上了，在后来的考研岁月中，她给了我极大的帮助，帮我买资料，帮我问成绩，写信给我，鼓励我坚持下去&#8230;&#8230;</p>
<p>　　受人滴水之恩，当涌泉以报。<br>　　世上的人大都只会"锦上添花"，但只有"雪中送炭"才是最宝贵的。她就是我的"雪中送炭"人，她研究生毕业后嫁到青岛去了，断了音讯，但我心中永远记住了她的帮助。我决定，从今往后，如果我有能力帮助别人的，就一定要帮助人。这世界充满了太多不好的东西，我应该努力往其中添一点好的东西，哪怕显得多么微不足道</p>
<p>"土包子"的北京之行</p>
<p>　　中关村印象.刚好，1997年我大哥在北京中央美院进修美术，我决定明年继续考研，于是辞去了在一家私营电脑公司的工作，于6月底来到了北京，住进了大哥的宿舍中。6月到7月，我在北航学计算机维修，7月参加陈文灯老师的考研班，一直呆到9月中旬，我才回到桂林。</p>
<p>　　中央美院当时搬到了北京西北角的西八间房，我和大哥一起住在学生宿舍中。认识了不少来自全国各地的搞美术的大哥同学，我很喜欢和他们这些搞艺术的人在一起，看他们色彩斑斓，形象逼真的油画，和设计精巧的一些手工作品，是一种美的体验。与我们工科人相比，他们是另一种思维方式。</p>
<p>　　7月份，大哥要回桂林了。在回桂林前，我帮他和他的同学们去中关村电子市场一口气买了三台电脑，当时最红火的电子市场是中关村电子市场，就是现在北大太平洋电脑商场所在的地方。那时电子市场里熙熙攘攘，如此的红火，是我在广西所从未见到的也从未想到的。在大街上随处可见抱着台打印机，拎着个扫描仪的人，把电脑配件当成白菜一样卖，这就是我对闻名全国的"中关村电子一条街"的最初印象。</p>
<p>　　我到了中关村，见到了那些我非常熟悉的公司：北大方正，金山wps，江民科技&#8230;&#8230;，见到了北京书堆积如山的书店，感叹这里真是一个知识的海洋，觉得亲身感受到了中国it业的脉博。</p>
<p>　　大哥回去后，我一个人留在北京，骑着辆破自行车逛了中国最有名的大学：北大和清华，北大风景如画的未名湖上处处荷叶飘香，清华平平展展的草坪展示一种平实坦荡的心胸。一墙之隔，校园内外，就是两种不同气氛，无名无状，却让我这个二十多岁没出过广西的土包子感受深刻。</p>
<p>"疯狂"的考研班<br>　　我参加的是暑期文登学校的考研班。中央财经大学那栋破败不堪的学四楼里，住满了来自全国各地的学生，和我住在一起的，一个是湖北的，一个是东北的，一个四川的，为了同一个目的，大家从天南地北聚到了一起，我当时真感到了一种"家"的感觉，原来这世界有这么多同路人，我不过是中国十几万考生中一名不起眼的"老生"罢了，但还不算是"范进"。</p>
<p>　　考研班的日子是"疯狂学习"的日子。</p>
<p>　　记得我们需要到北方交通大学的大礼堂去听人大老师索爱群的政治课，一千多人的大礼堂被挤得满满的，连过道上都坐了人。在老师的讲台前堆满了各式各样的录音机，足有一百多部，来自全国各地的莘荠学子拿着一瓶矿泉水，在北京最热的7月，挥汗如雨地在记笔记！这段日子，我用去了7个笔记本！这种气氛，我以前在广西是从未见过的。我本来以为我已经够努力勤奋的了，到北京考研班一看，根本就不算什么。</p>
<p>　　陈文灯老师教的数学给我留下了最为深刻的印象，他上课不用讲稿，所有的例题全都记在他的脑里，随手就可以写出来，丝毫不差，还总结出一整套解题方法，让我大开眼界。我是见着了，原来一个人对本职工作可以精熟到这种地步！后面我还会谈到另一位老教授对职业可贵可敬的敬业精神，不敬业，就不是一个合格的劳动者。</p>
<p>　　我一直呆到身上没钱了才离开北京。这三个月花完了我工作几年的所有积蓄，却对我的影响是巨大的，中国什么地方最适合学习？最适合学计算机？在我看来，只有北京！</p>
<p>　　我下定决心，一定要到北京来学习计算机技术。</p>
<p>差点跳楼的致命打击</p>
<p>　　9月中旬我回到了桂林，开始准备第二年的考研。</p>
<p>　　但生活是不讲情面的，我想当然地认为经过了北京名师的指点，我去年就是数学没过，今年应该没问题了，但事实并不如此。</p>
<p>　　1998年的数学试题，突然有了一次很大的变动，这次数学考试特别难，题量还特别大，全国及格率仅7%，平均分为30多分。我现在将这次考试试题称之为 "变态"的题目，出题的那帮呆在空调房里的教授们挖空心思出出来的题目，可把我给害惨了。我自认为心理素质够强了，但因为这场考试关系命运太大，在考场上我的手都是抖的，几乎晕倒，一道道的大题空在那儿做不出来，都象是在不断地讥笑我不自量力，又象是一张张面无血色的血盆大口，一张口就把我给吞下去了，连骨头渣子都不吐。</p>
<p>　　考完数学，我就知道我今年没戏了。原来一个考场有几十位考生，考完数学之后只剩下不到三分之一的人。我坚持着把后面的课目考完。在那种明知无望但仅凭一种信念支撑着要坚持到底的时刻，我真不知道当时是怎么挨完后面的专业课考试的。</p>
<p>　　3月，成绩下来了，我的数学成绩让我差点去跳漓江了---13分！我从小学习勤奋努力，从没拿过这么低的分数。真是破纪录！当时真是灰心到了极点，准备放弃考研，到广东打工，找个地方浪迹天涯，自生自灭去，实在没脸在家呆了。</p>
<p>　　这个时候，我大哥劝住了我：你都考了两次了，我看来你就是数学差，其它课你都过线了，专业课还都是80多分，为什么不继续努力？集中精力把数学搞好就可以了。你现在放弃，就前功尽弃！</p>
<p>　　我这人笨，从小学学东西就慢，这是一大弱点。但上天是公平的，他给你一个弱点的同时，也一定提供了让你克服这个弱点的方法。</p>
<p>　　我笨，但我好强，但我勤奋，但我坚持，人一之，我十之，笨鸟先飞，古已有之，古人可以做到，我为什么就不能做到？这事就这么收场？我不服，不甘心！于是，我下定决心再拼一次。</p>
<p>　　我现在没有工作，也不想再去找工作了，住在家中，就与堆积如山的书干上了。在关键时刻，年迈的父母无条件地支持了我，他们默默地承担了一切，让我有饭吃，给我一个安静的环境，让我去实现我的梦想。</p>
<p>　　我深深感受到父母的爱是多么的无条件！我一个二十五六的大小伙子，呆在家中吃闲饭，还让父母为我的前途操心，那种心灵的煎熬，现在想起来都有种想哭的感觉。男儿有泪不轻弹，只因未到伤心处！在此，我要深情地对我的父母说：儿子绝不会忘记你们的恩情，唯望两老保重身体，一定要等到看到我过上好日子的时光。</p>
<p>反思，走自己的路！<br>　　考研失败，我反复想，为什么我听了陈文灯传授的做题秘诀，反而考得更差了？别人为什么用陈老师的方法考出了好成绩？看来，每个人的具体情况不同，不存在可以让人暴长功力的"武林密笈"，从这件事中我学到，决不能迷信权威，迷信理论。后来我对许多现象与潮流如cmm热，设计模式，软件工程等理论都持有不同的看法，认为把西方的东西原样照搬是行不通的，不经过自己的大脑独立地思索，不经过实践的检验，不要相信任何东西！</p>
<p>　　从98年到99年1月，我断绝了一切外部联系，把自己关在了家中。我父母的工作单位是一个疗养院，全院加起来也就一两百号人，后山就是一个森林公园，空气清新，林木繁茂，大院里还有一个小山（是真山，不是假山，桂林的这样象竹笋似的山多了），山上修了个亭子，平时少有人来，真是一个闭门修行的好地方。</p>
<p>　　我每天到小山亭子上去学英语，背政治，桂林四季长青，我周围是青山绿竹，微风一过，树叶沙沙做响，我就在这里学起了战国时的苏秦。从春学到夏，再从夏学到冬，苦苦学了一年，这一年里，使我的心志得到了极大的锻炼，困难更加难以击倒我。后来我境况转好，生活中很多人觉得受不了的挫折，在我看来都不过是小菜一碟罢了。</p>
<p>　　桂林多奇山，秀美苍翠，风景四季如画。每当我学累的时候，总是看着这美丽的风景，赞叹祖国江山如画，感触人生之渺小，命运之无常！</p>
<p>　　大哥从北京带回了一台电脑，奔腾166，4.2g的昆腾大脚硬盘，当时不错的配置，把它送给了我用。我渴望了多久的东西终于到手了，我终于可以无限制地使用计算机了！我把电脑放在床前，伴它入眠。</p>
<p>　　我有时半夜会突然惊醒，想着目前的困境，浑身会出一身冷汗。电脑沉默不语，在一旁安静地陪着我。我看着那蓝幽幽的屏幕，心情非常复杂。</p>
<p>　　有了电脑也难过，我得抑制住自己强烈地想探索软件技术的欲望，强制自己把主要精力放在考研上。</p>
<p>　　整个考研英语大纲有5300多个单词，为了背下它们，我用vb编了一个背单词的小软件，每次可以分别显示中文或英文，并可以区分哪些单词没记住，下次复习。所有单词我都是用键盘一个字母一个字母地敲入的，每天早上一起床，先对着电脑背它半个小时。到考研结束，我一看，数据库中已有了两千多个单词。<br>这一年以来，我真是玩命，什么考研理论我都不信了，我就托人买了国家教委出的几本考试分析，就专门研究考研试题，我要找出适合我自己的方法来。</p>
<p>　　考研数学考试分析500多页的书，被我翻来覆去地将历年考试试题做了三遍。党的十五大报告我至少背了一百多遍，我称之为背"语录"，真称得上是"倒背如流"，考政治时我把大段大段的十五大报告文字抄上去，居然得了75分！</p>
<p>　　发黄的本科高等数学和概率与数理统计，以及蓝色封皮的线性代数课本，都被我翻得不成样子。我觉得我就是基础太差，在这种基础之上，讲什么做题方法都是空中楼阁，一定要抓住"三基"（基本知识，基本方法与基本原理）。但我不得不悲哀地指出，我这些努力并未使我的数学能力有所提高，数学并不是这样学的，数学思维绝不是这样培养的。怎样学数学？得去问华罗庚与陈景润等数学大师！我至今数学还是不行。也希望有这方面经验的人能够教我，让我补上数学这一课。</p>
<p>　　生活总算给了我一次微笑。1999年考研，我数学得了60分，终于迈进了大学的门槛，可以打起背包上北京了。</p>
<p>　　我这人比较笨，不善于找到达到目标的最佳路线，但凭着牛劲钻下去，硬给我钻出了一条路。这条路能走通还带有一些侥幸的色彩，大家想必比我聪明得多，一定能找到更好的路，用更经济更聪明的办法达到目的，这是一种大智慧，是我所没有的。</p>
<p>　　这段经历对我个人的思想品质的影响是深远的。为什么这么说？为了考政治，我深入全面地了解了中国近现代史，我去盗版碟市场买了不少存有历史资料的光盘，从多方面来看中国历史，凡电视中有关历史的节目，我必看。我在这里尤其想说的是一个巨著——《毛泽东选集》！经历过文革的每个家庭，哪家没有毛选？我家就有不止一套。毛泽东选集一到四卷，发黄的书被我在这段时间通读了一遍。其中的经典文章更是被我看了一遍又一遍，赶上金庸的《射雕英雄传》了。越读越觉得毛泽东之人真是数百年才出一人的大牛人，他的《湖南农**动考察报告》、《论持久战》等著作，其中体现出来的深刻洞察力与对中国国情的深入把握，其博大的心胸，为国为民的精神真叫我震撼！最终夺了天下，实在是中国社会的必然，当时她集中了多少中国最出色最优秀的人才，再加上毛泽东这种不世出的大牛人领导，老蒋真与他不是一个水准的，想与老毛逐鹿中原，必败无疑！我成了毛泽东的崇拜者，但绝不是盲从者。</p>
<p>　　说起来大家可能不信，我从毛选中得到了许多精神上的营养，更加乐观了。毛选，真是中国人巨大的精神财富！近年来有不少愤青指着毛泽东晚年的失误全盘否定毛泽东，在我看来真是狂妄无知，他们有几个真正了解毛泽东？有几个真正客观地看过毛选？有几个有资格对毛泽东做出评价? 把他们放回毛泽东生存的那个民族危亡的时代，他们还会有这么多屁放？！说不定最先当汉奸的就是他们。呵呵，不好意思，说粗话了。</p>
<p>　　闲话少说，回到正题。</p>
<p>　　回顾这段经历，我只能说是"具有中国特色的考研之路"。我感叹，中国的考试就是扼杀人性的东西，高考与考研尤其如此。我要是用这种精力去学计算机，一年半的时间，还有什么技术学不到手？但我没办法，现实逼着我去考这种我并不想考的试。中国考试之难我看全世界也不多见，我想，每年全国还有那么多的学生要参加这种考试，大量的人力物力与年青人的精力和时间都耗费在考试上了，而考试的内容与实际脱离那么远，真的有助于人才的脱颖而出？我看反倒是形成了一种应试教育，扼杀了年青人本来所具有的创造性，中国现在为什么出不了大师级的人物，应该反思中国的教育制度。</p>
<p>希特勒地堡与cih病毒</p>
<p>　　刚好我编的程序告一段落。于是就crazy地敲键盘，一鼓作气地把下篇写完了。心中有好多话一次就说个痛快。</p>
<p>　　看得越多想得越多我就越困惑，人啊，你活着到底是为了什么？又整天忙忙碌碌地追求些什么？我这十年，&#8230;&#8230;我都不知道怎么说了！大家自己看吧！</p>
<p>曲折的实践之路<br>1．希特勒地堡与cih病毒</p>
<p>　　99年4月，我来到北京参加研究生复试。复试完了之后就不回去了，我拿着一张光盘，里面刻着我用vb和authorware3.5编的一个cool 3d的教学软件，到处参加招聘会，开始了在北京的打工生涯。</p>
<p>　　说句实话，我心中真是一点底也没有。北京人才济济，我一个三流大学的毕业生，又不是计算机专业的，有人要我吗？</p>
<p>　　我在北京无依无靠，没有任何一个亲戚在北京，住成了大问题。北京这地方，钱太不经花，生活费用太高，我四处寻找便宜的地方住。后来，我在北京化工大学对面的招待所中租了个床位，每晚20元，地下室。这个招待所的地下室非常大，每天回去的时候，都要走过长长的曲曲折折的通道，加上那昏黄的灯泡，每次我都有走进了希特勒地堡的感觉。地下室里潮湿阴暗，不见天日。地下室里人员很杂，什么人都有，永远没有一种安全的感觉，所幸的是我也是个穷光蛋，光脚的还怕穿鞋的？别人能呆我也能呆，唯一让我担心的是钱，没钱，在北京连流落街头都不够格，立马被收容去昌平筛沙。呵呵，我没这种经历，这是当时住一块的一个外地要考北京中医药大学的博士生说的（我俩居然住到了一个屋里，大家都没钱，只能挤地下室，只是他老兄晚上打呼，我可真受了不少罪）。</p>
<p>　　日子一天天过去，袋里的钱一天天少了，但工作还是没着落，心中越来越慌，除去学费，来京时父母给我2000元，大哥资助我的1000元就是我当时的全部资金（3000元在北京能呆多久？！）。我当时订了个计划，留下500元保底，打死都不能动，要靠它作路费回家的。我当时说，一定得找到一家公司，再少的钱都干，只要有口饭吃，有张床让我睡我就满足了。</p>
<p>　　我一共应聘了四五家公司，最具传奇色彩的是到西单附近一家公司的应聘经历。那时，我带去了我的作品，公司项目经理要看，于是我给他们演示，很奇怪，程序一打开就死机，一连两台电脑都一样，末了，两台电脑都启动不起来了。用瑞星一查，cih病毒——那天正是4月26日！于是，cih破坏了电脑主板的同时，也无情地摧毁了我的就业机会。还算老板可怜我，没要我赔。其实我当时快到山穷水尽的地步了，真要我出钱，我可能连家都回不了啦。陈盈豪（cih病毒的作者），你小子这么的聪明做什么不行，偏要去做病毒，害人害已，弄得我连个饭碗也找不到，晚上回"希特勒地堡"，把这小子骂了无数次！</p>
<p>　　总算天无绝人之路，在我数着最后还剩余600元钱的时候，终于有一家公司要我了，做中小学教育软件，月薪1600。干了两星期，又给我在公司的仓库挪开货物，搭了个床位，我就在那住下了，庆幸再也不用到"希特勒地堡"里当冲锋队员了。每天下班后，我就睡在林立的大纸箱之中，如果来个地震，呵呵，我就埋在纸箱中了，休想爬得出来！</p>
<p>　　我干得非常努力，第一个月工资开出来，扣掉个人所得税，我拿了1500多元。你们不知道我拿到第一笔工资的感觉！这钱在很多人眼里简直不算钱，但对于一个没工作近两年，工作也一个月收入不到200的穷小子而言，就象陈佩斯小品中所演的："我王老五活了一辈子，还从没见过这么多钱啊！"。好笑吗？我一点也不觉得好笑。我只是心酸，我到了28岁才可以用自己的知识与技能养活自己，再不用依靠父母和兄长的资助，才真正完全用自己的力量在社会上站起来，一个没有经济自立能力的人，只能是个不成熟的人，一个躺在父母身上的人，不是一个真正的男子汉！我当这样的孬种当了28年！<br>　<br>　　我找到工作后向家里写过一封长信，信中讲了我对父母平时不好意思说的很多心里话，当时，我父亲说，母亲接到信都哭了。我刚拿到工资，马上打了个电话回家里告诉母亲，以缓解他们的焦虑，毕竟儿行千里母担心啊！父母有退休金，一再表示不需要我赡养，而我再这样不要脸下去，我还是人吗？我就是从那时候开始，下定决心，从今往后，再不向家中要一分钱！今后三年读书和生活的费用我一定要用自己的劳动来获取。</p>
<p>　　金钱带给我的激动就是在那段时间，温饱问题解决之后，金钱对我的诱惑就再没有了，哪怕让我一个月赚一万，给套房子给我，也不可能再给我带来幸福的感觉了，钱是重要的，但不能成为它的奴隶，家中不需要我负担，我一个人有吃有喝，干着我喜欢的工作，足矣！</p>
<p>　　我在那公司一直干到九月学校开学为止。我走的那一天，公司居然还开了个欢送宴会，老板封了500元的封包给我。我真是感动。我大学毕业后在社会上挣扎求生，得到的大都是冷眼与蔑视，社会终于认可了我的价值，我不是一个只知道吃饭的废物！</p>
<p>　　1999年9月9日上午9点，在这个最多9字的时刻，我到学校报道来了，放下行李，我坐在分配给我的床上，心中终于踏实下来。</p>
<p>　　现在，我在北京终于有一张属于我的床了，一张真正属于我的床了，终于有个地方可以让我安稳地睡觉了。没有这段经历，我怎么体验到"安居乐业"这一个词的真实含义！个人如此，国家要做到，中国要做到，更难！</p>
<p>2．编程生涯<br>　　读研两年半的时间，我四处打工，这两年半我至少在七八家公司做过，编了十几万行代码，为自己赚了一台电脑，两部手机（丢了一部），还有读研期间的所有费用，实现了我的目标：没向家里要一分钱。</p>
<p>　　我水平不高，但在打工过程中，发现许多中国软件公司的水平更菜！</p>
<p>　　2000年暑假，我参加一个商品软件的开发，搬到了北大燕北园的一个宿舍，在那儿搞封闭式开发。在这个项目采用vb6开发，主力程序员除我之处，还有一个华北电力大学的研究生。大家都没开发商品软件的经验，没经过正式的设计，就匆忙编码了。我曾经想采用分层的系统架构，但遭到另一位程序员的反对，争吵没有结果，老板也不能做决定，结果各行其是。现在看起来，那时真是太菜了，任何一本软件工程书都会指出这种做法是不对的。</p>
<p>　　我们直接就热火朝天的干了起来，那位华北电力大学的老兄，真让我佩服，他可以在一个sub过程中写上2000行代码！我觉得奇怪，为何他能写这么多的代码？一看，顿时我晕倒，他居然将每个控件的left,top,width等属性都用代码来设定！想想这样的程序，调试时光单步执行就需要按多少次f8键！</p>
<p>　　我们在电脑旁边搭了个行军床，每天都是干到早上6点才睡，12点吃中饭，然后又是一个通宵。当时整个工程只有一个类模块，被我用于封装访问数据库的 ado数据引擎，这是整个工程中唯一一处用到了最简单的面向对象技术的地方，然后，我写了近十个bas公用模块，每个模块代码规模都有一两千行，还有十几个窗体，每个窗体中都塞满了事件驱动的vb代码，整个软件应该有10万行代码，我一个人在此期间至少就写了3万多行vb代码。程序的主处理流程我甚至用 ado与dao写了两套！</p>
<p>　　现在想起来，我们当时根本就不知道面向对象为何物，更不理解许多对软件开发至关重要的理论，就凭着一种热情。在这段痛苦的开发经历中，我不仅精熟了vb，而且从中学到了很多。现在再开发同样功能的东西。我至少可以砍掉2/3的代码。怎么学都不如从失败中学得多。</p>
<p>　　后来我总结vb程序员的三个境界：</p>
<p>　　（1）所有代码都只放在窗体文件中的，属于菜鸟级，他们只会从面板上拖控件，设置属性，然后再给事件编码</p>
<p>　　（2）工程中有bas模块的，属于中间级，他们已意识到有大量的代码是重复出现的，应该将其抽取出来作为公用模块</p>
<p>　　（3）工程中有cls模块的，属于高手，他们已掌握了面向对象的思想，并能应用这种思想来解决实际问题</p>
<p>　　正是这次开发经历，促使我反思：到底如何开发软件？我个人可以用vb完成各种各样的功能，为什么凑在一起就会那么困难？更正一个bug为何那么难？为什么一个看似简单的软件，要拖半年的时间还看不到结束的日子？</p>
<p>　　九月，研究生要开题，我自拟了个课题：软件体系结构设计。我决心弄明白，好软件到底是怎么做出来的。</p>
<p>　　我放下了vb，开始研究c++，原来学过vc，但没学会，就直接从c++ builder入手。borland公司的vcl类库让我大为叹服，很快就迷上了它，为此连带学了delphi，并参与了一个delphi项目。给我真正震撼的是《设计模式》这本书，看了才知道，原来好软件是这么设计出来的！在此，我强烈推荐所有有一定编程经验的程序员一定要看这本书！</p>
<p>　　一边学习理论，一边可没忘记我没经济来源，于是又四处打工，接一些小项目与小模块来赚些生活费，国内一家横跨家电与软件的著名公司是我打工期间去过的最大的公司。但无论什么公司，都给我一种感觉——烂！公司中充满了对员工的剥削与不尊重，对软件开发这一事物的错误认识，管理混乱。我没机会去外企，技术水平不到，别人不要我但我所见到的软件公司，我敢说没一家能做出世界一流的软件！</p>
<p>　　我上的研究生课程也让我失望，整个就是本科教育的再版。经过高考与考研两次重大考试，我对考试已是深恶痛绝，但读研期间仍要考试，而且是闭卷！我就不知道我去背那些条文对我的研究与学习有何帮助？2000 年7月当我考完最后一门，终于大松一口气，我终于摆脱了考试的压迫，可以在剩余的一年半中真正搜索我渴望已久的软件技术了。这年，我29岁。</p>
<p>　　悲哀吗？一个中国的程序员要到29岁才可以真正自由地学习想学的东西！</p>
<p>　　我开始研究面向对象理论，看了大量的书，每天都在实验室学习到深夜12点，天天上网，csdn成了我最常去的网站。</p>
<p>　　随着我对软件技术的了解越多，就越深刻地感到国内与国外技术水平的差异是如此的巨大，巨大得甚至有让人绝望的感觉。同时，在北京这个中国软件人才最集中的地方，我也见到了许多牛人，一个清华的本科学生，做程序员可以拿到一个月12000元的工资，一个北大的计算机系研究生，一毕业就到外企，一个月一万多收入，每年发16个月工资！干了两年就开了自己的公司。我看到了一个北方交大的本科生作品，在半年的业余时间里，用delphi写了十几万行代码，他甚至在代码中嵌入汇编，自行编写数据存取引擎读写foxpro，速度超快！软件中有一个计算公式解析模块，他用编译原理理论居然做了一个小型的公式解析器，就象c++编译器检查c++程序一样，不仅可以判断是否公式正确，而且给出的出错信息还相当准确！其基本功之扎实，水平之高让我望尘莫及！中国优秀的人才真还是不少的！在精英集聚的北京，面对着博大精深的软件科学，我深感自身的渺小。</p>
<p>　　但我毕竟是靠自己奋斗出来的，我并不自卑，这世界需要牛人，同样需要大批合格的劳动者，我成为不了牛人，但我作一名程序员是合格的。</p>
<p>　　时间过得飞快，一年半根本就不算时间，马上就要毕业了，学习的成绩如何，要到社会上去竞争了，让社会考场来决定你是否及格。</p>
<p>3．毕业求职</p>
<p>　　98级的研究生是it业最后辉煌的回光反照。当时，各大公司都发了疯似的要人，象华为，当时是来者不拒。计算机专业的研究生是一抢而光，本科生也供不应求。2001年毕业的我的师兄师姐们，平均每个人手头都至少有两三个offer，谈的工资没有低于每月6000的，许多人去了外企，工资在8000~10000每月的也有。真是毕业生的黄金时间。</p>
<p>　　但好景不常在，911事件我看来好象成了分水岭，911之后，整个it业急刹车，就业形势急转直下，各大公司都在消化去年吃得过饱的胃口，我形容是大家都吃坏了胃，再也不可能有我师兄师姐们的风光了。虽然时间相隔仅大半年。</p>
<p>　　从10月开始，11月和12月，我几乎是在招聘会与公共汽车上渡过的，北京东南西北地去面试，上午在上地，下午可能就要跑到朝阳区，疲于奔命。</p>
<p>　　在找工作过程中，我良好的心理素质与丰富的编程经验起到了很大的作用，并没有遇到很大的困难，就先后有几家公司表示要我。</p>
<p>　　其中我想说的有两家公司。</p>
<p>　　一家是台湾公司，应该说他们做得是不错的，但我非常反感他们那种自认为高于大陆人的那种优越感，而且待遇也不高。面试之后，回来感觉很不好。当时台湾是民进党上台主政，我就称之为"民进党"看不起""（虽然我不是党员，但我们都是中国人，都希望中国能强大，让她的人民能挺直腰杆）。</p>
<p>　　我想：我们大陆确实是不如台湾发达，难怪别人看不起我们，这世界势利得很，社会如此，国家亦然。但我中华960万平方公里的国土，13亿人口，难道要依靠一个小小的岛屿来撑门面？难道除了台湾公司，我就无处可去了？虽然改变不了什么，但我决定绝不去台资和日资的公司工作（日本人我更不喜欢，但我认为他们做事实在优秀，我们一定要向日本人学习）！在这种公司呆着，不爽！同时，我们的确也得争气些，这世界只尊重强者。</p>
<p>　　另一家是个很不错的民族软件企业，想要我，其老总专门找我去面谈了一次，希望我能到他的公司工作。这位老总白手起家，能在五六年的时间内由几个人发展到300多人，当时，是中国这个领域软件市场占有率最高的公司，我非常佩服，他为人也很好，并表示可以给我每月比其他研究生多加1000元工资，而且希望锻炼一两年之后我能够带领一个团队来开发产品，并负担我毕业所需交纳的各种费用。在就业不景气的2002年，对我一个30岁的技术水平有限的老程序员如此看重，真叫我感动。虽然我最后还是没去，但我仍然对这个公司充满了好感。一个软件企业最重要的是什么？是对人的尊重，没有这点，可以断定，这个公司长不大。</p>
<p>　　我为什么没去软件公司？放弃有可能在几年之后年薪突破10万的收入？是因为我已有了更想做的事，我想当老师！</p>
<p>　　我自己是从自学的路上走过来的，其中的艰辛历历在目，无人指点，我走了多少弯路？中国还有多少是象我这样的年轻人无人指点的？我幸运能爬出来了，因为我至少还能有饭吃，比我条件更差的，比如农村的孩子，可能就被生活的压力所淹没了。我个人的力量很微弱，技术也有限，但我自认为至少是一名合格的程序员，如果能培养出一大批达到我的水平的学生，他们毕业后成为合格的程序员，中国软件的根基就会更扎实，如果更能有一批远远超过我水平的学生出来，中国软件就有希望了。软件是什么？软件以人为本！</p>
<p>　　人生追求什么？金钱？我很缺钱，但不可能把金钱作为我的目标，我希望我能够成为一个对社会有所贡献的人，能够获得心灵的充实，于是，我选择了留校。</p>
<p>4．对教育的反思与教书生涯<br>　　2002年下半年，我参加了北京高校青年教师岗前培训。一位杜教授的两堂课让我印象深刻，其中两句话让我深深震动：</p>
<p>　　第一句话：我是一个教书匠，教书匠好啊，好就好在"匠心独运"！</p>
<p>　　第二句话：做什么工作都要达到变魔术的境界！</p>
<p>　　是的，作为一名教师，就必须起到一个传声筒与放大器的作用，将人类最聪明的人探索世界所得到的知识予以拓宽发展，以便让更多的人能够掌握这些知识并进而应用于实践，从而推动人类的不断进步。</p>
<p>　　作为一名计算机专业的教师，就要努力把先进的计算机技术以尽可能高的效率传授给广大的学生，引导他们直接面对真实的软件世界，而不是向他们硬灌各种各样的理论知识，强迫他们去死记硬背以应付考试。</p>
<p>　　我是一个小人物，才低学浅，但我真的认为高校计算机教育存在严重的问题。我在打工期间的开发经历，以及阅读国外相关资料的时候，发现学校中教的和社会上用的差得太远！都已经是什么时代了，许多大学还设立foxpro课程，难道就不能直接用现代主流的数据库如oracle，sql server，哪怕是access也好，来讲授数据库知识？还有所谓的计算机等级考试，呵呵，过了三级学生的我见过不少，但他们真正对软件，对计算机又理解多少？</p>
<p>　　在中国甚至于升职称也要考计算机，我看了一本职称计算机考试教材，里面几乎原样照搬计算机原理课程中的相关章节，弄得我给搞艺术的大嫂讲了一个小时的二进制与八进制、十六进制的转换方法，她还是弄不太清。我都泄气了，对啊，他们搞艺术的，有必要去分清二进制的10与十进制的2 有何分别吗？他们八辈子也用不上。但是考试用得上，呵呵，又是中国特色。</p>
<p>　　拿c++来说，我讲过c++课，许多的国内教材对c++语法下了大功夫，却对体现了c++精华的stl只字不提，对代码背后所体现的软件开发思想与方法更是视而不见，我用c++也编过不少程序了，说句实话，我用到的特性不到c++的三分之一！于是就出现了这种怪现象，许多学生考试可以拿八九十分，给他一个简单的实际问题他却不知如何下手！</p>
<p>　　还有 uml，现在好象很火的样子，我们读研时就开了这门课，讲句实话，当时这门课我就没听懂，可后来我尝试着用c++用面向对象的方法来编程序，然后，由代码倒推回uml类图，一下子就明白了，原来uml只不过是一种描述面向对象系统的符号罢了，如果学生没进行过真正的oop，那就是为了学uml而学uml，根本就本末倒置。</p>
<p>　　还有软件工程，我的感觉，一个人如果没写过一万行以上的程序，他看软件工程书就同看政治书差不多，每句都对，呵呵，就不知道为什么对。我完成了那个几万行的vb程序之后，再回过头看看理论，真是句句是真理！每个理论背后都是大量实践经验的总结。</p>
<p>　　回想我做软件的体会，我发现所有的知识都是一个完整的体系，根本就无法区分哪些知识是本科的，哪些知识是研究生课程。于是，一种想法产生了，我主讲程序语言类的课程，那我就直接以真实的软件开发过程为主线，实践中需要什么我就讲什么。讲c++/，我就抛开了指定的教材，c++我讲了stl，我讲了 ooad，两者我都讲了用rose进行双向工程，引导学生去学uml，一开始就用uml去描述自己开发的程序，何必浪费大量的时间去学结构化的编程方法？</p>
<p>　　我现在简直成了面向对象技术的布道者，我下学期即将开设ooad基础选修课，从实际项目中抽取典型的案例，讲uml，讲rose，讲设计模式，讲软件体系结构，例子代码横跨c++/和.net下的开发语言（c#和vb.net），这对于我一个技术水平有限公司的董事长而言，实在有点不自量力，我鼻子上才插上几根葱，就想装大象？但我想，如果我能成功地激发出哪怕1%的学生的兴趣，能引导他们走向我认为是正确的方向，能启发他们思考，能直接面向真实的软件开发活动而不是学校的考试，就是我的成绩。我现在正在看引进的原版书籍---《设计模式解析》，时时击节赞叹！《设计模式》经典但难懂难用，而《解析》一书的两位作者既有丰富的从业经验，又对ooad进行了深入的思索，真知灼见时时展露于书中，我现在刚看了这本书的80%，基本上可以用一个成语来描述这部书：深入浅出！</p>
<p>　　要做到深入浅出谈何容易！只有同时具备技术专家与文学作家素质的人才能做到！</p>
<p>　　反观我们国内的大量教材，还有大量的垃圾论文（包括硕士，博士的，本科的就算了，我看绝大部分根本不能称之为论文），全都是"浅入深出"，作者自己都未必明白，就东拼西凑，摆出个样子吓人。本来完全可以用大白话三言两语讲清楚让人明白的道理，有人专门要绕一大圈，专挑用高深的数学公式来表达，唯恐别人容易理解，显得他水平不高！呵呵，什么东西一沾上"数学"，立马身价百倍。我就听过一个北师大的一个在读博士说过：如果一篇博士论文中没有一个数学公式，根本就不算是博士论文。这句话对不对，大家可以多思索。我数学不好，没资格讨论数学，我的直觉：数学是工具，但如果为了发表论文等目的而故弄玄虚，为数学而数学，是不合道理的。中国的学术水平与现状，大家都心知肚明，不用我废话了。</p>
<p>　　现在每年都毕业大批的计算机专业学生，可其中真正具备扎实根基的可以很快胜任工作的我看只有5%（95%的学生不要扁我，不同意就当我在说胡话，我很瘦的，一扁就没了&#61514;）。多年以来，我国高校计算机教育是按照计算机科学研究者来培养的，可事实上，有多少学生能从事计算机方面研究的能力？我看应分流，80%的学生按工程师方向来培养，20%的学生按研究者方向来培养，而且应大幅减少必修课的数量，计算机领域太深太广，样样都想教给学生，反而成了夹生饭，一个想从事硬件设计的学生和一个想从事软件开发的学生，能给他们一样的饭吃吗？学校应提供各种条件和资源去引导学生，激发学生的创造性与主动探索性，让他们去尝试，去发现自己的长处，最终找到最适合自己的发展方向。不这样做，中国软件后继乏人，没希望。</p>
<p>5．实践第一<br>　　2002年下半年，我和一个朋友去了北京郊区的一家杂志社，看到的情形让我震惊：在信息产业最发达的北京，这家杂志社还用人工查对杂志订单和款单，看着那按省来登记的几大本厚厚的客户登记本，工作人员需要手工来在其中查找相应的信息。这样的工作效率，这样的行业信息化水平！北京如此，全国又如何？</p>
<p>　　从这件事上，我看到了中国软件业的另一方面。一方面我们没有核心技术，另一方面，已有的技术又根本没推广没用好。追踪世界先进水平，对于我等这种水平的人来说，确实勉为其难，但将已有的技术用于解决实际问题，却是我们可以做的。如果中国各行各业都真正能通过进行信息化而提高生产效益，那中国不就从根本上强大起来了吗（象印度，it一枝独秀，其他行业没有起色，我称之为跛足的国家，绝不能成为世界强国）？在扎实的社会基础之上，软件业不就有了更大的市场与发展潜力？中国许多行业的信息化水平非常低，而且中国地域广大，发展非常不平衡，有些地方信息化水平甚至为0！努力推动行业信息化，是我们这一代软件开发者的责任！而追赶国外先进水平，恐怕就不是一代两代程序员可以达到目标的，需要长期的努力。作为一名软件开发者，只能脚踏实地，哪怕你只做一个小小的mis产品，也要尽力把它做好来。</p>
<p>　　于是，我开始了期刊发行系统的开发，这完全是自发的，没有任何资金投入，只有一种热情在支撑。我开始选择c++ builder开发，做了几个月，完成了第一个版本，但我发现，我找不到足够水平的c++程序员进行合作开发，而且整个一个exe文件，在体系结构设计上虽采用了分层分块的设计方案，但却是源代码级别的，要拆分成com组件难度太大，不是一个人能完成的，于是中途流产。</p>
<p>　　2003年3 月，我开始系统地学习.net，我吃惊地发现，我原来想在c++中实现的许多功能，比如对象串行化为xml，在.net中已有现成的类可用，.net更把 oo的功用发挥到了极致，它的混合语言开发，它的反射机制，它的新的自识别的软件组件，以及强大好用的开发环境vs.net，都让我惊叹微软对开发者遇到的困难的深入把握，相比用c++开发，至少可以提高1/3的开发效率。于是一个新的想法产生了，我要把以前的产品用.net重写，利用.net强大的组件模型，将设计模式理论推广应用到组件级别，通过xml和反射机制建立一套可动态装配的软件生产流水线，实现象dell直销pc那样的软件动态装配直销。只要建立好灵活可不断重构的系统架构，配以对业务领域的深入分析，逐步建立功能强大的业务组件仓库，就可以实现软件系统的动态装配。说干就干，我用vb, net重写了原先用c++编写的系统，将原先的一个exe变为十几个dll，而且这些dll还会随着发展而不断地分裂，也有可能重新组合，利用 refractoring（重构）不断进化，最终形成一整套完备的行业软件组件库。做软件关键因素是变化，只有适应变化的系统才是有生命力的。</p>
<p>　　我用两个月的时间大体上弄清了.net平台下的主要类库，然后又用两个月的时间再次重新实现了期刊发行系统的c++版本的全部功能，到8月份我写这篇文章之时，第一个产品里程碑已经完成。同样的，除了需求是由另一个合作者去搜集的之外，几乎又是全部由我一个人包揽了所有的系统设计及编码工作！</p>
<p>　　毫无疑问，我自觉得新系统要比老系统可维护性强得多，真正实现了彻底的全组件化系统开发，计划再有一个月的界面美化，改正bug，引用多线程提高运行效率，优化系统结构，就可以提供给用户试用了。市场如何，难说难测。</p>
<p>　　在开发过程中，我再次感到巨大的挑战，不光是技术上的，更是管理上的。人才是我最头痛的问题，没有一流的人才，哪来一流的产品？我们找不到足够水平的程序员一起合作（牛人哪屑于做这样一个小儿科的产品？）我们要走的路还很长。也许我们开发的产品是失败的，但我从来就没指望能用这赚钱，我只是尽一个软件开发者的责任而己，成败已不重要！人生不尝试，怎能体现人活着的价值？</p>
<p>结束语 永无止境的软件之路<br>1．辛酸与苦辣</p>
<p>　　做软件开发很苦的，技术进步如此神速，每个软件开发者都得不断地学习以跟上发展的步伐。有时我常想，何苦呢？我现在在大学中混，怎么样不能混下去？为什么要做这些吃力不讨好的事？我投了十年的时间去学习电脑，却最终发现自己不过中人之资，离顶峰远之又远。古语云：三十而立。我今年32了，仍是孤身一人，看看周围的同学，他们的小孩都差不多上小学了！许多都有了自己的房子和车子，而我到现在才开始申报中级职称，还挤在集体宿舍中，望着北京高昂的房价而叹息。现在社会越来越功利了，看着象我这样的穷光蛋，看着由于长期面对电脑缺少锻炼而瘦弱的身躯，又有哪个女孩愿意嫁过来受苦？</p>
<p>　　软件人的生活很苦，压力很大，我认为是拿青春赌明天。就是在这种恶劣的开发环境中，还有许多业外人士指手划脚说程序员如何如何，还有太多的公司只顾压榨程序员的劳动，缺乏对程序员基本的尊重，怎不叫人寒心？</p>
<p>"三十而衰"，这句本不应该流行的话居然成了中国软件人员的流行语。中国程序员的悲哀！</p>
<p>2．无止境的追求</p>
<p>　　人类已进入信息时代，计算机技术几乎每隔半年就有一次大的变化，我现在又面临着这样的抉择：今后的路如何走？</p>
<p>　　北大的教师聘任制度的改革一石激起千层浪，说明了中国高校的改革势在必行。我是欢迎这种变化的，虽然到时我可能会下岗。但人生中总会遇到各种各样的挑战，只要你不倒下爬不起来，就有希望。</p>
<p>　　我想我必须再次让自己有个提升，要从小事做起，但做小事则绝不能成为最终的目标，也许，不远的将来，我会走出国门，到世界软件技术最发达的地区去汲取丰富的养份。今后的路怎么走，我还在摸索之中。</p>
<p>3．人生无悔</p>
<p>　　人生年华如水，时光无情。在过去的岁月中，我尽了自己的力，回顾往事，我可以说：过去的事只有遗憾，却没有后悔。如果给我再一次选择职业的机会，我还会再次选择软件！</p>
<p>　　再过10年，到2013年的时候，我也许会再次写一篇人生的十年回顾，到那时中国的软件会如何？中国软件的明天靠你我这些普通人去扎扎实实地去工作来支撑！少发些牢骚，多做些实事，中国软件才会有光辉的明天。你我共勉！<br></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:09 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>刘淼自传</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125225.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:08:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125225.html</guid><description><![CDATA[<p>发信人: threewater (突破叹息之墙), 信区: Writer<br>标&nbsp; 题: 三水长大了——序<br>发信站: 未来花园 (2002年05月08日21:49:19 星期三), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 在Writer版看人家写的原创文章久了，自己也有一点写东西的冲动了。这话从我的<br>口里说出来可不容易啊。想一想中学的时候我最讨厌的就是语文课，最恐怖的就是语文<br>老师让我写作文的时侯。每次我都不想写，或者晚交几天。我也不知道是什么原因，总<br>觉得自己写的东西不好意思拿给别人看。现在，可能受大家的影响吧，终于有勇气写东<br>西了。不过写作水平有限，万一大家看不下去了，赶快叫停。呵呵。</p>
<p>&nbsp;&nbsp;&nbsp; 昨天，lenber向我要账，虽然说早就想写点东西，但是，还不知道写些什么呢。所<br>以，晚上早早就回去睡觉了。晚上2:00躺在床上，也睡不着，就想想些什么吧。最后就<br>定了这个题目。作为回忆也好，作为自传也好，作为故事讲给大家听也好，写一写我从<br>小到大的故事吧。有些给我留下了美好的回忆，有些甚至改变了我的人生观。</p>
<p>标&nbsp; 题: 三水长大了——三水出世<br>发信站: 未来花园 (2002年05月08日21:52:46 星期三), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 本文中的故事虽为本人亲身经历，但是，是在是记不住了。基本上都是听妈妈<br>后来给我讲的。应该也不是虚构。</p>
<p>&nbsp;&nbsp;&nbsp; 爸爸妈妈从有我的那一天开始就没有停止过操心。我刚刚生下来的时候，据说<br>是&#8220;脐带缠脖&#8221;——只是听妈妈说的，也不知道是不是这几个字，据我的理解就是<br>脐带把脖子给勒上了，所以就喘不过来气，不会哭。不管护士怎么折腾，打也好、<br>喷氨水刺激也好就是不会哭。当时爷爷是医院里的医生，和院长是铁哥们，也亏着<br>这层关系，医院才全力组织抢救。</p>
<p>&nbsp;&nbsp;&nbsp; 我那一夜就是那么一直没有气，妈妈在病床上躺着也担心得睡不着觉，让爸爸<br>一直去陪我。第二天早晨，妈妈隐隐约约听到隔壁的护士讨论，昨天&#8230;&#8230;的孩子呢<br>，另一个说，早就不行了，死了。当时，妈妈的眼泪就下来了&#8230;&#8230;</p>
<p>&nbsp;&nbsp;&nbsp; 过了一会，爸爸高兴的跑过来说，&#8220;咱们的孩子会哭了！&#8221;。妈妈以为是爸爸<br>在故意哄她开心，直到亲眼看见了我才放下心来。也不知道哪两个护士说的是那个<br>孩子，反正不是我了。说得一点悬念都没有，我要是死了，怎么在这里灌水呢？</p>
<p>&nbsp;&nbsp;&nbsp; 总是，我是福大、命达、造化大。可能有12小时没喘气，居然活了。现在知道<br>了，以前肺活量很大，就是那个时候练出来的。呵呵。</p>
<p>&nbsp;&nbsp;&nbsp; 妈妈说，他做梦都想要一个女孩儿，可是我却偏偏是一个男孩子。所以，小的<br>时候（当然，我记不清楚了），妈妈经常的把我打扮成女孩子，甚至，我还穿过裙<br>子呢？哈哈，我可是穿过裙子的男孩子哦。有一次，妈妈的一个学生说，&#8220;曹老师<br>真幸福，今天领一个姑娘，明天带一个小子&#8221;。妈妈当时就笑了，说道：&#8220;我家里<br>、家外就这么一个&#8221;，呵呵。现在想一想，我胆小、心细说不定就是受那时候的影<br>响呢。</p>
<p>标&nbsp; 题: 三水长大了——小时候的故事<br>发信站: 未来花园 (2002年05月09日02:59:04 星期四), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 在妈妈的眼睛里，自己的孩子当然是最聪明的。我妈妈也是这样，经常说我小的时<br>候很聪明。妈妈说1岁的时候测试我的智商是200，因为我把2岁孩子能答上来的题目都答<br>出来了。呵呵，也不知道那是哪里的算法，有点可笑了吧。</p>
<p>&nbsp;&nbsp;&nbsp; 据说是我不到两岁的时候，家里人开始教我认字。妈妈把图画纸（那个时候都这<br>么叫，就是那种很厚的用来画铅笔画的纸了）裁剪成大概10cm见方的卡片，用毛笔在上<br>面写正楷，一张卡片就写一个字——妈妈确实写了一手好字，现在我还有那种卡片呢，<br>拿出来一看和印刷的一样。我那个时候是在爷爷奶奶家里看着，没事的时候他们就教我<br>认字。据妈妈说当时我可以认识2000多字，可惜后来上了幼儿园不经常复习就都忘了。<br>不过爸爸说那是智力开发，不算白认。呵呵。现在我能不能认识这么多字还说不准呢。</p>
<p>&nbsp;&nbsp;&nbsp; 有一天，妈妈下班回家，我对妈妈说，我在炕上（那个时候北方人家里是睡火炕的<br>，不知道有多少人对这个东西有过印象）摆了一个&#8220;人&#8221;。妈妈仔细一看，我的&#8220;人&#8221;<br>是我拿着&#8220;字块&#8221;这么摆出来的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 伞<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 脖<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 臂身<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 手 腿<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 足</p>
<p>大概就是这个意思了，当时我是怎么弄的我实在记不住了。呵呵，现在觉得也挺有意思<br>的。</p>
<p>&nbsp;&nbsp;&nbsp; 我在1岁的时候去过3天幼儿园，当时我又哭又闹，老师（应该叫阿姨）也对我不好<br>，后来，爷爷奶奶看我可怜，就把我接走了。3岁以后，我开始正是上幼儿园了，因为这<br>个时候的几个阿姨都是我妈妈的学生，对我很好的呢。但是，有的时候，阿姨也说我不<br>乖。因为我从小就不喜欢吃饭，每次吃饭的时候都是第一个给我盛饭，可是最后一个吃<br>完的还是我。现在我也是这个样子，每次吃饭吃的不多而且还很慢。大概我天生就属于<br>&#8220;节能型&#8221;的那种，用我们那行的话就是&#8220;超低功耗&#8221;。sigh! 说着说着就说跑题了。</p>
<p>&nbsp;&nbsp;&nbsp; 后来，自从一件事情以后，阿姨们就都很喜欢我。因为有一天，阿姨在那里擦地的<br>时侯其他的小朋友都在玩，只有我一个人在那里一个劲的盯着阿姨看。阿姨问我想什么<br>呢，我说，我想长大了设计一个机器人帮阿姨干活，这下把在场的阿姨都乐坏了——当<br>时可能我4岁左右，这事我也就不清楚了，还是后来妈妈告诉我的。现在想起来真是奇怪<br>了，怎么这么巧？我现在干的就是做机器人的活。呵呵，太不可思了。难道是老天有意<br>安排的？说不定以后有机会我真弄一个家庭自主式的吸尘器之类的呢（昨天我看的报道<br>，日本已经有这种东东了）。sigh!说到了最后，还是回到了老本行。</p>
<p>标&nbsp; 题: 三水长大了——小学时代<br>发信站: 未来花园 (2002年05月10日00:31:47 星期五), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 据说我5岁的时候爸爸就想让我上小学，妈妈说，&#8220;你想让儿子变成小老头啊？&#8221;就<br>这样，我上学的计划被拖到了6岁。</p>
<p>&nbsp;&nbsp;&nbsp; 可能是我从小在家里呆惯了，没有和其他小朋友出去玩的习惯，小学时代的我也很<br>少和同学出去玩，那个时候，每周四下午老师备课，我们放假，但是，我从来都是<br>回家，因此常常被人家说成是性格孤僻，说得好听一点就是性格内向。</p>
<p>&nbsp;&nbsp;&nbsp; 同学们也都奇怪了，我整天闷在家里，有什么意思呢？其实，爸爸妈妈最清楚呢。<br>我在家里比在学校都忙。因为那个时候我就喜欢自己做东西玩，可能是那个时候的玩具<br>少吧，我的好多玩具都是自己做的。</p>
<p>&nbsp;&nbsp;&nbsp; 开始的时候，我喜欢看《少年科学画报》（不知道有多少人小时候看过这个东东，<br>我好像是看了5年），里面有一些小制作什么的，我很喜欢照着做，几乎画报里的每个作<br>品我都会做出来的。后来，我也跟着电视里的鞠平JJ做手工。再后来，就逐渐的就开始<br>自己做自己想要的东西。下面介绍一下我的几个有代表性的系列作品：</p>
<p>&nbsp;&nbsp;&nbsp; 1、变形金刚系列。</p>
<p>&nbsp;&nbsp;&nbsp; 我们这个时代的人都看过《变形金刚》的动画片吧，那个时候，变形金刚的玩具也<br>是风靡一时，可是价格不菲。能拥有一个（或者几个）满意的变形金刚玩具也是很多人<br>儿时的梦想吧。</p>
<p>&nbsp;&nbsp;&nbsp; 当我看完变形金刚的第一集的时候，我就有了做一个的想法（那个时候还没见过玩<br>具）。</p>
<p>&nbsp;&nbsp;&nbsp; 小孩子做手工嘛，我做变形金刚的主要原料就是纸壳盒，那个时候，家里买东西包<br>装的纸壳盒一定要给我留着。甚至，妈妈学校的小卖部也知道这个事情，帮我攒了好多<br>纸壳盒。几乎每个星期我都可以从那里拿来几大塑料口袋的纸壳盒呢。其余的原料也是<br>就地取材，包括：吃糖葫芦或者雪糕剩下的竹棍；吃羊肉串剩下的铁丝；用完了的牙膏<br>皮；包巧克力的锡纸、用完的挂历等等一切可以利用的东西。工具主要有：剪刀、美工<br>刀、胶水和浆糊、铅笔橡皮、直尺、钉书器，偶尔也用一下针线。</p>
<p>&nbsp;&nbsp;&nbsp; 下面就是我的满意的作品：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a、&#8220;擎天柱&#8221;相信大家都熟悉这个哥们吧，汽车人中的老大，就是那个变成大<br>卡车的家伙。他的身子和四肢都是纸壳盒做得，贴上红纸，锡纸做他胸前的两个镜子。<br>用竹棍做&#8220;轴承&#8221;，变形也很方便。最有特色的就是他的脑袋。我先用图画纸叠一个&#8220;<br>气包&#8221;（我们那里就这么叫了，就是一个立体的小方块），里面灌上浆糊（呵呵，堂堂<br>的&#8220;擎天柱&#8221;被我弄得满脑子浆糊），一层一层的灌，干了就灌下一次，直到灌满为止<br>。最后，用纸板做一个面具贴上。一个&#8220;擎天柱&#8221;的脑袋，有模有样的，还是立体的。<br>&#8220;擎天柱&#8221;的手是我用泡沫削的，我削泡沫的功夫可以在后文中看见。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b、&#8220;飞行太堡&#8221;组合。就是汽车人中那五架可以变成飞机，又可以组合成一个<br>大机器（名字想不起来了，好像叫&#8220;巨无霸&#8221;）的那五个哥们。五个机器人从结构设计<br>、变形组合方式到加工生产都是我一个人搞定的。可惜当时没有UG来建模，不然可能还<br>可以保存下来一些图纸呢。</p>
<p>&nbsp;&nbsp;&nbsp; 那是时代的变形金刚还真得给我现在的工作奠定了基础呢。呵呵</p>
<p>&nbsp;&nbsp;&nbsp; 2、圣斗士的圣衣</p>
<p>&nbsp;&nbsp;&nbsp; 《圣斗士》也是我们小时候的最爱吧。我也见过圣衣的玩具，可是，我做的圣衣是<br>为我量身订做可以穿在我身上的那种。</p>
<p>&nbsp;&nbsp;&nbsp; 主要材料有：泡沫（妈妈学校买设备包装带来的泡沫，都让我背回家了）、易拉罐<br>（主要是用他的铝板）、布（那个时候，爷爷奶奶退休了，买过布，所以我总有不用的<br>布条做东西），还有按扣（我们那里就这么叫，以前衣服上经常用这种扣子）。工具除了<br>做变形金刚的东东，主要就是针线了。</p>
<p>&nbsp;&nbsp;&nbsp; 我主要做的是那件天马圣衣（因为比较简单了）。最难做的就是头盔，我完全是用<br>美工刀削泡沫，削出来的。两块泡沫之间的连接，先用竹棍插进去，然后再连接处滴蜡<br>使之浑然一体。一个立体的头盔，我花了一周的时间才算加工出来，一看就象那么回事<br>。我的雕刻的功夫就是那个时候练出来的。去年干活的时候，用木头削&#8220;鱼骨头&#8221;时<br>，也是我亲自出手搞定的。都是那时候的基础啊，气势不减当年呢。呵呵。</p>
<p>&nbsp;&nbsp;&nbsp; 圣衣的胳膊（应该叫护肘）是先用泡沫削出形状，再在外面包上易拉灌的铝皮（用<br>针线缝上去的），银光闪闪的，煞是好看。手指部分（就是那个手套了），是用牙膏皮<br>一点一点捏出来的。腿部直接用易拉罐的铝皮，针线缝和，钉上按扣。胸部就是一块铁<br>皮，四周用布条固定在胸前（现在想一想，有点像女生穿的胸衣了，呵呵）。大概就是<br>这个样子。</p>
<p>&nbsp;&nbsp;&nbsp; 在家里，我经常传着这件圣衣，有的时候，一传就是一天，好像还很舒服。另外，<br>还有其他圣衣的组件。比如：天龙圣衣的头盔；用0.6mm的铁丝自己做的星云锁链等东东<br>。</p>
<p>&nbsp;&nbsp;&nbsp; 3、兵器＆法宝</p>
<p>&nbsp;&nbsp;&nbsp; 这部分东西就比较多了，简单的说一下。</p>
<p>&nbsp;&nbsp;&nbsp; 那时候喜欢听评书（主要是单田方讲的明英烈系列，好像听了3、4年呢），按照他<br>的介绍，我做过岳飞传下来的&#8220;八宝陀陀紫金枪&#8221;（我没看过武侠小说，大概是这个发<br>音了，有不对的地方，请指正）。用放烟花的纸筒做枪身（因为觉得重量不够，在里面<br>塞了好多费电池），三片竹片削的枪头，枪头还挂有红英（红英是我用红线自己做的，<br>红线是我用白线和自己配的红水染的，红水是红纸被水泡下来的颜色），红英里面藏着<br>5个用铁丝（直径0.6mm）做的倒钩。哈哈，厉害吧。</p>
<p>&nbsp;&nbsp;&nbsp; 还有，评书里介绍的&#8220;龟背五爪金龙抓&#8221;。我把一个乌龟玩具拆下来，龟壳做&#8220;抓<br>&#8221;神，用木块一节一节的削成&#8220;抓&#8221;的手指，里面穿上钓鱼线，还挺好使。呢？写着写<br>着，发现这不就是我们实验室以前做的灵巧手的机构原型吗？呵呵。</p>
<p>&nbsp;&nbsp;&nbsp; 看了《天涯明月刀》，我用牙膏皮＋竹棍，做过傅红雪的&#8220;黑刀&#8221;。</p>
<p>&nbsp;&nbsp;&nbsp; 看了《侠客行》，我用木板雕刻过&#8220;玄铁令&#8221;。</p>
<p>&nbsp;&nbsp;&nbsp; 看了《封神演义》，我用竹棍＋泡沫，做过&#8220;打神鞭&#8221;，&#8220;阴阳镜&#8221;。</p>
<p>&nbsp;&nbsp;&nbsp; 还作过，小李飞刀、双节辊、枣核镖、装飞镖的鳔囊等等。还有，当时作飞镖，需<br>要羽毛，我还偷着拔过别人养的大公鸡的鸡毛。暂时想到了这么多，还有好多好玩的呢。<br>搬家的时候，我做的玩具就装了3个大纸盒箱子。</p>
<p>&nbsp;&nbsp;&nbsp; 主要的就这么多，还有好多杂七杂八的东东。当时，我可以说是看见什么新鲜的就<br>想做。有一次在电视里看到缆车，觉得新鲜，就在卧室的床头拉了两根线，牙膏盒做车<br>身，纸筒作轴，串在线上，玩缆车。</p>
<p>&nbsp;&nbsp;&nbsp; 虽说是玩具，还真有派上用场的时候。有一天，我一个人在家里做东西。当时听见<br>一阵急促敲门声。因为以前爸爸妈妈告诉过我，自己在家的时候，无论谁来敲门都不<br>给开。所以，我就在屋里面不吱声。后来，门越响越厉害，我有点害怕了，在1分钟之内<br>，穿好了我的圣衣，戴上了飞镖，握着我的&#8220;八宝陀陀紫金枪&#8221;，在门口等着。只见一<br>个白色的铁片从门缝伸了进来，原来是在撬锁，真的是小偷哦。当时我兴奋极了（可能<br>有一点害怕），用我那时候的话说就是，我爆发了全部的&#8220;小宇宙&#8221;在门口等着最后的<br>决战。最后，还算那个小偷幸运，没撬开锁头就跑了。要是他真的进来了，肯定会死得<br>很惨的。哈哈。</p>
<p>标&nbsp; 题: 三水长大了——初中的我（上）<br>发信站: 未来花园 (2002年05月11日00:36:52 星期六), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 初中一年级上半学期，我开始正式接触（小学的时候用过AppleII，不过那个时候是<br>学校组织的班，去学也是瞎胡混，没什么收获）计算机了。因为爸爸用它来设计电路板<br>。刚开始是借的一台286（彩显、1MB内存、40MB硬盘），这样，晚上在家里也可以继续<br>干活了。爸爸没事的时候让我用GWBASIC编写程序，开始是照着书上做，后来自己编了一<br>些简单的东东。</p>
<p>&nbsp;&nbsp;&nbsp; 那时候，我刚刚接触计算机，再加上当时的软件问题还很多，而且英语也不好，<br>犯过很多错误。有一次，我着手编写一个背单词的软件，单词库有不到1000词，都是是<br>我用键盘一个一个辛辛苦苦敲进去的（当时的输入法不好用，再加上键盘不熟练，别提<br>多费劲了）。结果，一次编辑的时候，不小心把Load弄成了Save，整个单词库加程序全<br>都不见了（爸爸用undelete找也没找回来）。5555郁闷死了。这件事给我留下了深刻的<br>印象——血的教训啊。从那时候起就知道了（也养成习惯了）做东西要经常的备份，而<br>且一般都有两套以上的备份。直到现在我还是很谨慎的，每天做的东西都要备份到软盘<br>里，同时，上传到我们的文件服务器上；至少一个月刻一次盘保存我的工作成果，而且<br>，一次刻两张，放在两个不同的地方（防止一个地方着火或者地震什么的使我的工作负<br>之东流）。</p>
<p>&nbsp;&nbsp;&nbsp; 到了我初一的下学期（1993年3月），家里买了一台计算机。386DX-40，4MB内存 1<br>17MB硬盘，当时花了9000RMB——我的父母都是挣工资的，他们拿出了家里所有的积蓄还<br>向别人借了2000RMB才买的这台计算机。这台计算机一直伴随我渡过了初中时代，他的键<br>盘、显示器、机箱一直跟随我到大学，现在还在我的实验室里放着呢。</p>
<p>&nbsp;&nbsp;&nbsp; 有了自己的计算机以后，我开始重新建立我的单词库，用TC2.0重写背单词的程序。<br>到了我初二的时候，我有了win3.1（12张5吋盘），有了VB3.0（9张3吋盘），当时算是<br>比较新的软件了，从清华的一个亲戚那里copy过来的。因为相关书还很少，我和爸爸经<br>常的摸索着学习这样那样的东西。也是在那个时候，我养成了熬夜的习惯。有的时候，<br>为了调一个程序，经常熬夜到天亮。尤其是中考结束以后，经常的在计算机前面编程序<br>一编就是二十几个小时，可是却完全感觉不到累，乐在其中啊。</p>
<p>&nbsp;&nbsp;&nbsp; 初中时代的我就是和计算机做伴走过来的。所以，对同学们来说，我依然是那么孤<br>僻的性格，一放学就跑到家里和我的计算机作伴。</p>
<p>标&nbsp; 题: 三水长大了——初中的我（下）<br>发信站: 未来花园 (2002年05月11日00:43:23 星期六), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 也不知道是从什么时候开始，我就讨厌语文了（也可能是小学时候就有苗头了），<br>我学不好那个东东，尤其讨厌写作文。每次老师布置作文的时候，我都伤透了脑筋。主<br>要是因为那时侯我的胆子小、爱面子——其实现在也一样——怕把我写的东东给别人看<br>。可是，老师却偏偏对我很照顾，经常的把我叫到教研室去点评作文。可是，越这样我<br>越害怕。现在要是我的语文老师也上bbs，看到我会主动写这个东东，她老人家肯定不相<br>信自己的眼睛。呵呵。</p>
<p>&nbsp;&nbsp;&nbsp; 为这事，爸爸妈妈也为我操了不少心。他们反复的对我说，作文写出来就是给别人<br>看的，要是怕别人看，就不要写了嘛！听了这话，我明白了，所以，有的时候老师布置<br>作文，我干脆不写。哈哈。</p>
<p>&nbsp;&nbsp;&nbsp; 后来，爸爸妈妈改变了战术，要亲自督促我提高文学水平，每天晚上睡觉时，爸爸<br>都给我年成语字典伴我入睡。妈妈说是因为我看书看得太少了，就在假期里逼着我看小<br>说，我选了半天，挑了一本我觉得应该好玩的《西游记》，结果也是干干巴巴的看着，<br>算是应付了事，其实，大部分时间是在偷偷的编程序，那东东根本就没怎么看。呵呵。<br>所以，折腾了半天也没有什么成效。不过，这也是我长这么大唯一看的一部小说呢，很<br>有纪念意义吧。后来，妈妈说，我爸爸语文就不好，高考的时侯还是妈妈帮着复习的呢<br>，遗传了，没办法了。呵呵。</p>
<p>标&nbsp; 题: 三水长大了——高中的我（上）<br>发信站: 未来花园 (2002年05月12日00:08:48 星期天), 站内信件</p>
<p>&nbsp;&nbsp; 高中的我对计算机的热情有增无减。除了完成作业剩下的时间都花在了计算机上。</p>
<p>&nbsp;&nbsp; 当时因为不满足于VB所编的程序（主要是看不惯VB3.0编的东东拿出去用的时候都要<br>带一个vbrun300.dll文件，显得太不专业，呵呵），开始有用VC的打算。爸爸也很支持<br>我，四处打听哪里有VC。后来，终于托朋友找到了，爸爸拿了20张软盘去copy——那个<br>时候（1995年）光盘还没有普及，这么大型的软件也都是用软盘copy，一套VC1.0要20张<br>软盘呢（当时也不知道是什么版本的，现在回忆起来可能还是专业版呢）。copy VC的那<br>一天我记得清清楚楚，那是在我高一期中考试的第一天。当时在答语文卷子的时候我心<br>里还在惦记着VC，美滋滋的，越想越高兴，就算是有做不出来的题也丝毫不影响我的情<br>绪。呵呵，考完试了，便迫不及待的跑到家里，迎接VC的到来。</p>
<p>&nbsp;&nbsp;&nbsp; 结果，那次考试我的作文写跑题了，更确切一点说是根本就没按照题目写——作文<br>命题中给了一个题目，我没有看到，就随便写了一个题目。这样，我白白丢了60分。冤<br>枉啊，郁闷啊，上火啊，但是，当我坐在计算机前，用我的VC开始写程序时，什么伤心<br>的事情都忘了。呵呵。</p>
<p>&nbsp;&nbsp;&nbsp; 爸爸妈妈也没办法，见我这么痴迷于计算机，也很支持我。1996年初，我和爸爸来<br>到北京，在中关村准备买了一个光驱。当时，爸爸是出差来买元件的，我们跑遍了中关<br>村的电子市场——那是我第一次逛中关村。那时，家里也不富裕，我清清楚楚的记得，<br>为了买一个便宜切好用光驱我们挑了整整一天，从黄庄走到北大，最后，终于用780RMB<br>买了一个GlodStar四速光驱。我把这东东视为宝贝，几乎是捧回家里的。</p>
<p>&nbsp;&nbsp;&nbsp; 后来逐渐的，我有了声卡，解压卡（不知道有多少人用过这个东东）。在1996年秋<br>，花了3500RMB，把我的386DX-40升级成了P75，640MB硬盘，16MB内存。从此，我安装9<br>5，使用VC4.0、VC5.0。</p>
<p>&nbsp;&nbsp;&nbsp; 那个时候，编程序一直是我的最爱，因为我用VC又重写了那个被单词的软件，在家<br>里，我就用那个软件背单词。有什么Bug立即修改，我一个人既是开发者，又是用户，软<br>件上有什么不足随时修改。其实，大部分时间还是在编程序，说是背单词是在掩人耳目<br>罢了，省得家里人担心我不学习。呵呵。即使是在高三复习的时侯，我还是忍不住编上<br>一两个小时的程序，休息一下——这件事情爸爸妈妈都不知道呢。</p>
<p>&nbsp;&nbsp;&nbsp; 其实，编程序也有郁闷的时候，即使我是那么的热爱。因为我当时参考书少（我主<br>要看的就是那个《VC技术内幕》第一版的），也没有学过C++，直接上手，几乎什么也做<br>不了。犯过很多可笑的错误。当时，我郁闷的时候也没有BBS灌水，没有网络查资料，只<br>能看MSDN（当时还不叫这个，我觉得好像就是VC的help）和他的例子，再加上自己瞎胡<br>试；偶尔玩玩游戏散散心。我就是这么跌跌撞撞学了3年的VC，到高三，我总算可以运用<br>的比较自如了。</p>
<p>标&nbsp; 题: 三水长大了——高中的我（中）<br>发信站: 未来花园 (2002年05月13日00:19:56 星期一), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 我高二、高三的时侯，就有比较好的电脑游戏了。我在编程序郁闷的时候，也开始<br>玩游戏散心了。</p>
<p>&nbsp;&nbsp;&nbsp; 我玩的第一个即时战略游戏是C&amp;C（命令与征服），后来又试着玩过&#8220;红警&#8221;。不过<br>，我不是太喜欢玩这种游戏。另外，我在386的时侯，玩过DOOM II，感觉也不是很好。<br>因为也没有什么好游戏，只能拿它作消遣。总之，不管怎么样，我还是以遍程序为主，<br>这些游戏玩的断断续续的。</p>
<p>&nbsp;&nbsp;&nbsp; 在高考结束以后，我决定要找一个适合我的游戏，认认真真、痛痛快快的玩上一次<br>。看了当时的游戏排行榜，我毫不犹豫的选择了《仙剑奇侠传》（当时，我玩的就是98<br>版的）。我被他的细腻的情节深深地吸引了、打动了。那些迷宫啊什么的丝毫不会影响<br>我的热情。我花了2天的时间第一次玩通了这个游戏（没有修改），而且还因为我当时感<br>冒发烧了，被爸爸妈妈逼着上床休息了很长时间。&nbsp;&nbsp;&nbsp;&nbsp; 后来，又陆陆续续的玩通了这个<br>游戏几次。我上网（98年的时候，我在家里就可以拨号上网了，虽然有点贵），看到《<br>仙剑奇侠传》的讨论区，按照里面的好多&#8220;妙招&#8221;，又通关了数次，再加上后来在大学<br>里玩的几次，算一算共通关10次左右。我对《仙剑98》里的每一个迷宫，每条个叉道；<br>每一个场景，每一段音乐都很熟悉。我算是半个《仙剑》迷了吧，我现在的桌面是《新<br>仙剑》的里面灵儿的造型，手机铃声也是《仙剑》里的。</p>
<p>&nbsp;&nbsp;&nbsp; 从此，我就喜欢上了RPG游戏。尤其是东方的武侠RPG。我喜欢它的情节，喜欢玩游<br>戏时的感受。我甚至可以为主人公的得失或喜或悲。虽然，有的人说RPG游戏都是一个思<br>路——都是主人公从一个不知名的小卒，成长为一代大侠。但是，我喜欢的是玩游戏的<br>过程，因为小卒成长为大侠的过程永远是不同的。我们自己不也是如此吗？从一个无知<br>的孩子慢慢长大，每个人都有着不同的经历，最后，如果可以找到自己心目中的大侠的<br>位置，就算是一个完美的结局了。</p>
<p>标&nbsp; 题: 三水长大了——高中的我（下）<br>发信站: 未来花园 (2002年05月14日00:00:52 星期二), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 高中的三水没有谈过恋爱。不是老师不让——听说开家长会的时候，这种事情班主<br>任明确说过，他说爱情是伟大的，不想让家长太过操心，有的时候往往会起到反面作用<br>；不是父母不允许——爸爸妈妈从来没有问过我这种事情，甚至从来没有告诉过我什么是<br>结婚。我只记得小时候，我看电视问妈妈，什么是结婚。妈妈没有回答出来，让我问爸<br>爸，爸爸说：&#8220;结婚就是两个人在一起过&#8221;。这是我唯一的理解。一直到高中那个时候<br>，我还是这么认为的，其他的就什么也不知道了。</p>
<p>&nbsp;&nbsp;&nbsp; 我不知道为什么有的时候女生会很神秘开什么会，填写什么调查表之类的；不知道<br>为什么女生会有一些特殊的待遇；也不知道为什么我有的时候愿意接尽女生，愿意给女<br>生讲题。</p>
<p>&nbsp;&nbsp;&nbsp; 尤其是我们高一时候的班长，我对她很有好感。长头发、大眼睛，淑女的形象，都<br>是我很欣赏的地方。她每对我说一句话，每对我的一个微笑都令我回味无穷。但是，仅<br>此而已，当时，我不知道这是为什么，也不想有什么更多的行动。而且，她是市长的女<br>儿，可能离我有点遥远。现在想一想，可能这是高中里唯一令我心动的人。高考之前，<br>她被保送到了清华。当时，很多人对她指手划脚，因为是市长的女儿嘛，这种保送没有<br>完全靠自己的实力，有一点点不光彩的。但是，她在我心目中的形象还是改变不了。现<br>在，她成了我美好的回忆。</p>
<p>标&nbsp; 题: 三水长大了——我的爸爸（上）<br>发信站: 未来花园 (2002年05月15日00:03:32 星期三), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 爸爸是我最爱的人。我记事开始，爸爸就从来没打过我——虽然妈妈说，小<br>的时候爸爸打过我一次，还很重，屁股上的巴掌印子足足一个星期才下去，但是<br>我没有印象了。呵呵。</p>
<p>&nbsp;&nbsp;&nbsp; 在我的印象之中爸爸始终是我最亲近的人。有什么事情我都爱和爸爸说。从<br>幼儿园到高中每天发生的高兴的、不愉快的大大小小的事情可能我都和爸爸说过<br>。我也很喜欢和爸爸聊天，倾吐我的心事，感觉这个时候，爸爸就是我的知心朋<br>友，他会从朋友的角度鼓励我，帮助我。我和爸爸之间好像是同龄人，一点也没<br>有父子之间的带沟。</p>
<p>&nbsp;&nbsp;&nbsp; 我小学四、五年级的时侯，任天堂的8位游戏机开始兴起。个个游艺厅里常<br>常挤满了中小学生。那时，能拥有一个自己的游戏机是我的最大心愿了。可是，<br>当时的游戏机价格很贵，好像是300－400RMB——相当于爸爸一个月的工资。所<br>以，这对我来说可能是奢望。但是，爸爸真的满足了我的要求。而且毫不限制我<br>玩游戏的时间，甚至有的时候还鼓励我玩游戏，陪我一起玩。那个时代的几个经<br>典游戏我玩的都很不错。魂斗罗一代我可以不费一条命通关，赤色要塞我可以不<br>接关（就是不用Continue）通关，沙龙曼蛇一代我可以不调命通关。因为游戏已<br>经玩到了这种分上，也就没什么意思了，所以，平常上学的时候，我也不经常玩<br>游戏，更没有因为玩游戏而影响学习。</p>
<p>&nbsp;&nbsp;&nbsp; 爸爸一直很关心我的学习。从初中开始，爸爸就经常来我的学校，和我的老<br>师谈天了解我的情况和我的班级的情况。因为爸爸曾经也是中学老师，当过班主<br>任。有着丰富的教学经验，和老师有共同语言，很受老师的欢迎呢。有一次，我<br>们初中的校长（和爸爸是老朋友）看到爸爸说，应该在我们学校给你设一个办公<br>桌，你当顾问得了。呵呵。</p>
<p>&nbsp;&nbsp;&nbsp; 爸爸一直鼓励我学习新的东西。当其他的孩子还不知道计算机为何物的时候<br>。我就已经有了计算机了。当大多数编程人员还在用Borland C3.1开发DOS下程<br>序的时侯，我已经开始学习VC了。但是，所有的这一切，爸爸只是给我指引了学<br>习的方向，从来没有叫过我具体的东西——现在想一想也正是这样锻炼我的自学<br>能力，培养我对技术的灵感，现在我做什么新东西都可以很快上手。到了高三的<br>时侯，我对VC和Windows的了解程度已经超过了爸爸。那个时候，他和我说了好<br>多次，要拜我为师，学习开发Windows的程序。而且高考之后还和我合作开发项<br>目，他用单片机作底层的硬件，我做上位机的软件。那是我第一次和爸爸合作作<br>项目，也是最后一次&#8230;&#8230;</p>
<p>&nbsp;&nbsp;&nbsp; 现在想想，真后悔当初没有利用那段时间向爸爸学习硬件方面的知识，否则<br>，我的硬件也绝对不是现在的水平。</p>
<p><br>标&nbsp; 题: 三水长大了——我的爸爸（下）<br>发信站: 未来花园 (2002年05月16日00:06:14 星期四), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 1998年10月12日，一个我永远不能忘记的日子。那是我刚刚上大学的第二周。那天<br>晚上，妈妈来电话，说是爸爸病了，让我回去看看。我当时什么都没仔细想。不知道为<br>什么二姨、二姨夫从天津跑来北京，和我上火车，陪我回家；不知道为什么他们帮我请<br>假的时候，要把我支走。我就这样糊里糊涂的，上了火车。</p>
<p>&nbsp;&nbsp;&nbsp; 到了家里，我远远的看见了我家门口摆的的是花圈。家里面能来的亲戚几乎都来了<br>。这个时候，我什么都明白了——爸爸已经离我而去了。当时，脑子一片空白。我只记<br>得我一直在哭，是那种痛哭，抱着妈妈痛哭，撕心裂肺的痛哭。我不停的在咬自己，<br>用头撞墙，因为我相信这是一场梦，一场恶梦，我要快一点醒来，但是，毫无用处&#8230;&#8230;<br>然后，我干了些什么我都不知道了。</p>
<p>&nbsp;&nbsp;&nbsp; 我还能记清楚的一个场景就是妈妈要带我去看爸爸。妈妈告诉我，那种地方是不允<br>许苦的，更不能让活人的眼泪流在爸爸的身上。我答应了，我照做了。远远的，看见爸<br>爸躺在那里，那么的平静，像什么事请也没有发生一样。走近了，依旧是那么安详的面<br>容。我习惯的用手摸了一下爸爸的脸颊——小的时候经常这么做的，很喜欢这种感觉—<br>—但是，这最后一次，感觉完全不一样，爸爸的脸颊是硬的、冷的，这个时候我才回过<br>神来，这已经不是我的爸爸了，爸爸已经不在这个世界了。</p>
<p>&nbsp;&nbsp;&nbsp; 在那几天里，我几乎完全失去了思维，成了一个任人摆弄的木偶。在别人的操纵下<br>，烧纸、护送灵车、摔盆、装骨灰&#8230;&#8230;</p>
<p>&nbsp;&nbsp;&nbsp; 我当时唯一的感觉就是，生命如此的简单，如此的脆弱。前几天还给我打电话的爸<br>爸，今天却变成了一捧简单的无机物——英雄一世，到头来不过是一堆白骨。</p>
<p>&nbsp;&nbsp;&nbsp; 爸爸的一生平凡而又曲折。爸爸高中的时候，因为文革，错过了上大学的机会。爸<br>爸在工厂的第一线当过工人，当过泥水匠，做过木匠，在中学当过教师。后来，恢复高<br>考的时侯，爸爸考上了大学（爸爸上大学的时候我已经出生了）。毕业以后，一直在一<br>个研究所里工作。后来，又来到大学里做副教授。</p>
<p>&nbsp;&nbsp;&nbsp; 爸爸是我最敬佩的人。我佩服爸爸的专业水平，即使是现在也一样。爸爸是做工控<br>仪表开发的，搞电子电路的。老一辈的电子工程师和现在不同。他们精通模拟电路，不<br>像我现在想分析几个三极管还得想半天。在我的印象之中，凡是和电有关的事情，爸爸<br>都很熟悉。在工作之余，爸爸经常帮助亲戚朋友修理电器。在我的记得，爸爸帮朋友修<br>理好的电视机就有五个以上了。</p>
<p>&nbsp;&nbsp;&nbsp; 我尊敬爸爸，我仰慕爸爸的敬业的精神。我小的时候，爸爸每天晚上都很晚才睡觉<br>。现在想想好像是在捧着一本英文字典看技术资料。那个时候，我对技术问题没有概念<br>。我只记得有一次爸爸的研究成果（或者是设计的东西）通过了专家的鉴定，被评价为<br>&#8220;八十年代国际先进水平&#8221;。当时，我只觉得是一个这是一个极其光荣的称号。要么怎<br>么能连妈妈也都跟着骄傲呢。</p>
<p>&nbsp;&nbsp;&nbsp; 我上大学之后，爸爸的学校新成立了一个教研室，爸爸在那里作主任，其他的老师<br>都比较年轻，有的刚刚本科毕业，没有什么工作经验。所以，爸爸的工作很忙。听妈妈<br>说，那时候他经常工作到半夜2:00睡觉，而且第二天7:00就要起来继续工作——我这么<br>试过，如果是短时期内还可以承受，时间常了，连年轻人都受不了。可是，那时候爸爸<br>已经是49岁的人了。就这样，有一天，突然爸爸的心脏病发作，离我而去了。</p>
<p>&nbsp;&nbsp;&nbsp; 用妈妈的话说，爸爸这一辈子，不打麻将，不吸烟，不喝酒（少量的酒也是喝的，<br>但是，我从来没见到爸爸喝醉过），也没进过舞厅，最后，居然是干工作累死的。爸爸<br>热爱他的事业，最后，连他的生命都献给他的事业。这是怎样的感觉啊。</p>
<p>&nbsp;&nbsp;&nbsp; 爸爸的这种敬业的精神一直影响我到现在。当我想偷懒的时候，当我工作中遇到困<br>难的时候，想到了他，我又会有了十足的干劲儿。可以说，没有这种鼓励也就没有今天<br>的我。</p>
<p>&nbsp;&nbsp;&nbsp; 爸爸对金钱、名利看得很淡。爸爸在学校和外面企业合作做项目赚的钱统统给了学<br>校做新课题的研究经费。到了爸爸离我而去的那天，爸爸的存折上仅仅留下了3800RMB。<br>这就是他所有的积蓄了。爸爸的一生对自己都是那么的吝啬。最后，我和妈妈给爸爸收<br>拾东西的时候，我才发现。冬天爸爸连一件像样的大衣都没有（我家是东北的，冬天很<br>冷的）。</p>
<p>btw，事情过了这么长时间了，本来以为可以用一个平静的心态来写这篇文章，可是，写<br>的时候，心里还是好难受，泪水在眼睛里转了好几次了。所以，思路有点混乱，大家将<br>就着看吧。</p>
<p>标&nbsp; 题: 三水长大了——大学时代（一）<br>发信站: 未来花园 (2002年05月17日00:02:52 星期五), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 刚刚上大学的我就失去了最亲的人。我孤独，我痛苦。每次无意中听到有的小孩子<br>叫&#8220;爸爸&#8221;这两个字的时候，我的心里都是一阵痛。我怀念以前的日子，我怀念和爸爸<br>在一起的感觉。</p>
<p>&nbsp;&nbsp;&nbsp; 和同学在一起是我最轻松的时候，有的时候看着其他同学之间开着玩笑，我的心情<br>偶尔还能好一点，甚至笑一笑，但是，当我无意中一低头看到自己胳膊上的黑纱的时候<br>，我的笑容就会僵滞下来——其实，我这个人很爱笑的，连和人说话都是笑咪咪的。</p>
<p>&nbsp;&nbsp;&nbsp; 那是时候的我也知道我不能整天沉浸在痛苦之中，我还有妈妈要照顾。我不能让妈<br>妈担心我。我要让自己忙起来，忘了生活中的不愉快的事情。这时候，我又想起了我的<br>老朋友——计算机。因为当时我的宿舍没有机器，所以，我有空就去图书馆看相关的图<br>书。</p>
<p>&nbsp;&nbsp;&nbsp; 为了继续学习VC，我翻阅了各种期刊，把我认为重要的内容抄写在卡片上（那个时<br>候我刚上大一，学校上网的条件也不好，所以，只好选择了这种方法）。当时，我们学<br>校的图书馆与VC相关的书也不多，而且也不新，所以，我经常的出入附近的各种书店，<br>看到和VC相关的书就要看上一眼，见到有用的信息就抄写下来。当时因为没钱买书，经<br>常抄书，有几个个体书店的老板都熟悉这个整天抄书的家伙了，看到我一来抄书就把我<br>赶走。我没办法，当时觉得自己就是低人一等，失去了爸爸，我好像失去了一切。但是<br>，我不会放弃，我就厚着脸皮再换一家书店继续抄。抄到有用的东西以后就跑到学校的<br>机房里面去试。</p>
<p>&nbsp;&nbsp;&nbsp; 一个偶然的机会，看到了同学在玩文曲星里华容道的游戏。这就产生了用VC编写一<br>个华容道游戏的想法。从此，我编程序的动力更足了，抄书的目的更明确了，出入机房<br>的次数更多了。那个时候不懂得逃课，只有星期六、星期天才有大块的时间来调程序。<br>每个休息日我都会一天泡在机房里，因为机房不允许吃东西，每次我都是一个白天什么<br>也不吃，一口水也不喝。到了晚上回去，总是饿得头晕眼花的，然后，吃一包方便面把<br>肚子骗饱了就睡觉。</p>
<p>&nbsp;&nbsp;&nbsp; 可以说，大一的第一个学期就是在这种抄书和泡机房的日子中过来的。大一的寒假<br>回家，妈妈帮我把家里的计算机搬到了学校。虽然那台机器在当时就有点过时了，但是<br>，它至少可以跑98，运行VC，那时它可是我的宝贝。我的《华容道99》的游戏就是在那<br>台机器上诞生的。为了它，我吃了几乎一个学期的方便面和面包。这个软件我写了不下<br>2万行代码（不算注释），可以说编写这个软件使我受益至今，现在我用VC编写东西时，<br>好多代码都是从《华容道99》里直接复制出来使用呢。如果大家有兴趣我可以把它放到<br>我的ftp供大家下载，源代码也可以考虑公开。呵呵。lenber别怪我在这里做广告啊。</p>
<p>标&nbsp; 题: 三水长大了——大学时代（二）<br>发信站: 未来花园 (2002年05月18日00:02:35 星期六), 站内信件</p>
<p><br>&nbsp;&nbsp; 爸爸是因为心脏病离我而去的。也许是心理作用，也许是那时候太累了。我总觉得<br>自己的心脏也有问题，有的时候就是胸口闷闷的，好难受。但是，我也不能告诉妈妈，<br>因为妈妈一直在担心在我的身体。看着爸爸的事情对妈妈的打击那么大，甚至比对我的<br>打击都大。那个时候的我就一直在想，为了不让&#8220;历史重现&#8221;，为了不伤害其他人，我<br>决定不找女朋友了，能一个人陪妈妈到最后，我就算心满意足了。别笑话我，当时确实<br>是那么想的，现在还有一点点这个想法。可是每次说出来，妈妈都生气。</p>
<p>&nbsp;&nbsp;&nbsp; 虽然，我很喜欢计算机，把它作为我生命总的一部分。但是，可能是老天有意安排<br>。因为高考考分不够，上大学的我并没有学习计算机专业。刚上大学的时，我因为这个<br>有点失望，甚至痛恨自己高三的时候为什么不能少编程序，多学习，考一个高分。不过<br>，一个偶然的机会我突然注意到，我学的这个专业和电工电子相关，这不正是爸爸当年<br>研究的方向吗？从此以后，便产生继承父业的想法。</p>
<p>&nbsp;&nbsp;&nbsp; 大二的寒假回到家里，我把爸爸当年搞硬件的几乎所有的工具和电子元件都翻了出<br>来。一样一样的的整理着。4把25瓦的电烙铁、一个旧得不能再旧的有标卡尺（精度0.1<br>mm）、一个5V 7A的开关电源、一把可能跟随了爸爸10几年的剥线钳子、一个工具包还有<br>大大小小的一些电子元件（当时，好多我都不认识）。我把这些东西带到了学校。这是<br>我学习硬件最初的资本。从小，我就很喜欢看爸爸调硬件，虽然只是看，那些工具对我<br>来说已经很眼熟了，看着它们是那么的亲切。而且，我还经常说，这是我的宝贝，是祖<br>传的工具。想当年，爸爸用他们攻克了很多技术难题，如今他们传到了我的手上似乎也<br>很得心应手呢。我用他们来调试硬件，总是那么的顺利，好像他们真的有灵性一样。现<br>在连我们实验室的师兄都知道这事儿，经常对我说，把你祖传的什么什么东西借我用一<br>下。呵呵。</p>
<p>&nbsp;&nbsp;&nbsp; 爸爸从来没有教过我硬件方面的知识，但是，他经常在家里做项目，我总是很喜欢<br>看。我喜欢靠在爸爸的肩膀上，看爸爸用tango（一个及古老的软件）设计电路板；看爸<br>爸用汇编编写和调试单片机的程序。可能就是受这种环境熏陶的时间长了吧，我对整个<br>硬件的设计过程都有一个感性的认识。我刚开始接触单片机，学习51的汇编编程的时候<br>很容易就上手了。</p>
<p>&nbsp;&nbsp;&nbsp; 说到这里，还要感谢我大学的班主任，他就是搞单片机出身的，那个时候很支持我<br>，为我搞硬件提供环境，提供仿真器还有技术支持。当时，我就是在第四管（教学区3号<br>教学楼后面原来的一个3层小楼，现在拆掉了）的一个实验室做东西。当时，我对单片机<br>开发实在着迷，没有课的时候，我就整天泡在那里。甚至，我把整个&#8220;宿舍&#8221;都搬过去<br>了。那里有台灯、有暖瓶、有饭盒、有吃的、有洗漱用品。晚上累了我在那里睡觉——<br>随便找一个大桌子，不脱衣服，躺下就睡，夏天的时候还有凉席。有一段时间，我有几<br>个月都没回宿舍睡觉——那个时候，就是那么不注意身体（虽然好多朋友提醒过我），<br>因为破罐子破摔嘛，反正当时觉得，无所谓的，自己又不想活多久，除了妈妈，我也没<br>有什么好留恋的。</p>
<p>&nbsp;&nbsp;&nbsp; 那个楼晚上要锁门的，早晨8:00才能开门。为了早晨出操不迟到，为了赶上第一节<br>上课。我找到了一个出楼的捷径——从二楼靠着女厕所的阳台上，顺着排水管道爬下去<br>。就这样，我几乎爬了三个月，爬坏了1双皮鞋，刮坏了2条裤子，因此，也连就了一身<br>飞檐走壁的本领。早晨，经常有来到教学区跑步的人，看到总是有个哥们从楼里往外爬<br>，开始，还很好奇的一个劲的看我，时间长了他们也就见怪不怪了。呵呵。现在想想还<br>真有意思，真是怀念当年爬楼的感觉啊。可惜，现在那个楼拆了，想照一个照片，留个<br>纪念都没有机会了。</p>
<p>标&nbsp; 题: 三水长大了——大学时代（三）<br>发信站: 未来花园 (2002年05月19日00:23:32 星期天), 站内信件</p>
<p>&nbsp;&nbsp;&nbsp; 大三刚刚开始，因为我有单片机和VC的基础，一个偶然的机会。我进了实验室，帮<br>师兄做项目——就是我现在呆的这个地方了。现在想想，自己确实很幸运，那个时候就<br>可以接触到实验室里很多高水平的博士、硕士。而且，老板也很重视我，对我做项目时<br>提出的一些想法也相当的信任，一点也不会因为我是一个本科生而小看我。</p>
<p>&nbsp;&nbsp;&nbsp; 大三的下学期开始，在老板的资助和鼓励下开始做一个项目，准备参加冯如杯。具<br>体是什么项目在这里就不说了，可能会暴露身份，呵呵。总之，当时对我来说是一个相<br>当有挑战性的项目，时间紧，任务重，我的技术水平也有限。在着手做这个项目之前，<br>我只能说是尽力而为，根本没有把握做出来。经过了近一个学期的努力，排除了相当多<br>的困难，最后，终于成功了。当时，我觉得自己很幸运，因为有些问题的解决完全是凭<br>借灵感和运气，好像是有老天爷在帮忙一样。这样一个令我满意的作品去参加冯如杯，<br>不拿一等奖才怪呢——呵呵，当初就是这么一个想法。</p>
<p>&nbsp;&nbsp;&nbsp; 然而，上天却偏偏愿意捉弄人，冯如杯评选结果出来了，全校10个一等奖的作品，<br>没有我。得到这个消息以后，我简直不敢相信，这真是做梦也没有想到过的结果。我太<br>失望了，我太高估自己了。当时，我的心都碎了，当一个人最大的优点被别人彻底的否<br>决了，这种是怎么样的一种感觉呢？我所有骄傲的资本，所有的精神支柱，所有的学习<br>和工作的勇气都没有了。我甚至没有勇气继续生活下去。我含着眼泪，整理了我那个项<br>目的所有的开发文档和源程序，刻到光盘里，并且加了密，把那个10位密码分成两部分<br>，告诉了我的两个最好的朋友。然后，我的任务就是选择一条路，离开这个世界。选择<br>什么途径呢？毕竟以前没有调查过这方面的事情，我当时能想到的就是：上吊——我生<br>下来的时候就没有被勒死，所以，这次希望不大；吃安眠药——万一被救活了，容易留<br>下后遗症，甚至变成傻子，活受罪；跳楼——主楼似乎还够高，不错的主意&#8230;&#8230;这时，<br>我的两个好朋友早就猜透了我的心思。他们花尽了功夫来劝我。sigh!毕竟是知心朋友，<br>他们知道什么对我来说是最重要的——我的妈妈。我的妈妈以后怎么办？是啊，我想得<br>太简单了，我在爸爸的骨灰前发过誓，我要好好的照顾妈妈。可如今呢？我就这么走了<br>，就这么不负责任的走了？不行，我没脸去见爸爸。为了妈妈我也要活下去。（现在写<br>着写着都觉得可笑，当时怎么就会有那种想法呢？）</p>
<p>&nbsp;&nbsp;&nbsp; 就这样，我在痛苦中度过了一个星期。这一个星期我什么都没干，唯一的任务就是<br>躺在床上睡觉，几乎24小时都在睡觉，睡醒了也就是在床上躺着看这天花板发呆，然后<br>继续睡觉。这7天，我可能也就吃了3、4顿饭，还是别人帮我买了在床上吃的。也就是说<br>，那几天，除了上厕所，我根本没离开过床。睡觉是一个好办法，可以使痛苦的心情在<br>睡眠中度过。</p>
<p>&nbsp;&nbsp;&nbsp; 期末考试以后，我收到了一个同班同学发来的Email。那天是我的生日，她在祝福我<br>的同时也开导我，给我讲她受挫折的故事鼓励我。我们从此通过Email建立起了友情，我<br>又多了一个知心朋友。这时候，我才明白，朋友的重要性。我后悔，以前把时间完全花<br>费在技术上，只会一个劲的的工作，&#8220;和一台机器没有什么分别&#8221;（这是Cat说的，引用<br>一下），而且，当别人说你这台机器生产出来的是废品的时侯，你就报废了。但是，我<br>是人，我来到这个世界上享受阳光、享受亲情、享受友情。从此，我的心情好起来了，<br>而且我学会了珍惜友情，我真心对待我的每一位朋友。</p>
<p>&nbsp;&nbsp;&nbsp; 上天真的是对我不薄。在我经历了痛苦，学会了珍视友情以后，通过另外一个机会<br>，使我得到了比冯如杯一等奖更高的荣誉。我的项目没有白做，我的心血也没有白费。<br>真想不到，黑暗和光明就差这么一步。只要在黑暗中坚持下来，迟早会得到光明。</p>
<p>&nbsp;&nbsp;&nbsp; 说到这里，我插一段。看到我现在的妮称了吗？&#8220;突破叹息之墙&#8221;，看过圣斗士的<br>人都知道，冥界和极乐净土之间最大的阻碍就是&#8220;叹息之墙&#8221;。仅仅是一墙之隔，他们<br>的差别又是那么的大。在我们痛苦时候，我们遇到挫折的时侯，可能我们已经到达了&#8220;<br>叹息之墙&#8221;的墙根了。只要我们集中所有的力量，坚持到底，&#8220;突破叹息之墙&#8221;我们就<br>会到实现我们的理想。同时，突破的过程是艰难的，是要付出重大牺牲的。</p>
<p>&nbsp;&nbsp;&nbsp; 把话题扯远了，本来&#8220;突破叹息之墙&#8221;是想单写一篇文章的。在这里偷懒了。lenb<br>er不会怪我吧？呵呵。现在的三水大学时代就要结束了。在这四年里，我经历了很多，<br>也确实成熟了很多（虽然在某些人眼里我还是一个孩子，呵呵）。但是，大学时代的三<br>水依旧没有谈过恋爱，人生不完整啊！呵呵。<br></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:08 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125225.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>林锐-大学十年</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125224.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:07:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125224.html</guid><description><![CDATA[<p>大学十年<br>原创作者：linrui 来自Sawin系统分析之窗<br>最后修改时间：2005-2-24</p>
<p>　　写此文使我很为难，一是担心读者误以为我轻浮得现在就开始写自传，二是担心朋友们误以为我得了绝症而早早留下遗作。<br>　　不论是落俗套还是不落俗套地评价，我在大学十年里都是出类拔萃的好学生。并且一直以来我对朋友们和一些低年级的学生们都有很大的正面影响。这十年是一个从幼稚到成熟的过程，交织着聪明与蠢笨、勤奋与懒散、狂热与怯懦、成功与失败。做对了的事可树立为榜样，做错的事可挂作为警钟。我写下经历与感受，期望以此引导和勉励无数比我年轻的学生们。我资历尚浅，既没有哲学家的深遂，也没有诗人的风华，不足以堂皇地育人，只能讲一些故事以表心愿。<br>　　我出生在1973年的春节，属牛，是&#8220;牛头&#8221;。父母为我起了很好听的名字叫&#8220;林锐&#8221;。这暗示着上天对我别有用心，将降大任于我，可是这时候上帝去了一趟厕所。天堂与人间的时差如此之大，就在上帝大小便的几分钟内，我混混沌沌地度过了童年和少年，天才因此成为凡人。<br>　　我小时候生长在浙江黄岩的偏僻山区。父母都是中学教师，由于山区师资缺乏，父母经常要从一个山头调到另一个山头教学。我换读过的小学的数目比我的年龄还大，没有伙伴，也没有家的概念。我就象活在货郎担里的小鸡，缩成一团，在高兴或恐惧时至多&#8220;啾&#8221;&#8220;啾&#8221;地叫几声。我在读小学与初中的8年里，既不聪明活泼，也不调皮捣蛋，确切地说象块木头，简直是我名字的反义词。在学习上我没有受过一次表扬，也没有任何值得留念的人或事。唉，无论我现在多么努力都已无法追回失去的8年金色年华，好心痛！<br>　　我草草地并且稀里糊涂地在13岁时从初中毕业，无处可去。这下我发慌了，开始渴望学习。我灰溜溜地离开山区，可怜巴巴地到一个比较好的乡下中学重读初三。我勤快得早晨4:30就起来读英语，脑袋似乎也被吓开窍了，&#8220;数理化&#8221;学得很好，并且生平第一次在物理考试中得了满分。当我&#8220;再一次&#8221;从初中毕业时，我以全校第一的成绩考入了黄岩中学读高中。<br>　　黄岩中学分农村班与城市班，我当然是农民阶级。&#8220;阶级区别与歧视&#8221;对我是相当有促进作用的。我连任了几年的卫生委员，星期六和星期天同学们习惯地把活留给我，我这小官当得有滋有味。《物理》学得极好，有一种直觉帮我快速准确地解题，常常是老师刚把题目写完我就报出答案来。上物理课时我没法讲废话，因为我一开口就是标准答案。<br>　　可惜我的文科成绩极差。那时期盛传&#8220;学好数理化，走遍天下都不怕&#8221;，我们年少不懂事，糟踏了学文科的好时光。我写作文的最高目标就是不逃题，考试前我总是反复祈祷：我没干过坏事，保佑我作文不逃题吧！历史考试时填写&#8220;任课老师某年某月某日在我家乡英勇就义&#8221;，比谁的成绩更接近零分。更让我沮丧的是，这些行径都不是我发明的，我顶多是个跟屁虫而已，一点回忆的自豪感都没有。<br>　　我现在认为文科教育实质是素质教育，如果素质不高，男孩再聪明也难以成大器，当然也难以吸引好女孩。<br>　　高考时我语文得了54分（是班里的中上水平），总分只比重点线高十几分。我不敢报考好地方，只好选择内地。选来选去觉得西安与成都两个城市还不错，我拿把尺子在地图上一量，发现我家乡离西安的直线距离较短，于是就选了西安。老师们只听说过西安交通大学比较有名气，但谁也不了解。我以为在西安交通大学是学习开火车、开轮船的，尽管我也很渴望能开车开船，但考虑到自己的身材单小，就忍痛割爱了。我觉得西安电子科技大学的名字很好听，符合我做科学家的梦想，于是就报考西安电子科技大学（以下简称西电）技术物理系。<br>　　上帝精神拌擞地从厕所回来，发现我已经上大学。也许他原先想把我安排在清华或者北大的，但事已至此，干脆也就撒手不管了。他这一偷懒反而是好事，我在读大学的十年中自由发展，成了卓而不群的学生。<br>　　刚进西电，首先吸引我的是麻雀和馍。那麻雀滚圆滚圆的，简直是会飞的肉弹。它们不怕人，成堆聚集吵闹，常让我误以为是没有人管教的一群小鸡。那馍又白又大，既不放盐也不放糖，既不象馒头也不象包子。馍凉了后贼硬，据说有同学被楼上扔下的半块馍砸中脑袋，当场长出一个&#8220;肉包子&#8221;。最好笑的是人们把&#8220;馍夹肉&#8221;叫成&#8220;肉夹馍&#8221;，那东西实在好吃。<br>　　西电原是军校，作风严谨，校园并不华丽，生活有些单调。尽管我来自山清水秀的地方，可我的确喜欢西电的粗犷与憨厚。有一天我看到一个新生写的很肉麻的赞美西电的大字报，有一句是&#8220;我踏上了东去的列车&#8221;，我不禁笑掉牙。这一笑意味着&#8220;大个子欺负小个子&#8221;历史的结束，&#8220;小个子欺负大个子&#8221;新纪元的开始。<br>　　上大学的第一个学期刚好碰上美国打伊拉克（&#8220;沙漠风暴&#8221;行动）。那时全国都在谈电子战，我们全校都是研究电子的，而且以军事应用为主。在那种气氛里，同学们都有很强的使命感，并且被鼓动得信心十足。一日，系主任视察早读，偏偏有同学迟到。系主任喝问：&#8220;你为什么迟到了？&#8221;<br>　　&#8220;因为我来迟了，&#8221;同学毫不含糊地回答，昂然入座。<br>　　那时候的学生充满了理由。我在班里年龄小个子也小，上课时就象猩猩堆里的猴子那么显眼。由于我们是物理系学生，第一学期的《普通物理》课程就显得非常重要。系副主任给我们上课，他长得象叶利钦，口若悬河，板书极快。象在高中上物理课那样，我常在&#8220;叶利钦&#8221;刚写完题目时就报出答案。开头几次，&#8220;叶利钦&#8221; 满脸疑狐地扫视我们，好像是要抓住拔掉他自行车气门芯的那个捣蛋鬼。后来他在第一排发现了我，我俩乐得裂了嘴。课间休息时，&#8220;叶利钦&#8221;常坐在我旁边，乘他给同学们答疑时，我就用笔拔弄他硕大无比的手指，在他指甲上涂点什么。<br>　　在第一学年，我就象乱草丛中的野花那样脱颖而出，倍受老师和同学们的关怀。就在我光荣到感觉屁股都能绽放光彩的时候，发现了令我胆战心惊的学习缺陷 ——不会做实验。一进实验室，我就束手无策，浑身发抖。我相信大一的学生们都有虚荣心，为了维护&#8220;最聪明&#8221;这个荣耀，我完全可以掩盖、躲避甚至偷偷地弥补实验能力的不足。<br>　　我做了一件了不起的事：为了对抗虚荣的引诱，我夸大其辞地把&#8220;缺陷&#8221;告诉每一个我认识的人，让我没有机会欺骗自己。聪明的人并不见得都有智慧，他可能缺乏&#8220;真实&#8221;这种品质。虽然我是在硕士毕业的时候才立下誓言——&#8220;做真实、正直、优秀的科技人员&#8221;，但我在18岁的时候就已经做到了&#8220;真实&#8221;，我必定一生保持。<br>　　第一年暑假回家，得到一个惊喜：家里竟然有了电路实验室！<br>　　因为我常在信中鼓吹自己实验能力何等之差，&#8220;长此以往，下场将极为悲惨&#8221;。父母经不起这种&#8220;恐吓&#8221;，当英语教师的父亲将半年的工资连同&#8220;私有财产&#8221;全部捐出，每周到很远的商品交易市场购买电子元件以及器材，在家里建立了实验室。父亲很威严，我从小就怕他，但那个暑假我一点也不怕他。我们一起做实验，都从零学起，话不投机就用电烙铁&#8220;交流&#8221;，完全是同事关系。后来，我的兴趣转向了计算机，家里的实验室就由父亲独掌，继续发扬光大。现在父亲修理电器的水平在家乡远近闻名，学生们都忘了他是英语教师。<br>　　母亲是数学教师，年轻时略有姿色，智力远胜我父亲。当她与他在山头的学校里相遇时，他一顿热情洋溢的饭菜就把她缴械了。我小时候家里很贫穷，家就象一条飘荡的小船，父亲划桨，母亲掌舵。当我6岁上学时，母亲就说：&#8220;儿子啊，你将来只能靠笔吃饭而不能靠锄头吃饭。&#8221;小时候，母亲怕我变狡诈而不允许我学下棋。尽管我在大学里已经相当出色，母亲来信总不忘叮嘱&#8220;德智体全面发展&#8221;。她常用独特的方式检查我：<br>　　（1）看我是否变胖。如果我胖了，表明我懒了。因为勤奋的人没有理由变胖。<br>　　（2）看我说话是否还快。如果我说话慢条斯理，表明我变笨了。因为脑子灵活的人没有理由说话不快。我读博士研究生时，母亲的眉头才舒开。她经常在师生中发表自由言论：&#8220;儿子的智力与性格完全是我遗传的，他爸毫无半点功劳。&#8221;　<br>　　本科第三学期的主要课程是电路分析。电路题目常常很滑稽，当你满头大汗地解完方程式时，答案往往是零。我归纳了不少公式用于简化计算，所以照样能在老师画完电路图时报出答案。学习是如此的轻松以致于我有太多的课余时间。在课余我常做两件有意思的事：<br>　　（1）我为学习较差的十几名同学办了补习班，给他们讲课，改作业，出考题。我就象老母鸡那样看护着一群小鸡，使班长、学习委员等班干部形同虚设。我这样做既提高了自己的表达能力，又帮助了同学。这事不是老师叫我干的，是我自己的主意。<br>　　（2）我经常在宿舍里焊接电子线路，技艺渐精。我曾花了两天时间，把磁带盒做成能发声、发光的精美礼物，乐颠颠地送给一个女孩子。可惜不久后我迷上了计算机，从此再也没亲手做过好玩的东西。<br>　　上大学以前我根本没见过计算机。在第四学期时我遇到了十年来最敬爱的老师周维真，从而对编程产生了强烈的兴趣。他教我们Fortran语言， Fortran语言本身对我没有影响，影响我的是周老师高尚的师德以及他在教学和科研中的敬业精神。我从他那里学到的是怎样做人，怎样做事。<br>　　很多计算机系老师改作业时喜欢打&#8220;&#8730;&#8221;或打&#8220;&#215;&#8221;了事。周老师不仅把作业里的错误都找出来，而且逐一评注&#8220;好在哪里&#8221;和&#8220;差在哪里&#8221;。为了不让周老师过于劳累，全系同学有一个约定：上课时不准吵闹，否则别来；作业必须清楚，否则别交；提的问题必须有质量，否则闭嘴。<br>　　Fortran语言期末考试，我的卷面成绩是97分，有个女同学考了99分。我当时官为课代表，想不到被一个女生超过，甚为沮丧。可是报到系里的成绩单上，我的成绩是99分，那个女同学是97分。我以为周老师搞错了，跑去问他。周老师笑笑说：&#8220;你平时的学习表现，该得满分。不能因为考试中的一个失误而打击你的积极性，所以给你加２分作为鼓励。而她一上机就束手无策，要让她知道考试成绩高并不表示已经学好了，扣她2分以示警告。你本来就是第一名。&#8221;这时又跑来一个&#8220;查&#8221;成绩的同学，他得了59分，哀求周老师让他及格。周老师说：&#8220;你的试卷我看了好几遍，的的确确是59分。而你平时的学习表现也不会超过 59分。这一分不能加，否则我会害你一生。&#8221;<br>　　在我这一级（90级），周老师至少为技术物理系教出两名软件高手——我和马佩军。我和马佩军读到硕士时已在软件方面雄霸西电，计算机系学生毫无翻身之望。由于马佩军不好名利，风头让我一人独得。我离开西电数年后，余威尚在。可惜我和周老师相处不到一年，他便调到北京信息工程学院。然而师恩的厚薄不在于时间长短，好的老师会让人想念、感激一辈子。<br>　　在上大学的前三个学期，学习如同表演，有趣而且轻松。自从第四学期学习了计算机课程，我就有了新的追求，我多么渴望拥有一台计算机，可以天天编程。如果挨一个巴掌能换取一分钟上机时间的话，我愿意每天挨1440个巴掌。如果非得加上一个期限不可，我希望是一万年。<br>　　我本科的专业是半导体物理，一二年级由系里负责教学，三四年级由微电子所负责教学。在第四学期末，我央求系里把我推荐到微电子所参加科研，贾新章教授&#8220;收留&#8221;了我。我踏进微电子所的那一脚，让我从纯粹学习转向了科研，从&#8220;高分低能&#8221;转向了&#8220;低分高能&#8221;。<br>　　我终于有了一台286电脑，那个暑假我就睡在实验室里，时时刻刻守着它，深夜里我一个人冲着它发笑，一会儿盖上布，一会儿掀开布，一会儿摸摸它的&#8220;脸&#8221;，一会儿理理它的&#8220;辨子&#8221;。我很快地完成了任务：设计一个&#8220;立方运算&#8221;的模拟电路，并且学会了C语言。<br>　　西电有个好传统，每年冬季举办一次全校性的&#8220;星火杯&#8221;学生科技作品竞赛。每届都有六七百件作品展示，低年级的学生看后无不热血沸腾，跃跃欲试。我很希望能独立开发一套软件，参加本届&#8220;星火杯&#8221;竞赛。贾新章老师是研究集成电路可靠性的，见我如此热切，就让我开发&#8220;集成电路可靠性分析软件&#8221;。我开始一边研究数值算法，一边设计软件。从炎热的8月份到发冷的十一月，几乎天天通宵编程，程序很快增长到一万多行。在离竞赛还剩一个月左右的时候，出现了大量的问题。不仅程序老是出错误，而且发现原先的算法并不有效。此时已经没人能够&#8220;救&#8221;我。贾老师不会编程，不知道问题究竟出在程序上还是出在算法上（实质上两者都有问题）。而那些懂软件开发的年青教师，实在看不明白我的上万行程序是如何组织的。他们只能悲伤地看着我挣扎。由于我经常逃课，好学生变成了坏学生。系里意见极大，贾老师十分为难。不少老师和同学劝我赶紧&#8220;改邪归正&#8221;，放弃项目，不值得因小失大。<br>　　当时我有个无法动摇的信念：如果放弃一次，那么碰到下一个挫折时我就会继续放弃；如果坚持而成功，那么碰到下一个挑战时我会激励自己再取成功。<br>　　在压力面前，我依然坚挺。每当略有进展时，心里就一阵狂喜，但很快又会碰到新的困难，有时一坐就是20个小时。每天在喜悦的颠峰与苦恼的深渊之间反复折腾。在竞赛前两天，我终于成功地完成了软件研发，结果获得软件与论文两个二等奖。这个荣誉本身不值得一提，并且我付出很重的代价——对物理专业失去兴趣而彻底抛弃了它。但那时我才19岁，在极限状态下，我磨练了意志，使我日后充满激情。<br>　　在本科四年级，我认识了微电子所的郝跃老师。他是数学博士，是微电子所最有才华、最潇洒、最有领导风范的青年学者。我常去向他请教数学问题，他讲得意气风发，我听得如痴如醉。我俩一个月的&#8220;交流量&#8221;很多硕士花一年时间也得不到。有一天，郝老师说：&#8220;你做我的学生吧。&#8221;我就毫不迟疑地从贾老师门下&#8220;跳槽&#8221;到郝老师门下。郝老师后来是我的硕士导师，他高兴时喜欢说：&#8220;好，很好，非常好！&#8221;我看着他升教授，升博导，升副校长，师生两人分别在各自的阶层中名声显赫。<br>　　在三四年级，我的专业课程没有一门及格过。但由于微电子所的老师们已经认可了我，就把我的卷面成绩作为及格线，&#8220;水涨船高，水落船底&#8221;，我对同学们的帮助莫大于此！如果要我考研究生，我绝对考不上。系主任安毓英觉得我将来很有前途，于是不顾别人反对，一锤定音让我免试读硕士研究生。<br>　　读硕士研究生时，我的科研条件相当好。导师十分开明，任我自由发展。我最喜欢做的事是设计图形用户界面和开发数据可视化软件。图形软件的最大魅力是即便它毫无用处，你也可以自我欣赏。总有人担心&#8220;花很多精力、物力让界面那么漂亮，图形那么逼真是否值得？&#8221;这种问题不能强求别人与你一致。我当时赞美女孩子的最高境界就是把她和我的图形软件相提并论。我喜欢设计用户界面是因为自己有相当好的美感。在读本科时我模仿过六七个流行软件的界面。那时期大家编程都用Turbo C 2.0，我伪造了一个&#8220;Turbo C 2.6&#8221;。有个北大的博士生来实验室参观，看&#8220;Turbo C 2.6&#8221;后对我导师说：&#8220;郝老师，你们的工具比我们的先进多了&#8221;。<br>　　我常常向同学演示、卖弄自己开发的软件。觉得还不过瘾，就写了一篇名为&#8220;用户界面设计美学&#8221;的短文。凡是路过我实验室的同学都被我逮住，被迫听完我得意之极的朗读，茫然者与痛苦者居多。不久我的朗读便所向披糜，闻声者逃之夭夭。这篇文章我6年后照搬到博士学位论文中，可见当初写时的确有所&#8220;超前&#8221;。<br>　　我的研究工作基本上以集成电路的数值计算为主，数值计算产生的一堆数据常把我搞得晕头转向。我发现用图形来表征、解释数据可以让自己不再迷糊下去，那感觉就象刚睡醒时冲凉水一样。我硕士学位论文中的软件就是用图形来仿真集成电路生产过程中&#8220;缺陷&#8221;对成品率的影响。我并不是在看了学术论文后才开始研究可视化技术的，我是在做了工作后才发现那些好玩的技术叫做&#8220;可视化&#8221;。由于我肚子里头的确有货，在硕士一年级，我没有使用&#8220;剪刀&#8221;与&#8220;浆糊&#8221;（这是很多人写书的法宝），只化了三个月时间就写完第一本著作《微机科学可视化系统设计》。<br>　　我在读硕士期间的工作强度与本科时的相当，但工作方式有很大不同。我有了明确的目标：（1）开发自主版权的软件产品；（2）培养做领导的才能。这个目标可以通过团队工作，参加全国性大学生科技竞赛而实现。<br>　　我在西电成立了&#8220;可视创意软件小组&#8221;，马佩军、戴玉宏、马晓宇是我的主要技术伙伴，帮手很多。有几个漂亮的女生负责宣传（有一个长得像孟庭苇）。办公室里贴满了标语，如&#8220;创造性的事业要靠激情来推动&#8221;，&#8220;生于忧患，死于安乐&#8221;，&#8220;让春天消失&#8221;。还有大幅的&#8220;作战图&#8221;，倒计时牌。每个伙伴写了一张&#8220;军令状&#8221;放在机器上，我迄今还记录着那些纯真、活泼、充满激情的文字。那是多么艰苦而幸福的日子，夜里放震耳欲聋的音乐、咬尖辣椒提神，有伙伴累得蹲在厕所里睡着了。<br>　　在1994年和1995年的冬季，我们的软件作品分别获中国大学生应用科技发明大奖赛二等奖和全国大学生&#8220;挑战杯&#8221;学术科技作品竞赛二等奖。在西北地区，我们是&#8220;老大&#8221;。我成了西电学生的榜样，仰慕我的学生有一大批，我刚到浙大读博士时，收到一个西电计算机系学生的信，他说：&#8220;你走了，我呆在西电没有意思，我准备考浙大的硕士生，你到哪里我就跟到哪里。&#8221;<br>　　在硕士毕业前，我在鉴定表上这样写道：&#8220;我热爱科技事业，如同热爱生命一样。近5年的科研工作带给我最充实的生活，也寄托着我美好的向往。可我同时也感到了痛苦，因为5年来我耳闻目睹科研中太多的弄虚作假。我发誓做一名真实、正直、优秀的科技人员，以正身自勉。&#8221;<br>　　我在西电度过了幸福的6年半，最让我牵肠挂肚的是&#8220;吃&#8221;、&#8220;友情&#8221;和&#8220;爱情&#8221;。<br>　　当我第一次吃红红的和青青的辣椒时，&#8220;感动&#8221;得满脸是泪，那滋味让我觉得前17年白活了。我在读硕士时已经能自力更生，我开发的软件不仅竞赛获奖争了名气，而且还挣了钱（卖了二十多份软件，平均每份挣500元）。写书得稿费7000元，那时我简直就是富翁。这些钱的小部分用来给女孩子买礼物，大部分用于和与哥儿们吃香的喝辣的。<br>　　我相信自己已经尝遍了西安的小吃，并且发现了一个&#8220;秘密&#8221;：最好吃的东西都在地摊上，最香的东西一定是辣的，最辣的东西一定是香的。曾经沧海难为水，我在浙大的三年里很少再吃辣椒，因为怕它玷污我心目中的辣椒。在我小时候，我爸很讨厌土豆（在困难时期他吃了太多的土豆），他竟然因此不让我吃土豆。我哪敢跟他论理，于是忍啊忍，一直忍到我上大学&#8220;远走高飞&#8221;。如果说辣椒是我新交的女朋友，那么土豆就是我天生的命。我在西电经常用电炉（从来都没被抓住过）做&#8220;以土豆为核心&#8221;的菜，天长日久，朋友们干脆叫我&#8220;土豆&#8221;。&nbsp; <br>　　我吃饱土豆和辣椒后不免深思而感叹，人要是认认真真地吃，真的花不了多少钱，那些贪官究竟是怎么吃掉巨款的？我将来怎么吃得掉自己挣来的钱？<br>　　我在读中学与本科时，满头白发，脑袋可以当白炽灯泡用。当我硕士毕业再照镜子时，吓了一跳，白头发不见了！我不知道究竟是哪种食物起的作用（估计是辣椒）。那些早生白发的小伙子们，你们就到西安上学吧。<br>　　马佩军是我在西电最早的朋友。刚入学时我们分到一个宿舍，他象国民党兵盘问良家妇女那样上下打量我，问：&#8220;喜欢干啥？&#8221;<br>　　我怯生生地回答：&#8220;打乒乓球。&#8221;<br>　　他再问：&#8220;什么风格。&#8221;<br>　　我答：&#8220;快球。&#8221;<br>　　他突然象阎锡山那样怪笑，拍拍我的肩膀说，&#8220;好！我喜欢，以后你就是我的朋友。我是陕西人，农民，会开拖拉机和卡车。这里是我的家，以后你有啥事，就对我吱一声。&#8221;<br>　　马佩军和我打乒乓球时口中念念有词：&#8220;哼！你对我狠，我对你更狠；你对我好，我对你更好。&#8221;他好几次说要把世上最好吃的板栗送给我一袋，这一袋板栗我到现在都没拿到。马佩军夜里极能侃，吹他家乡的人跑得快，常把野兔追断气。有时他吹得太离谱，常令我们6个舍友群起而攻之。为了把我们一举歼灭，他白天到图书馆查&#8220;资料&#8221;，夜里再挑起事端。双方就象印度与巴基斯坦，常干两个秃子争一把梳子的事。<br>　　马佩军上大学前也没见过计算机，但他对计算机技术有极强的领悟力。我们第一次上机时，他把我拉到打印机旁边说：&#8220;帮我防着管机房的，我要修理这台打印机&#8221;。还没等我反应过来，他就开始&#8220;肢解&#8221;打印机。我无比深刻地体会到：歹徒在作案时都不害怕，最提心吊胆的就是那个放风的。他在5分钟内修好了打印机，我佩服得五体投地，甘愿下次再跟他干&#8220;坏事&#8221;。<br>　　我们读本科和硕士时主要用DOS操作系统，那时期病毒泛滥。马佩军杀病毒不用软件，用手杀。看他杀病毒简直是一种享受：噼里啪啦地敲一阵子汇编命令，然后机器就好了。求救电话太多，他经常无怨无悔地带着那双铁手游荡于西电各个角落，却不知道编写个杀病毒软件来赚钱。<br>　　我一直认为马佩军是西电编程第一高手，他编程的时候根本不是人，是指针。之所以我的名气大，一是因为他不好名利，二是我把他的程序写上了我的名字（并且卖了不少钱）。<br>　　马佩军的女朋友是我介绍的，我一眼就看出她将嫁给他。后来俩人果真结婚了，只是他嫁给了她，现在他还有了一只&#8220;小马驹&#8221;。硕士毕业后，马佩军留在西电读博。前年我再见到他时，他说我害死他了，快乐得要宰了我。马佩军在西电已经呆了十年，禀承了西电所有的优点与缺点——&#8220;很土但结实耐用&#8221;。我在西电时很土气，离开西电后变得&#8220;半土不洋&#8221;。马佩军简直就是西电人自己的&#8220;兵马俑&#8221;，每次看到他或者想起他时，我就明白自己的&#8220;根&#8221;还在西电。我喜欢陕西人源于马佩军。<br>　　宋任儒是我们的班长，也是班里最早的党员，满口仁义之道，比唐僧还让人受不了。在二年级时，我迷上一个比我大一岁有了男朋友的女同学，多日沮丧。他看在眼里痛在心里，跑去把那女同学教育了一通。苏联解体的时候他十分沉痛，在思想教育课上，他向我们作了深刻的检讨，好象是他没有管教好戈尔巴乔夫那小子。最后他为我们点燃了希望：在不久的将来，&#8220;苏联&#8221;将重新成为苏联，共产主义旗帜将继续在全世界飘扬。<br>　　在本科三四年级，他对跳舞十分入迷，连上厕所都滑翔而去。我那时常把自己关在实验室里搞科研，极少有空与他玩乐，等到本科毕业时，猛地发现他已经风度翩翩。<br>　　宋任儒在读本科时学习既不好也不差，我们从来没有合作研究过什么。我喜欢他是因为他很有情趣，不落俗套，并且刚正不阿。也许，我俩本来就有相似的秉性，只是表现不同而已。<br>　　本科毕业时，他分到威海工作，走之前我为他饯行。可在硕士开学时，我的房门被人一脚踢开，他对我喊了一声&#8220;林子啊，我又回来了&#8221;。我就象祥林嫂见到了被狼叼走的孩子那样惊喜。<br>　　宋任儒读硕士时被发配到临憧771所，他在那里过上了乐不思蜀的日子。有一天，他带来两个看上去很文静的女孩子（一个读硕士，一个读本科）来串门。就在我洗水果的几分钟里，三个人已玩得乐翻了天，两个女孩满屋子追他，一会儿把他按到桌子上打，一会按到床上打。我惊诧至极而又羡慕至极，恨不得挨打的人是我。想不到上学竟然会有这等欢乐，看来我读硕士的日子白过了。<br>　　后来，那个大一点的女孩子嫁给了他。当他带她去见公婆时，公公长叹一声：&#8220;把儿子交给你，我就放心了。&#8221;而婆婆已乐得合不拢嘴，竟然无法叹气。<br>　　现在，宋任儒已从复旦大学获得博士学位，比我更早地成家立业。他和她既是夫妻，又象兄妹，还象伙伴。他叫她&#8220;聪聪&#8221;，她叫他&#8220;笨笨&#8221;。<br>　　&#8220;聪聪&#8221;问&#8220;笨笨&#8221;：&#8220;老公啊，人活着为了什么？&#8221;<br>　　&#8220;笨笨&#8221;答：&#8220;就是让咱们每天快快乐乐。&#8221;<br>　　我亲眼看到的幸福莫过于此。<br>　　我在大二时曾为系里学习最差的十几名同学办了补习班，谢伟在这个补习班里名列倒数前茅。在他睡懒觉时，我象催命鬼那样喊他捅他。他无比吃力地抬起沉重的眼皮，就象软弱无力的举重运动员，还没有挺起来就趴下了。<br>　　他开始呻吟：&#8220;这一次就饶了我吧，下一次我一定，一定会去的，求你了。&#8221;<br>　　我不肯。<br>　　&#8220;那么让我再睡5分钟，&#8221;他不死心。<br>　　我仍不同意。<br>　　&#8220;那么你就从1数到10，要慢一点，&#8221;他讨价还价。当我数到9时，他就接着数9.1,9.2, 9.3 &#8230;&#8230;一开始他觉得我很好玩，后来他就离不开我了。并不是因为我学习好，而是那时候我天真并且充满活力。在三四年级我忙于科研时，他照顾我的生活，叫我&#8220;少爷&#8221;，既做管家又做兄长。我们不仅共用饭菜票，并且共用仅有的一个碗，总是他买饭菜和洗碗。<br>　　我们那一级的学生大多崇拜巨人公司的创始人史玉柱，我问谢伟：&#8220;我是不是和史玉柱一样能吃苦？&#8221;<br>　　他说：&#8220;如果考虑年龄因素，你已经比他更能吃苦。你将来一定能做大事业，我就把希望寄托于你了。&#8221;<br>　　在我们都还不成熟的时候，我成了他心中的灯塔，只要灯不灭，希望就在。现在他为了娶一个日本姑娘，披荆斩棘追到日本，有了新的希望。<br>　　二十几年来，我就为一个男人哭过，那时他本科毕业离校。<br>　　我读硕士研究生时，由于受我的影响，本系三四年级的学生蜂涌至微电子所参加科研。夜里看十二层高的科技大楼，灯火通明、热闹非凡的那一层就是微电子所。那时，我在微电子所学生中的地位仿佛伊拉克的萨达姆，手下兵将极多。<br>　　我写第一本书时，有好几个人帮我输入稿子，使我没时间慢腾腾地打草稿。我就象金庸写小说，有如神来之笔，想到那里就写到那里，写了一段他们马上输入一段，一气呵成。那本科技书写得很滑稽，同学们看得笑出眼泪，编辑看了拍案叫绝，只改了几个字就出版了。<br>　　那时侯我的心情是如此之好，为一男同学乱蓬蓬的头发写了一篇散文，并送他一把梳子。又把一女同学的实验报告写成评书。我的文笔大概就是这样练出来的。<br>　　这一群学生中，戴玉宏、史江一和马晓华是我最好的伙伴（我们都属于牛）。<br>　　戴玉宏其貌甚帅，眉中有一根白毛闪闪发光，因此号称&#8220;白眉鹰王&#8221;。&#8220;白眉鹰王&#8221;武功了得，是我软件产品的核心开发人员，我们合作最深最久。后来我开公司，他就从广州辞职到杭州为我助威，令我感动不已，可见读大学时期我们有多铁！戴玉宏有一次打饱嗝，整整打了两天两夜，我差点心疼死。<br>　　我尚未发迹之日曾与戴玉宏在校园里卖花，无人问津，就请电子工程系的鲁洁救助。鲁洁温柔貌美，她一言一笑尤如春风吹拂苏堤的杨柳，令人心里一荡再荡。顷刻间就有男生围观，有人看花，有人看&#8220;贵妃&#8221;，鲁洁一走，我和戴玉宏可怜得就象两根蜡烛。鲁洁读大学时调皮捣蛋，到四年级时还不太会编程。她的本科毕业设计是仿真&#8220;雷达跟踪飞行物&#8221;，程序基本上全是我编写的。我已记不起用了什么公式，只知道每次计算后都弹出一个对话框&#8220;报告长官，击中目标&#8221;。鲁洁毕业后到深圳的一家软件公司工作，几年一过，她成了行家。再与她交谈时，我只有听的份，象鸡啄米一样点头。<br>　　史江一和马晓华都是陕西人，和马佩军一样厚道热情。史江一性格稳重，属于&#8220;你办事我放心&#8221;的那类人。我对微电子专业一窍不通，全靠他帮我混过实验这一关。后来我开公司失败，陷入经济危机，就把希望工程的一个小孩托给了他。<br>　　马晓华是我最不放心的人。他常常为别人做事情，但热情过头就忘了自己的事情。有几个不道德的学生就利用他的这个缺点，经常使唤他，并且借他的钱不还。马晓华喜欢为那些人&#8220;卖命&#8221;并且挨训，他总是在受虐待够了的时候再跟我们嘀咕，我们实在气不过，只好对着他的屁股追加一顿拳脚，并给他一个绰号&#8220;受虐狂&#8221;。但愿他找个好老婆，我可以早日放心。<br>　　我们这一群小伙子同时喜欢上一个女孩子，她叫姜姗，是她班里的四大美人之一。我们不仅没有争风吃醋，而且心甘情愿地让她坐遍每个人的脖子。姜姗小姐5 岁时她爸姜晓鸿成了我的同事，我们经常一起去钓鱼，亲得象一家人。姜姗喜欢大喊大叫，声音高过帕瓦罗蒂，我们教唆她喊她爸&#8220;姜球球&#8221;。<br>　　我常带姜姗到小吃摊去吃女孩子不敢吃的东西，并哄她：&#8220;世上最好吃的东西是鸡屁股。&#8221;<br>　　她无师自通地加上一句：&#8220;世上最好听的屁是鸡放的屁。&#8221;<br>　　我常想着将来生个儿子并把他培养成天才，但如果能有姜姗这样的女儿，不要儿子也罢。<br>　　在本科三年级我第一次参加&#8220;星火杯&#8221;竞赛并获得软件二等奖后，马上成为低年级学生眼中的明星。我义务当上了一年级学生的上机辅导员。一天晚上我巡视机房，一女生请求帮助。<br>　　我见屏幕上空白一片，根本没有一行程序，十分疑惑地问：&#8220;什么问题？&#8221;<br>　　&#8220;没有问题。&#8221;她把书往我手上一塞说：&#8220;这些作业你帮我做。&#8221;然后就自个子跟她的同学玩乐，把我撇在一边，似乎我辛辛苦苦地学习就是为了给她做作业。<br>　　我定神对她细看，发觉她简直就是《射雕英雄传》里的黄蓉再世，顿时心就&#8220;突突突&#8221;直跳。当天晚上我没睡着，接下几天的课不知所云。在选修课《操作系统》考试时，我给家里写了一封超短信：请快寄钱来，我谈恋爱了。我交了白卷直奔她去。<br>　　我的初恋只有两个月，却让我思念了8年。她离我而去时没有任何理由，而我却失魂落魄。在我本科毕业前的18个月里，白天我狂热工作强作笑容，夜深人静时心痛如刀割而无法抑制。没有人为我&#8220;疗伤&#8221;，我是硬挺过去的，这一段经历使我日后心理承受能力极强。后来我开公司的失败虽然对信心有所打击，但根本无痛可言。<br>　　我们分手后并未成为陌生人，就象两只刺猬，离得远了就有点留恋，离得近了，就刺着对方。认识她时我虽然已略显才气，但并不具备成熟男人的魅力，很多事情我并不知道怎么去把握。有时&#8220;喜欢&#8221;并不能成为&#8220;爱&#8221;，感情也许是永远研究不透的学问。<br>　　我读硕士研究生时有了一群生机勃勃的朋友，感情的伤痛被淹没了。朋友堆里夹着一位女生，她文雅而富有气质。平日里无拘无束，大伙戏称她是我的秘书。我的言行举止和穿着都经过她的调教，俩人出双入对，十分亲近，不知不觉有了感情。别人已经把我们当成恋人，我和她牵着小姜姗散步时，简直就象一家人。<br>　　可是我当时着迷于事业，认为自己不久将干一番惊天动地的事。鉴于史玉柱在创业时就离过婚，所以我认为感情是事业的累赘，两者不可得兼。<br>　　更糟糕的是，我和第一个朋友藕断丝连，偏偏她俩是同班同学。我知道脚踩两只船没有好下场，可我的的确确同时喜欢着两个人，并梦想她俩能合二为一。我情愿被人指责，也不愿掩饰真实的感觉。有时她俩一同走过，我站在路上丢了魂似的看着俩人的背影，任凭看热闹的人指指点点。<br>　　我和第二个朋友已经有了很深的感情，她毕业后我曾坐火车千里送鲜花给她，让她感动过。而我固执的性格和对初恋的思念终于让她心碎。尽管我们已经几年没见，我依然看得见她留在我心里的那颗眼泪。<br>　　我在西电六年半的学习和生活也许是一生中最珍贵的，叫我怎能不爱西电。两年前我回西电，惊奇地发现校园里房前屋后长满了待收割的小麦！这所大学是从事电子科技的，种小麦干啥呀？<br>　　朱总理曾讲过：&#8220;目前国家粮食充足，再来三年自然灾害也不怕。&#8221;现在国泰民安，似乎用不着&#8220;深挖洞，广积粮&#8221;吧。我素知西电提倡勤俭节约、自力更生，但与其种小麦还不如种蔬菜呢。<br>　　老同学告诉我，种小麦是为了应付&#8220;211&#8221;工程（为21世纪选拔100所重点大学）的检查团，因为&#8220;211&#8221;工程有较高的绿化指标。偏偏检查赶在冬天，那时的西北极难长草。西电本来就人多地少，地上一长草马上就会被谈恋爱的学生给折磨死。一到冬天，整个校园就光秃秃一片。小麦在年轻的时候还真和青草长得一个模样，用小麦绿化校园可谓千古绝笔，检查团的那些权贵人士早已五谷不分，岂知所见的&#8220;草坪&#8221;乃是麦田。<br>　　浙江大学依山而傍西湖，是个美丽而高贵的大学。1997年春天，我就象干儿子那样挤进她的怀抱，并期望得到关爱。我到了向往已久的计算机辅助设计与图形学（CAD&amp;CG）国家重点实验室读博士学位。导师是石教英教授，石老师虽然年过六旬，但精力充沛，红光满面，施拉普纳不及他半分精神。<br>　　我幸福地幻想着大干一番自己喜爱的专业，并计划在35岁左右成为实验室主任。开学的第一天，我兴冲冲地奔向实验室。进门不到5分钟，就因不懂规矩被看门的年青女子训了几次。为了不再冒犯规矩，我就老老实实地抓起一份计算机报纸并且站着阅读，心想这下不得罪谁了吧！<br>　　突然一个气得脸色铁青的男人（机房管理员之一）对我断喝：&#8220;你在干什么！你怎么可以不经允许就翻看别人的报纸！&#8221;似乎我是他一生中见到的最无耻的人。<br>　　我就象一个情窦初开的少年飘飘然地去拥抱梦中情人，不料迎来两个耳光，此下场比《猫和老鼠》中的猫还惨。如果这两个年轻人有幸看到我这篇文章，应该好好悔过自新，她与他的工作态度打击过数十个学生的积极性。我本是因为向往CAD&amp;CG实验室而来的，得到的却是极坏的第一印象。（我博士毕业后，这两人也离开了实验室，我替后来的学生们谢天谢地。）<br>　　CAD&amp;CG实验室在理论研究方面很有名气，但我的兴趣是开发实用的软件，&#8220;嫁错人&#8221;了。我颇费周折地考入CAD&amp;CG实验室，却尚未热身就全力而退，决心自立门户。至今我都没有用实验室的计算机编过一行程序。<br>　　刚读博士时我穷困潦倒，只有一床，一盆，一壶，一碗。我那些穷朋友们象挤牙膏一样挤一些钱资肋我。我买了一台计算机，在宿舍里开发软件产品&#8220;可视化软件开发工具 VA 4.0&#8221;。1997年8月，我去北京参加首届中国大学生电脑大赛软件展示，路费也是借的。同学为我壮胆时说：&#8220;如果不能获奖，就回到实验室干活吧。&#8221;<br>　　我说一定会拿第一名，不然去干啥。<br>　　在软件展示时，我们发现很多好的作品是国家的科研项目，根本不是学生个人的作品，违背了竞赛的宗旨。如果允许这样做的话，学校可以运几条生产线过来。我写了一份抗议书，找了十几个人签名（很多人敢恨而不敢签）。但抗议能顶屁用，我参加过的科技竞赛、听过见过的科研鉴定多了，哪一次我没看到虚假？我写抗议书是因为眼里容不得沙子。如果我在北大读政治，恐怕早就遭殃了。<br>　　这次竞赛选出十个&#8220;软件明星&#8221;，只有我的软件和清华大学博士生的项目值得一看。他的项目水平很高，但那不是他个人的作品（评委甚至认识他的导师，知道项目的来龙去脉）。综合诸多因素，我的作品被评为第一，他的项目被评为第二。组委会来拍电视，可是找不到浙江大学的展板。因为浙江大学没有任何准备，我是一个人来的，我的作品夹在杭电的作品之中，没名没姓。我只好从塑料袋上剪下&#8220;浙江大学&#8221;四个字，贴在展板上撑撑门面。<br>　　自新中国成立以来，清华大学就一直在浙江大学头上&#8220;作威作福&#8221;，我好歹也争了一口气。可是颁奖时，组委会竟按地方顺序从北京念起，我沦落到第七，差点咽气。<br>　　我曾在上海的一辆公共汽车上与一位北京来的旅客聊天，此公极健谈。似乎他到上海旅游的目的就是为了发掘北京的优越性。见我挂着浙江大学的红色校徽，且对清华、北大并不神往，不禁十分迷惑，就问：&#8220;浙江大学在浦东还是浦西？我要去看看。&#8221;<br>　　北京已经是极度优越了，就请不要把什么鸡毛蒜皮的好东西都拿走。<br>　　1997年11月，在穷得快挨饿的时候，我获得了中国大学生跨世纪发展基金特等奖（全国共20名，奖金1万元），到人民大会堂领奖。给我们出钱的是一个靠资本运作发财的集团，在宴会前，该集团领导人和我们座谈，他什么不好吹偏偏吹自己是个高科技企业：&#8220;我们主要从事生物工程，几年前就掌握了克隆技术，英国的&#8216;克隆羊&#8217;简直是小菜一碟。&#8230;&#8230;我们在东北有个农场，新品种的小麦长得比人还高，麦粒跟葡萄一样大，你们不久都会喝到用这种小麦酿的啤酒。&#8230;&#8230;我如果去美国炒个总统，那就跟玩似得。&#8221; <br>　　我们几个获奖的博士生吃饱喝足、拿了钱后，关起门来把那个老板臭骂一通，扬长而归。别以为给钱就能让我们说好话！<br>　　刚拿了&#8220;跨世纪发展基金&#8221;，又马上获得&#8220;浙江省青少年英才奖&#8221;，浙江大学也给我发奖学金。比起那些一个月只有300元工资的博士生们，我简直是&#8220;暴富&#8221;。还了朋友们给我的&#8220;救济款&#8221;后，仍然是个&#8220;富翁&#8221;。我老是觉得手头的钱是&#8220;抢劫&#8221;来的，心里不踏实。于是找浙江大学校团委&#8220;诉苦&#8221;，请校团委把我的 &#8220;不义之财&#8221;捐给浙大的贫困学生。校团委的老师热情而坦诚，说愿意等我成为真正的富翁时再接受捐款，现在不能让我&#8220;杀鸡取卵&#8221;。但为了能让我表达心意，建议我资助&#8220;希望工程&#8221;的中学生，让我选了5个初一的学生，每个学生500元。我轻浮地以为自己真的帮助了5个中学生，直到1998年暑假我见到了其中的一个中学生，才发现自己做的好事只不过杯水车薪而已。我是到了自己贫困失意时才真正去帮助那些孩子的。<br>　　在1997年，我在学生时期的荣誉已登峰造极，觉得自己的翅膀已经硬了，不想再混下去。我总以为自己是第二个史玉柱，应该开个软件公司来振兴民族软件产业。我曾到东软集团（沈阳）参加&#8220;民族软件产业青年论坛&#8221;，大不咧咧地作了一次演讲（现在发现演讲的内容没有一项是可以操作的）。杭州有一个记者来采访我，我谈了一天的理想，记者还是没听明白，干脆自己写新闻报道，并且含蓄地做了一个广告：万事俱备，只待投资。<br>　　由于我能说会道，频频上电视，引来近10个投资者。我选择了一位年龄比我大一倍、非常精明的商人作合伙人，成立了&#8220;杭州临境软件开发有限公司&#8221;。彼时，我可谓光芒四射，名片上印着&#8220;以振兴民族软件产业为已任，做真实、正直、优秀的科技人员。&#8221;浙江大学有关部门想开除我，被我&#8220;晓之以理、动之以情&#8221;安抚住。<br>　　我当时想开发一套名为Soft3D的图形系统，此系统下至开发工具，上至应用软件，无所不包。公司名字起为&#8220;临境&#8221;有两个含义：一是表示身临其境，这是我对图形技术的追求；二是表示快到了与SGI公司称兄道弟的境界，这是我对事业的追求。&#8220;临境&#8221;这个名字我在读本科时就已经想好了，1997年底公司成立的那一天，我有一种&#8220;媳妇熬成婆&#8221;的悲壮感觉。<br>　　我从实验室挖来一位聪明绝顶的硕士生做技术伙伴。他叫周昆，年龄很小（1978年出生），研究能力极强。如果按照浙江大学计算机系博士生毕业的论文要求，他入学读硕士的那一天就可以博士毕业。周昆的头明显比我的大，估计其脑容量至少是我1.5倍。我曾经以师兄的身份为他洗过一双袜子，他因此觉得我是个好人。我俩一拍即合，常常为Soft3D的设计方案自我倾倒。一想到Microsoft公司的二维Windows系统即将被Soft3D打击得狼狈不堪时，我们就乐不可支，冲劲十足。<br>　　我已经把&#8220;振兴民族软件产业&#8221;列入日程，并且提前担忧将来钱挣得太多用不完该怎么办。1998年5月份，我们做了一套既不是科研又不全象商品的软件。软件产品宣传了几个月，并没有出现订单如潮、接应不暇的局面（事实上压根就没有反应）。我意识到没有找对市场，但仍觉得产品中的一些技术很有价值，将它改装成其它软件也许能开创&#8220;东方不亮西方亮&#8221;的新局面。<br>　　于是我向只有一面之缘尚在北大方正工作的周鸿袆求助。他是真正的软件高手，当我小心翼翼地展示约10万行C++代码的软件时，他竟在十几分钟内就指出多处重大的设计错误，使我目瞪口呆地意识到整个软件系统的价值为零。那种心痛啊，就象眼睁睁看着孩子被狼吃掉一样。<br>　　到1998年10月，我用光了30万元资金。周鸿袆再一次从北京飞到杭州，三下五除二替我把只活了一年的公司关闭掉。他放心不下，觉得我&#8220;恶病需用猛药治&#8221;，于是意犹未尽地把我捉到北大方正插在他管辖的部门，让我学习怎样做事情。<br>　　北京寒冷的冬天可以营造一种凄凉的气氛，冲去一切可以自我原谅的借口。我并不是太爱虚荣的人，知道这次失败是我的毛病积累到一定水准忍不住喷发出来的结果。我绝不能以年纪尚轻不太懂市场与管理为理由轻率地敷衍过去。<br>　　从北大方正&#8220;劳改&#8221;了两个月回来，我心服口服地承认失败了。我把察觉到的数十个毛病列出来，日后一个一个克服掉。现在我能比较清醒地分析我和投资方所犯的主要错误，以祭我那幼年夭折的软件公司。我的主要错误：<br>　　（1）年青气盛，在不具备条件的情况下，想一下子做成石破天惊的事。我的设计方案技术难度很大（有一些是热门的研究课题），只有30万元资金的小公司根本没有财力与技术力量去做这种事。<br>　　（2）我以技术为中心而没有以市场为中心去做产品，以为自己喜欢的软件别人也一定喜欢。我涉足的是在国内尚不成气候的市场，我无法估计这市场有多大，人们到底要什么。伙伴们跟着我瞎忙乎一整年，结果做出一个洋洋洒洒没人要的软件。<br>　　（3）我做到了&#8220;真实、正直&#8221;，但并没有达到优秀的程度。我曾得到很多炫目的荣誉，但学生时代的荣誉只是一种鼓励，并不是对我才能和事业的确认。正因为我不够优秀，学识浅薄，加上没有更高水平的人指点我，才会把事情搞砸了。<br>　　投资方的主要错误：<br>　　（1）投资方是个精明的商人，他把我的设计方案交给美国的一个软件公司分析，结论是否定的。但他觉得我这个人很有利用价值，希望可以做成功其它事情，即使Soft3D软件做不成功，只要挣到钱就行。这种心态使得正确的可行性分析变得毫无价值。<br>　　（2）由于我不懂商业，又象所有单纯的学生那样容易相信别人。他让我写下了不公正的合同，我竟然向他借钱买下本来就属于我的30%技术股份。他名为投资方，实质上双方各出了一半的资金（他出51%，我出49%）。他在明知Soft3D软件不能成功的情况下，却为了占我的便宜而丧失了应有的精明，最终导致双方都损失。<br>　　关闭公司时，他搬走了所有东西。我明明投入了技术，又亏了15万元，却一无所得。几个月后当我意识到不公平而找他协商时，他说：&#8220;只能怨你自己愚蠢，读到博士，连张合同都看不懂。&#8221;此事充分地显示了我的无知与愚蠢。自己的奋斗没有必要后悔太多，学到的远比失去的多，我相信下一次会做得更好。<br>　　公司关闭后，我就面壁反省，补习基础，准备为几年之后&#8220;东山再起&#8221;养精蓄锐。1999年1月，有一个民营企业家G先生向我请教一个问题：&#8220;我给一个年轻人投资了100万元，建立一家从事环保信息应用开发的软件公司。他曾许诺一年内创利润上千万元，可是才过去5个月，他就把100万元用完了，什么也没挣到。我实在不明白是怎么回事，请你帮我分析分析。&#8221;<br>　　这位G先生年龄有我的2.5倍，曾在西北当过几十年的技术兵，性格豪爽。他投资的那个年轻人叫Y（以下称Y经理），自称有英国的管理学文凭，能对公司的市场、技术、管理一把抓。G先生喜欢说&#8220;钱我没问题&#8221;，于是想也不想就投了100万元，并且给Y经理40%的股份。<br>　　G先生请Y经理到家里座谈。我那时突然狡猾起来，自称是G先生的远房亲戚，在浙大读半导体物理，特羡慕那些做软件的同龄人，渴望听听Y经理的高见。Y 经理果然信口开河，滔滔不绝，连绵不断，如黄河泛滥，一发而不可收拾。我激动地想去参观他的公司和产品，并表示要抛弃物理专业，立马转向软件专业。<br>　　Y经理得意而笑：&#8220;对于IT行业你就不懂了，我们经营的是一种理念而不是产品，这是国外最先进的思想。你可以来参观我的公司，但你看不到具体的东西，只能用心去领会。&#8221;<br>　　这屁话比曹元朗的诗还臭（《围城》）。我搞软件只有8年功夫，说我不懂IT行业并不过分。可我读了10年大学都没听到过如此&#8220;先进&#8221;的思想。如果这是英国管理学教育的成果，我认为自己已经发现了这个曾经是&#8220;日不落帝国&#8221;的衰败的真正原因，有必要找英国首相切磋一番。<br>　　我对G先生说：&#8220;Y经理根本不懂技术，为人极其浮夸。应马上关闭公司，以绝后患。那100万元你也亏得起，就买个教训吧。&#8221;<br>　　G先生说：&#8220;钱我没问题，那100万元就算我在澳门赌博输掉了。&#8221;<br>　　1999年5月，G先生又来找我请教另一个问题。他说：&#8220;小林啊，你上次说得很有道理，我接受了教训。&#8221;<br>　　我说：&#8220;那是好事，不论年龄大小，知错就改总是好孩子嘛。&#8221;<br>　　他叹了一口气：&#8220;最近几个月，Y经理又花了我100万元。&#8221;<br>　　我当时差点给噎死，气凶凶地训G先生：&#8220;我早跟你讲过，Y经理不是好东西，叫你关闭公司你不听，你老说钱没问题，亏你200万元活该。&#8221;<br>　　老先生象犯了错误的小孩子：&#8220;Y经理每一次向我要钱时，都拍拍胸脯保证下个月就有利润，所以我一而再、再而三地掏钱给他，希望能救活软件公司。现在该怎么办？&#8221;<br>　　一个有20名职员的软件公司，程序员只有三四个，连&#8220;十羊九牧&#8221;都不如。200万元的财务报表中，有100多万元用于吃喝玩乐和行贿。这种公司完全无药可救。台湾作家李敖曾说过：&#8220;当你没法扶一个人上马时，也许应该拉他下马&#8221;。从5月份到8月份，我行侠仗义，替G先生清理软件公司，根除Y经理这些败类。<br>　　可是难哪，因为G先生投资的公司根本不把G先生放在眼里，又岂能让我插手。就在我想方设法卡住Y经理的脖子时，Y经理总能从G先生那里挖出钱。G先生就象被吸血鬼附身，却仍存幻想：&#8220;如果吸血鬼能治好我的病，就让它再吸些血吧。&#8221;<br>　　Y经理又和一个来自深圳的骗子H想了注意，教唆G先生再投资100万元新建一个&#8220;指纹&#8221;公司，说利润将比开发环保信息更加可观（估计要用亿来度量）。就在他们准备签合同之际，我偶尔路过，发现异常，便强行阻止。<br>　　G先生是个好人，但太顽固。好几次我气极想撒手不管，但又不忍心好人被坏人欺负。我曾请求G先生：&#8220;我求您别再说钱没有问题，您的私人财产会被人骗光。请让我把这漏洞堵住吧，好让我安心地回学校做完博士学位论文。&#8221;<br>　　到8月份，我和G先生的两个儿子，伙同&#8220;黑社会&#8221;的朋友，强行把那个软件公司搬回G先生的工厂中，辞退所有员工。现在那个软件公司被别人接管，仍然半死不活，好在每月亏损不过几万元，G先生承受得起，我就不再去碰G先生的伤疤。<br>　　我以前从未玩过与人勾心斗角的游戏，此三个月的经历让我疲惫不堪。那个软件公司的员工曾透露，Y经理的英国文凭大约是在上海或杭州某个大专培训班里混来的。方鸿渐买美国克莱顿大学博士文凭尚知羞耻（《围城》），而Y经理却趾高气扬。害得我平白无故为英国教育界担心，回想起英国鬼子曾打劫过中国，倍感耻辱。<br>　　G先生是正人君子，不防小人，实在不是现代的商人。我和他成了忘年交。G先生第一次见到我时问我工资几何，我答曰：&#8220;300元，够买几本书。&#8221;G先生甚为着急：&#8220;这样的条件怎么能生活？你就搬到我家来住吧，我家条件好，你可以安心地学习，将来可为国家多作贡献。&#8221;后来他几次相邀，我就看在国家的份上住入他家，一直住到博士毕业。自从读中学以来，我第一次享受食来张口，不用洗衣服的奢侈。唯一的麻烦是我得向很多朋友解释：&#8220;我不是被别人养起来了，是为了国家的利益，不得已才这么做的。G先生是男的不是女的，并且没有待出嫁的女儿。&#8221;<br>　　我在读博士学位的三年半里，经历有点奇特。我遗憾的是&#8220;真才实学&#8221;没有长进多少，并且没有了在西电那样的纯真友情。略为欣慰的是我做了几件有意义的事情。<br>　　我很想讲一讲自己参加希望工程的经历与感受。<br>　　1998年暑假，浙江省云和县梅源中学的老师们带着希望班几名优秀学生来到浙江大学，其中有受我资助的何晓丽同学。我才知道初中学生一个学期的学杂费就要600元。何晓丽哭诉下学期不能再上学，其它的学生处境相似。我以前资助的2000元是5个人3年平均分派的，根本不起作用。<br>　　那时侯，公司倒闭使我债务累累，并且自信心遭受十年来最大的打击。我在入不敷出、心事重重的情况下，没有推卸义务，而是&#8220;变本加厉&#8221;的去尽这个义务。我在西电的好朋友史江一替我&#8220;接管&#8221;了一个中学生。有一个小姐追求我，我乘机给她一个活生生的&#8220;见面礼&#8221;。1999年7月份，我把饭卡送给了一个大学生，自己成了无产阶级。从1997年11月起到我博士毕业期间，我直接或间接地为7个贫困学生捐助了约1万元。我有了几点感受：<br>　　（1）对人的帮助莫过于给予希望。<br>　　（2）人在任何时候都能够帮助比自己更困难的人，哪怕自己处于困境。<br>　　（3）帮助是要负责任的，一定要设法做成有意义的结果。不负责任的帮助就是&#8220;施舍&#8221;。&#8220;施舍&#8221;缺乏诚意，不配称为&#8220;帮助&#8221;。<br>　　不少人曾对我说：&#8220;你是做大事的人，不要在小事上浪费精力，更不要为了别人而害了自己。&#8221;<br>　　很多人总以为自己将来是伟大人物而不愿做小事，从而到死也没做成什么有价值的事。也有很多人希望自己成功后再去帮助别人，无论他最终成功还是失败，一辈子也没有帮助过人。还有很多人略有权势或略有名气后，便觉得自己吃喝玩乐、放屁、上厕所都是重要的事，在他们最能够帮助人的时候却以&#8220;太忙&#8221;&#8220;没空&#8221;为理由不去做好事。<br>　　我也在忙碌、在奋斗，也渴望成为伟大人物，但我希望让有意义的小事充实一生。<br>　　我还要讲另一件我常干的小事。很多受过高等教育的人保留了随地扔垃圾的&#8220;风俗习惯&#8221;，这恶习就象脚气那样虽然不致人于死地，但能遗臭万年。即便象浙江大学这等典雅的地方，你都经常可以看见草坪、校门口的废纸、果皮和塑料袋等，垃圾就如同天使脸上的一砣狗屎那样鲜艳，人们竟然无动于衷。我记不请自己多少次当众、当道捡垃圾，可是几年来我都没有在大学里发现第二个做这种事的人。<br>　　我很想对所有的教授、博士、硕士、学士们讲句话：&#8220;救人并不只是医生干的事，保护环境也不只是清洁工干的事。只要你多花几秒钟，弯几次腰，就能让环境更加清洁，让心灵更加清洁。我们不必个个道貌岸然，但至少应该做到&#8216;读书明理&#8217;。&#8221;<br>　　 那些正在追我和将要追我的小姐们，你多捡一次垃圾就多一份希望，你丢一次垃圾就不再有希望。<br>　　我这样喋喋不休地讲&#8220;希望工程&#8221;和&#8220;捡垃圾&#8221;，并不是在沽名钓誉，也不是在布道，只是希望我这些&#8220;金玉良言&#8221;能触动更多的自以为自己是高素质的人们。<br>　　在浙大的三年半里，我没有对感情&#8220;播种&#8221;，所以也没有收获，但有一次&#8220;艳遇&#8221;。在关闭公司的那天晚上，人去楼空，我象严监生断气前那样盯着尚未熄灭的灯。这时某大学的一位四年级女生来找我。一年前她曾作为实习记者采访过我，谈得很投机。我知道她是聪明好学的学生，曾大言不惭地教导过她几次。我开公司的一年里几乎没与她来往过，想不到当我成了光杆司令时她还能&#8220;兔死狐悲&#8221;地来看望我，着实让我感动。我不无自嘲地对她说：&#8220;你不用安慰我了，这次失败我还能挺得住。&#8221;<br>　　她说：&#8220;我不是来安慰你的。我一直盼望你的公司倒闭，等了整整一年。在你去北京之前，我有话跟你说。&#8221;<br>　　我心下一凉，搞不清什么地方得罪她了，让她如此记恨我。大概是我得意之日教导她时言语过重，伤了她的自尊心。<br>　　好在我是知错就改的人，当下惭愧地向她道歉。她不理会我，说：&#8220;你开公司时光环重重，我根本无法靠近你。即便那时我成了你的好朋友，你也不会把我放在眼里。我暗恋你一年了，一直都没跟你讲。我早知道你会失败的，失败时你就剩下一个人，你才会知道我是真心爱你的，而不是冲着其它来的。你是个优秀的理科学生，我是个优秀的文科学生，门当户对，珠帘壁合。请你不要觉得女的追男的很荒唐，我是认真的，请你给我一次机会。&#8221;<br>　　我虽然评不上情场高手，好歹也在爱河里游过泳，呛过水。想不到仓促之下，被一女子说得脸红耳赤，无法掩盖窘相。<br>　　我一直认为男人应该勤劳一辈子，好让柔弱的女子舒舒服服地在大树下乘凉。而学习、工作出色的女子只能做朋友，不能做夫人。<br>　　她从小习诗弄文，读大学时蜚声校园。我见到她第一面时就把她归类为事业上的朋友，所以才会正儿八经地与她交谈并教导她。我在西电的两个女朋友就属于读书不太好但比较有魅力的女生，我从来也没有指导过她们学习。如果我喜欢一个女孩子并希望她成为我的女朋友，我早就去追求她了，岂能轮到她追我。<br>　　她见我彷徨不安，便滔滔不绝地例举爱我的&#8220;证据&#8221;。我开公司一年来发生的事她了如指掌，就象在我的房间里放了窃听器，在我的朋友中安插了间谍。她甚至趁着实习机会跑到团中央去查阅我的老底，有些&#8220;光辉记录&#8221;我过去的伙伴都未必知道。她思念我时，写了很多诗，留了很多泪&#8230;&#8230;<br>　　我早知道有些人不编程序、不做实验就能写出论文，难道男女之间不接触也能滋生感情？<br>　　第一回合我就被她挑翻在地，我莫名其妙地成了&#8220;负心郎&#8221;，无地自容地把她送走。我以为这是文科女生的风格，就当作一个趣事不放在心上。<br>　　我从北大方正&#8220;劳改&#8221;回来不久后，她提着一篮鲜花来找我，并对我说了她的梦想：在寒冷的冬天，大地铺满积雪，四野人鸟绝迹。我孤独求败地深居在冷冰冰的小木屋里。在一个狂风呼啸的黄昏，她一手拎着亲手做的饭菜（我想应该有土豆和辣椒），一手拎着一捆木柴，敲开了那扇紧闭的门和心房。终于木屋四壁生辉&#8230;&#8230;<br>　　我曾对第一个朋友最好的赞美是：&#8220;黄蓉很象你。&#8221;<br>　　我曾对第二个朋友最深情的话是：&#8220;将来咱们老了，我回黄岩当物理老师，你当语文老师。&#8221;<br>　　相比之下，我的确不及她浪漫。此后她再找过我几次，当我意识到她动真格的时候，她已不能自拔。爱情是很怪的东西，并不是两个好人在一起就能碰出火花。与其让她长痛，还不如让她狠痛一次。<br>　　我对她说：&#8220;我们真的不能在一起。&#8221;<br>　　她问为什么？<br>　　我说：&#8220;不为什么，我没有心跳的感觉。&#8221;<br>　　她说十年之后再找我。<br>　　我知道她会奋发图强，因为她会一直想着&#8220;为什么&#8221;，期望让自己有个满意的答案。 这条路8年前我已经走过了。后来她读硕士时我曾再见过她，她在文学上已经有了长足的进步。<br>　　她说将会送给我她的第一本著作，书中开头的几个故事是关于我和她。<br>　　我说看了她的书后一定会写一篇读后感给她。<br>　　她仍然提醒我不要忘记十年后的相约。<br>　　我在浙大有一个值得怀念的人，她是管宿舍楼的大妈。在1999年1月至5月，我在博士生宿舍静心修炼内功，大妈就象我的&#8220;护法&#8221;。晚上九点钟时，她就会烧些东西给我吃。我和大妈非亲非故，同学们都不明白大妈为什么待我好。我想那是因为我没把自己当成&#8220;博士&#8221;来看，而是当成&#8220;人&#8221;来看。<br>　　5月份后，我看在国家的份上搬到一个千万富翁家里去住，大妈也调到&#8220;熊猫馆&#8221;当掌门人。我一般隔几个月去看望大妈一次，中秋节我就和她在一起。朋友们知道我和大妈有这层关系，就纷纷托大妈物色女朋友。<br>　　大妈果然称职，她就象特务那样审视大楼里的女生。可大妈毕竟是大妈，她采用的&#8220;标准&#8221;是几十年前的版本，无法与现今的兼容。她盯住了不该盯的，却漏掉了不该漏的，至今都未&#8220;推销&#8221;成功一个<br>　　这件事让我又明白了关于软件的一个道理：光有完善的数据库还不够，还应该提供很好的搜索引擎。<br>　　我相信生活、科学、艺术中的很多道理是相通的，于是就不嫌人笑，写下了十年来的故事，交最后一次作业。大学十年给我留下了很多美好的回忆，现在可以打上漂亮的句号了。尽管我即将告别大学，但我会终生学习。也许我成不了天才，但还有机会成为天才的爸爸。<br>　　我想大声呼喊出那种可以用双手把握未来的自豪。<br>　　我要对年轻的朋友们说两句肺腑之言：<br>　　一、主动去创造环境，否则你无法设计人生。<br>　　二、生活和工作要充满激情，否则你无法体会到淋漓尽致的欢乐与痛苦。<br>如果我碰到上帝，只会对他说一句话：&#8220;你看厕所去吧。&#8221;</p>
<p>林锐2000年3月于浙江大学</p>
<p>【作者介绍】 linrui<br>　　林锐，2000年获浙江大学计算机应用博士学位。大学期间两度被评为中国百名跨世纪优秀大学生，1996年获电子工业部科技进步二等奖，1997年获首届中国大学生电脑大赛软件展示一等奖。2000年7月加入上海贝尔有限公司，从事软件工程和CMM/CMMI研究与推广工作，出版著作三部，2003年 7月当选为Alcatel集团技术委员会会员。2004年创建上海漫索计算机科技有限公司(<a href="http://www.chin/">http://www.chin</a><br>　　作者Email地址：<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#108;&#105;&#110;&#114;&#117;&#105;&#64;&#118;&#105;&#112;&#46;&#115;&#105;&#110;&#97;&#46;&#99;&#111;&#109;">linrui@vip.sina.com</a></p>
<p>《大学十年》后记<br>原创作者：linrui 来自Sawin系统分析之窗<br>最后修改时间：2005-2-24</p>
<p>　　2000年7月份，我从浙江大学博士毕业后到上海贝尔有限公司工作。从2000年8月至2001年底，大约一年半时间，我在网络应用事业部从事软件工程与CMM的研究与推广工作。从2002年初至今，我调到公司总部从事企业研发管理的研究。<br>　　我在上海贝尔没有发财，没有当官，那么工作近两年来我都在做些什么呢？<br>　　我在心平气和、踏踏实实地做学问。<br>　　我读本科的专业是半导体物理，硕士专业是集成电路，博士专业是计算机图形学。十年之内我换了三个专业，哪一个专业都没有学精通。我觉得自己在软件工程方面有些悟性，可是没有当成专业来系统地学习。所以博士毕业时，除了有点虚名外，我的确没有什么过人的才能。<br>　　如今大学里的博士、教授中&#8220;水货很多&#8221;，我不幸是其中之一。象我这样的好苗子沦落为&#8220;水货&#8221;，是中国大学学术腐败、堕落的恶果。<br>　　在公司里，很多员工恭谨地叫我&#8220;林博士&#8221;，甚至还有年轻人特意来看看我这个&#8220;好榜样&#8221;。虽然我也爱慕虚荣，可是良心未泯，彼时我哪有博士的真才实学，多么羞耻啊。<br>　　刚到公司时，我有两类工作可选择：一是开发产品，二是研究并解决企业存在的软件工程问题。<br>　　我在开发产品方面比绝大部分应届毕业生和员工们有经验，当项目经理可谓熟能生巧。软件工程则是我的研究兴趣。前者可能会有更高的经济收入，后者能提高自己的学问。<br>　　当时我的想法很简单：趁着自己还年轻，赶紧好好做学问，弥补读博士期间浪费的三年青春，让自己有真才实学。<br>　　在企业里做学问与高校里很不一样。如今学校里的学者们越来越浮躁，聪明才智大多建立在&#8220;纸上谈兵&#8221;之上，做学问变成了造文章。<br>　　而企业特别讲究&#8220;务实&#8221;，所有的工作围绕一个目标：努力让企业活下去并且活得更好。<br>　　我在公司里没有象在学校里那么&#8220;兴风作浪&#8221;，日子过得很简单，不停地调研、写规范和培训。就象少林寺藏经阁里的修练者。上海贝尔提供了一流的软件工程研究与实践环境（不是现成的，是争取来的，这就是我信奉的&#8220;创造环境&#8221;）。在这种环境下，只要人不笨，认真工作，谁都能成为软件工程专家。<br>　　在博士毕业前，我写了一本薄薄的书叫《软件工程思想》。这本书与《大学十年》一样在网上流传，我曾经自鸣得意。最近我要出版一些研究成果，便重新阅读了那本《软件工程思想》。发现此书真的是彻底地&#8220;纸上谈兵&#8221;，不仅对企业毫无用处，并且会误导读者。<br>　　我真是悲喜交加，悲的是和我同类的一大批&#8220;假博士&#8221;长期干些&#8220;自欺欺人&#8221;的研究工作，浪费生命并且浪费国家财产。喜的是我终于跳出了虚假学术的火炕。我不敢说现在自己的水平有多高，但至少能够拿出一些对企业有价值的东西来。<br>　　我在公司是一名自由自在的软件工程专家，公司待我不薄。如果不给自己一些事业上的压力，人很容易在安逸中堕落。我的目标是创作出可以与Rational公司RUP相媲美的软件过程规范，并且开发出物美价廉的适合于中国IT企业的项目管理软件。<br>　　基于大量实践的基础上，我和合作者研制了一套&#8220;软件过程改进解决方案&#8221;（Software Process Improvement Solution, SPIS）。SPIS的主要组成部分有：<br>　　◇ 基于CMMI 3级的软件过程改进方法与规范，称之为精简并行过程（Simplified Parallel Process, SPP）。<br>　　◇一系列培训教材，包括软件工程、项目管理、高质量编程等。<br>　　◇基于Web的项目管理工具，包括项目计划、项目监控、质量管理、配置管理、需求管理等功能，命名为Future。<br>　　以我们研究小组的实力本来是可以顺利完成SPIS的。但遗憾的是，SPIS不是公司产品发展战略范畴之内的东西，不能作为正式项目开发，我的组员们都被分配了其它的任务。我只能在公司之外组织一些朋友共同开发SPIS。虽然困难很大，但是工作很有意义，很鼓舞人。<br>　　我依然相信&#8220;创造性的事业要靠激情来推动&#8221;。希望在今后的一年内，我能结识不少志同道合的朋友，共同把事业做好。</p>
<p>林锐2002年4月于上海贝尔有限公司</p>
<p>回《论坛精华》<br></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:07 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Perl6与唐宗汉</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125222.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:05:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125222.html</guid><description><![CDATA[<p>Perl6与唐宗汉<br>译者/作者：alexe<br>出处：中国Perl协会 FPC(Foundation of Perlchina)</p>
<p>请保护作者的著作权,维护作者劳动的结晶。</p>
<p><br>大部分文字整理自perlchina 2005-03-05北京聚会，唐宗汉的口述，其他部分文字整理<br>翻译自perl的相关站点。</p>
<p>写作目的：讲述一个奇异华人在世界开放源代码界的努力，叙述开放源代码作者们的宏<br>伟蓝图。</p>
<p>唐个人简历：<br>唐宗汉男 1981年生人 籍贯台湾。<br>唐的外表：长发，面白，十指修长。</p>
<p>唐的行为：<br>说话有力，吐字清晰，语速很快（说明思维敏捷），随时携带自己的笔记本电脑，包括上<br>厕所，目的是纪录下自己的随时会有的想法。唐的称号：据称台湾十大电脑高手。</p>
<p>唐个人网址：<a href="http://www.autrijus.org/">http://www.autrijus.org/</a></p>
<p>唐的工作态度:每天一直努力干活直到累倒为止（累倒，是说感觉到十分的疲劳，沾床就<br>睡的感觉）。唐的教育经历：</p>
<p>14岁辍学，一直凭兴趣自学计算机知识（自称拥有自8086以来每个类型的计算机，现在<br>在用一台华硕讯驰1。8G，计划很快去买台Mini-mac),是个绝对自学成材的自由软件者。<br>曾去大学蹭课听，主听中文系与哲学系的课程。自我感受听中文系的老教授所讲的知识<br>很有受益。英语的学习：曾一段时间迷恋万智牌，为了打好牌而常上irc与老外交流，切<br>磋牌技，经过一段时间，在irc里熟练了英语。而且还曾打到台湾万智牌的积分排名第一。</p>
<p>唐现在的生活：</p>
<p>喜欢旅游，过去去过世界各地的很多地方（基本都是自费）。到处推广perl,参加开放源<br>代码会议。刚在大陆给perlchina成员上课，推广perl。开办一家小计算机公司2-3年，<br>没有什么正式的员工，大家都是网上认识的朋友。接到工作后，按照过去对大家能力的<br>评价分配给大家干，然后大家分钱。自己干活的话是按照小时收费。每写一小时的软件<br>收费100美金或欧元。写完的产品给客户说明需要开源，开源可以让客户免费享受很多的<br>开源社区升级更新所带来的好处。当然如果客户不同意，他就说明要收两倍的价钱，如<br>果客户要求软件的版权完全归自己所有，他会要求收6倍的价钱（竟然还是有一个客户愿<br>意收6倍的价钱）。从2005-02-01开始领导一个开发团队夜以继日的编写Pugs。这个团队<br>大约有十五六人，其中有三分之一来自于台北perl推广组。平时当遇到某些困难问题的<br>时候就需要大量的咖啡因（咖啡，后来换成可乐，可乐其实比较伤胃，所以注意不能多<br>喝，好像现在想要换成茶？）。</p>
<p>唐对于perl的经历：</p>
<p>学习perl只是由于正值互联网的兴起，有公司要他过去开发cgi,这才开始了perl的生涯<br>。后来编写了大量的perl模块，有100多个，可以在cpan(请看附录）上找到。<br>网址：<a href="http://search.cpan.org/~autrijus/">http://search.cpan.org/~autrijus/</a></p>
<p>原来最初觉得写perl很孤独，但是经过长时间的与各种朋友的交流才发现，原来很多的<br>软件都是用perl写，原来有很多的大公司都在使用perl,例如：微软的员工在用perl,微<br>软赞助了windows下面的perl版本activeperl的开发；摩根士坦利整个公司都在使用<br>perl,他们在2003 年赞助了perl基金会大约一半的费用；众多华尔街的金融机构都在使<br>用perl 来做金融数据的处理；物工程科学也都在很大程度上使用perl，据称现在的基因<br>工程还十分得益于perl的快速开发。</p>
<p>由于在cpan上的贡献，曾在2003年2次获得perl基金会的奖励，每次2000美金。<br>网址： <a href="http://www.perlfoundation.org/gc/grants/2003.html">http://www.perlfoundation.org/gc/grants/2003.html</a></p>
<p>与台北的perl爱好者成立了台北perl推广组，每个月组织一次聚会，大约有30多人，大<br>家见见面，并找个新的perl课题让某个人上台给大家讲演一下。最近半年这个活动已经<br>成为了例行活动。（在台湾写perl的人大家互相都很熟悉，从唐口中了解到了董仲恺，<br>openwebmail的开发者，一个上了 8年的博士生，将自己的精力都放在了openwebmail的<br>开发上，一个perl写的web mail，很不错）。<br>网址：<a href="http://taipei.pm.org/">http://taipei.pm.org/</a></p>
<p>在2001年唐第2次参加开放源代码大会的时候，需要在会上做一个5分钟的演讲，那时唐<br>刚接管cpan的相关管理工作，所以他把自己在cpan上最喜欢用的模块拿出来用中文创作<br>了一段数来宝（cpan数来宝，有点中文rap的味道），最后还有一段一用英文唱的总结歌<br>曲，这引起了与会者的满堂喝彩。所以以后唐到西雅图，德国，英国，都会应要求表演<br>一段。<br>文字网址：<a href="http://wagner.elixus.org/~autrijus/favcpan/start.html">http://wagner.elixus.org/~autrijus/favcpan/start.html</a><br>录像网址： <a href="http://www.perl.org/tpc/2003/movies/perl-lt/">http://www.perl.org/tpc/2003/movies/perl-lt/</a></p>
<p>Perl6的开发：</p>
<p>最初开发perl6的原因与历史：</p>
<p>在5年以前的2000年，由larry wall 在每年一次的开放源代码大会（oscon2000）上提出<br>了perl6的开发计划。那时perl5.6刚发布，但是当时的perl开发社群却感觉卡住了，很<br>难再往前了。Perl这门语言已经有13年的历史，由于一直保持向后兼容，而且 perl5的<br>代核心码已经很成熟，可以说是浑然一体，所以很大程度的阻碍了我们添加新的功能，<br>因为每次添加新的功能都有可能打破旧的代码的运行。Perl5是用c写的核心，它跑得很<br>快，功能也很强，但是它的核心代码是那么的庞大，充满了各种很难以理解的宏调用。<br>修改核心来添加新功能对任何一个人来说都是一件极为复杂和困难的工作。特别是在开<br>发perl5.6的时候，添加了unicode与多线程的支持，但是在添加的过程中，开发者发现<br>这种添加是件很痛苦的事情，因为每次添加新的功能都要抽取旧的功能来补。perl5的开<br>发者就把这种现象比作一种积木游戏：叠叠乐（一堆小木头叠成一座高塔，每层有三块<br>，每个游戏者轮流把底下的一块抽出来放到上面去，这样这个塔的底部就越来越脆弱，<br>而这个塔就越来越高，谁抽出最后一块让塔倒下的人就是输家），大家认为 perl5的核<br>心越来越像叠叠乐，已经越来越脆弱，无法再进一步的改进，perl5已经到了其生命的极<br>限。所以larry wall就提出了开发perl6的计划。<br>网址：<a href="http://www.perl.com/pub/a/2000/07/perl6.html">http://www.perl.com/pub/a/2000/07/perl6.html</a></p>
<p>当时的目的就是要从新设计一个perl，线程、unicode、可靠信号控制在一开始设计的时<br>候就要被加进去，新的内核要更小，速度更快，外部扩展api要更加清晰，在过去的二进<br>制兼容问题也要被彻底解决掉。</p>
<p>然而，在larry计划新的perl6开发的同时，像python等其他语言也遇到了同样的问题：<br>它们最初设计的时候想要解决的问题现在都已经基本解决了，可当现在要添加新功能上<br>去的时候会发现，由于最初的设计并没有想象到现在的这种需求，所以再添加新功能也<br>是件很困难的事情。既然大家都遇到相同的问题，所以这时两个开放源代码社区就提议<br>合作共同设计一个新的底层平台，使用这个底层从根本上来解决这些大家都遇到的问题<br>，这个底层平台就是perl6的parrot。在2001-04-01 larry wall（perl的设计者）与<br>Guido van Rossum（python的设计者）一起宣布了parrot的开发计划。<br>网址：<a href="http://www.perl.com/pub/a/2001/04/01/parrot.htm">http://www.perl.com/pub/a/2001/04/01/parrot.htm</a></p>
<p>这个消息令整个的开放源代码社区都十分的兴奋，大家十分期待着新项目的成功。<br>这样perl6项目的整个计划就从原来的独立的perl6设计，变成了一个多层次的设计项目。</p>
<p>Perl6整个项目的设想：</p>
<p>Perl6的整个项目是建立在底层parrot之上的。</p>
<p>过去用perl5写的程序或模块与其他语言例如python、ruby都不能共容，如果想要共容的<br>话必须用一些很糟糕的方法，所以他们就先设计了一个底层平台叫做parrot（鹦鹉，就<br>像.net的运行期或java的虚拟机）。我们写perl6的代码，然后我们通过一个编译器将<br>perl6的代码编译成字节码（byte code），这个字节码才可以直接在parrot上面运行，<br>而parrot再负责把这些字节码具体的翻译成intel或sparc等平台上的机器码来执行。也<br>就是说你可以用任意的语言来编写程序，然后通过一个编译器来翻译成统一规则的字节<br>码，在统一的一个虚拟cpu平台parrot上运行。这样你就可以使用任意的语言来编写程序<br>，最后大家都编译成统一规则的字节码，由于大家的字节码都遵循相同的规则，所以在<br>字节码之间的相互调用就可以十分平滑的实现，这样不论你用何种语言编写的程序，就<br>可以很容易的互相使用（这种技术就是JIT技术，Just In Time）。这样你用perl写的模<br>块，就可以用python来调用，各种语言实现了共通。而且计划perl5写的程序也可以移植<br>到parrot上面使用，这就意味着在cpan上的几千个perl模块就依然可以使用，而且其他<br>语言也可以调用这些perl模块。而其他过去遇到的问题，如很难扩展，没有线程支持等<br>，在parrot上面就解决掉了。在perl6架构下的整个程序的执行过程，如下图（执行自上<br>而下）：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Source Code<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | The Parser |<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Syntax Tree<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +--------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | The Compiler |<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +--------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Byte Code<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +--------------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Bytecode Optimizer |<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +--------------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Better Byte Code<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +---------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Runtime |<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +---------+</p>
<p>Source Code 源代码，可以是各种语言的源代码。</p>
<p>The Parser 是各种语言的解析器（例如python就有python的解析器，c就有c的解析器）<br>，负责将源代码转换成语法树。</p>
<p>Syntax Tree 语法树。</p>
<p>The Compiler 编译器，按照calling conviention规则，将各种语法树编译成字节码。</p>
<p>Byte Code 字节码，就像虚拟cpu上面的汇编语言，而这个虚拟cpu就是parrot。</p>
<p>Bytecode Optimizer 字节码优化器。</p>
<p>Better Byte Code 优化后的字节码。</p>
<p>Runtime 在这里就是parrot。</p>
<p>因此最终成型的整个perl6项目实际上就是由两个部分组成：一个是底层的parrot，一个<br>是上层的perl6语言。而Perl6的语言又可以分为：语言的设计（perl6的语法，规则，也<br>就是Source Code），语言的实现（通过一个解析器与编译器将perl6的语言转换成字节<br>码）。Perl6整个项目的想法与.net基本是同时想到的，整个概念其实与java和.net十分<br>相似。</p>
<p>Parrot的特点：</p>
<p>Paroot的设计就像一个软件cpu，并且它的设计与硬件cpu的设计很相近，例如：它也有<br>一个寄存器结构，它也支持底层的操作。它的设计还参考了硬件cpu的设计。</p>
<p>Parrot在设计上要满足各种动态语言的需求，而且特别注意可扩充性，像unicode，多线<br>程等都是直接内建支持。</p>
<p>Parrot的抽象层比.net与java更高，你可以写更少的代码来运行更复杂的运算。象各种<br>面向对象相关的调用都在parrot内部有相应的机械码。</p>
<p>Parrot的现在大小在250K至700K之间，它会有足够快的速度，并有足够的灵活性。</p>
<p>Parrot支持多种平台，包括手持设备，如palm。<br>网址：<a href="http://www.parrotcode.org/">http://www.parrotcode.org</a></p>
<p>Perl6语言设计的特点：</p>
<p>Perl6语言的设计思想：easy things should stay easy, hard things should get<br>easier, and impossible things should get hard。例如：在perl6的语言设计上<br>larry采用了霍夫曼编码的思想：常用的功能使用较短的单词来表示，不常用的功能用较<br>长的单词来表示，这样就可以显著的提高你的输入程序的速度。比如说：过去perl5中的<br>print"&#8230;\n"，现在在perl6中就可以用say"&#8230;"来直接代替，因为打印是程序中最常<br>用的功能，所以就用较少的代码来表示，这样可以显著的帮助你减少代码的输入。</p>
<p>Perl语言还有一个特性就是把当时最流行大家最推崇的其他语言好的功能集合起来，统<br>一融合到自己的语言中来。在perl中这叫做多重典范。larry wall喜欢把这种情况比作<br>英文，英文就是吸收了很多其他语言而组合而成的语言。Larry 的想法就是perl最好象<br>英文那样：每个当地人在学习英文的时候都会带一些当地的方言，带一些当地的讲话习<br>惯，但是大家也都能听懂，兼收并蓄其他语言的长处，来形成自己的特点。总之，把所<br>有各种最流行的元素都集合起来，就组成了perl6语言。</p>
<p>Perl6还有很强的灵活性（perl的一句格言就是：条条大路通罗马）：如果你特别喜欢<br>oo，那么perl6感觉上就像java一样，就可以特别oo。如果你不喜欢强制类型声明，那<br>perl6就可以不用声明。如果你特别喜欢逻辑语言例如：make,那么perl6就可以让你按照<br>逻辑语言的方式来编写程序。Perl6吸收了很多其他语言的特点，因此你可以用自己喜欢<br>的编程方式在perl6中编程，但是通过perl6中的语境相关的能力，不同的编程方式写出<br>的perl6程序仍然可以很好的搭配在一起。这样设计的意图就是让程序员针对不同的问题<br>，用不同的解决方式，从而对所有遇到的各种问题达到最优的解决方法。Perl6语言的两<br>个特点就是:语境相关(context)与多重典范。</p>
<p>Perl6与perl5的比较：语言本身的感觉其实还是跟perl5语言是一样的，只是在运行时的<br>过程与perl5截然不同。对于过去perl5语言的很多语法perl6也继续使用，对于perl5语<br>法的不合理部分perl6做了改进。<br>网址： <a href="http://dev.perl.org/perl6">http://dev.perl.org/perl6</a></p>
<p>正在开发的Perl6及其相关软件：<br>Parrot,perl6的执行引擎。已经开发到了0.1.2版，现在实际可以运行python、basic。<br>网址：<a href="http://www.parrotcode.org/">http://www.parrotcode.org</a></p>
<p>在Parrot方面现在已经有了很多的半成品：<br>比如ponie是一个能将perl5编译到parrot上面来的软件。<br>网址：<a href="http://www.poniecode.org/">http://www.poniecode.org/</a></p>
<p>有人正在将Php、Ruby移植到parrot上面来。有人声称要将gcc（gnu的开源c/c++编译器<br>）移植到parrot上面，这样以后所有的可以用gcc编译的程序可以直接编译到parrot上面<br>的字节码来运行。甚至还有人决定要移植.net到parrot上来。这当然是一个疯狂的决定<br>，然而成事是都要靠疯子，疯子与天才是靠最后的成败来决定的，他未必会成功，但是<br>如果成功是很了不起的（唐的原话）。</p>
<p>Pugs,不管其他perl6的开发，只是先对perl6做一个真实的实现，以此检验perl6语言的<br>特性，帮助perl6语言的进一步设计，最后计划转变为perl6的编译器到parrot。<br>网址：<a href="http://www.pugscode.org/">httP://www.pugscode.org</a></p>
<p>Perl6整个项目过去4年的开发过程：</p>
<p>Perl6语言的设计：</p>
<p>在perl6语言的初始设计的时候，首先成立了一个rfc(Request For Comments)项目，就<br>是向所有关心perl6语言的人邀稿，大家将自己想在perl6语言中想实现的功能写成rfc,<br>然后发给larry wall，larry wall就会想办法在perl6中帮你实现。最后larry花了一整<br>年的时间把各种rfc中描述的特性整合到新的perl6语言中（在开发perl5的时候，他们也<br>是用了快一整年的时间将很多其他语言的优点都整合到perl5中来，Perl过去的版本也都<br>是这样，到处偷学，采纳各种语言好的想法）。</p>
<p>Larry wall收集整理完成rfc后，从2001年起就不断的开始写启示录（Apocalypses，希<br>腊文），描述perl6的新功能。启示录的格式与 larry wall过去写的Programming Perl<br>（相当于perl5的圣经）这本书的格式是一样的，例如：在Programming Perl中的第6章<br>描述的是子程序那么在启世录的第六章也是写的子程序。</p>
<p>由于启示录对于perl6的描述并不是十分详细，而且写作的时间已经过去了3年，所以在<br>2004年起larry开始根据自己的启示录编写纲要（Synopsis），来对相应的启示录章节做<br>总结，并且更加专业的。到了2004年12月，perl6语言的大部分设计就都已经写在一系列<br>的纲要中，而且已经稳定到了可以实际运用的程度。</p>
<p>Perl6的编译器的开发：</p>
<p>在2000年的10月perl基金会在两个星期中筹集了75000美金来雇用Damian Conway(perl核<br>心开发人员)2001年一年的时间，可以让他专门去开发perl6。其中的2万美金让Damian去<br>各地做演讲，来宣传 perl6。Damian于是在美国各地给Linux和自由软件爱好者做了上百<br>次的演讲，让大家对perl6充满了期待。</p>
<p>在2002年Damian仍然继续专门负责开发perl6。</p>
<p>在2003年Damian完成了Perl6::Rules模块，这是一个在perl5上做perl6 rules的一个雏<br>形，是整个perl6编译器的关键部分。但是开发出的产品很不成熟，无法稳定运行。</p>
<p>所以3年过去了，没有成熟的perl6到parrot的编译器出现。过去开发perl6编译器的路线<br>是错误的。</p>
<p>2005年2月，唐开始了pugs，另一个perl6编译器的开发。</p>
<p>Parrot的开发：</p>
<p>在2001起由Dan Sugalski负责开始开发parrot。</p>
<p>从2001年8月开始放出代码，第一个版本是0.0.2版，到2005年1月已经放出过14个版本，<br>最新的版本是0.1.2版。现在已经有些语言可以编译成parrot的字节码。你现在也可以用<br>parrot的汇编语言写一些简单的程序在测试解析器上运行，parrot已经支持绝大多数的<br>数学运算，一些基本的字符操作和一些条件运算。整个parrot开发还在快速进行当中。</p>
<p>Perl6编译器开发过程中出现的问题：</p>
<p>当最初宣布这个perl6的开发计划时，整个perl6的社区非常的高兴，大家都在等待<br>perl6的成功运行。但是2002－2004三年的时间过去了，没有一支perl6的程序跑得起来<br>。现在parrot的程序其实已经很稳定了，但是perl6语言到parrot的编译器一直没有实现<br>（Parrot现在都可以跑python了）。所以到了2004年的年底大家已经绝望了，感觉<br>perl6的实际运行遥遥无期。在这3年期间larry仍然一篇一篇的写启示录，damian一篇篇<br>的给启示录写注疏（对于启示录中的内容实际在日常使用时的语法），可是却完全没有<br>一个真正的perl6语言实现。</p>
<p>就有一个小笑话：有人问写的perl6的程序从哪里跑？damian会说："在我脑子里跑"。<br>可是把他从澳洲请过来专门跑perl6程序也太贵了，而且他也不可能夜以继日的专门跑<br>perl6程序。：）Parrot本来设计起来是要跑perl6的，但是现在似乎parrot什么都可以<br>跑就是没法跑 perl6。</p>
<p>关键是问题到底出在什么地方呢？</p>
<p>问题就是当初perl6的设计是要实现自足执行（self－hosting）。对于所谓的自足执行<br>举例来说明：c的编译器是由c写的， c＋＋的编译器是由c＋＋写的，java的编译器有一<br>些是由java写的，c＃的编译器是由c＃写的。以此类推，非常多的编译程序都是用自己<br>来写自己的编译器，用自己来写自己的执行环境，这就是所谓的自足执行。可是我们现<br>在所熟悉的脚本语言python php perl大都是用c来实现的，就不是自足执行，这带来的<br>问题是你要实现任何新功能都要进入另一个语言去改，而且改了以后会影响全部的语言<br>。你不能用自己的语言来写一个新的功能。所以在设计perl6的时候，larry就说perl6要<br>实现自足执行，perl6要自己执行自己。这就产生了激活问题 Bootstrapping（就像一个<br>人想提着自己的鞋带把自己提到空中，通俗说就是鸡生蛋蛋生鸡的问题）。如果一开始<br>什么也没有的话，就无法激活。</p>
<p>Perl5的时候的语法是用的yacc语法，yacc 是一个用c写的语法解析器。他能帮你把你写<br>的程序解析成程序能够理解的语法树。但是这种语法的灵活度比较差。所以在开发<br>perl6的时候，就决定使用perl6 rules来解析perl6的语法。而问题就是出在了rules的<br>编写上：最初的计划是利用 Perl 5 进行自举：先扩充 Perl 5，使其执行于 Parrot 虚<br>拟机器上（透过 B::Parrot 或 Ponie），再以 Perl 5 来实际编写 Perl 6 编译器，最<br>后透过 p5-to-p6 转换器将编译器转译成 Perl 6。不过，虽然Damian编写的<br>Perl6::Rules模块确实在 Perl 5上实现了Rules 的雏型，但对于建构编译器而言仍显得<br>不够成熟。所以过去3年的perl6开发，走了一条错误的道路，整个开发perl6编译器的计<br>划必须从新修正。</p>
<p>Perl6的转机--pugs的开发：</p>
<p>在2005-2-1唐也开始了一件很疯狂的事情：对于过去的perl6开发通通都不管，从新编写<br>一个解释器pugs直接运行perl6。pugs这个项目根过去的perl5、parrot都没有关系，在<br>它开始的时候，唐也没有通知原perl6的开发人员，完全是自己另起炉灶，一开始大家都<br>很迷惑，以为唐要取而代之吗？唐不管larry了吗？唐要篡位吗？</p>
<p>所以唐就写了一篇外典（Apocrypha，希腊文，这里是针对larry写的Apocalypses）来解<br>释自己开发pugs的原因。<br>网址：<a href="http://svn.perl.org/perl6/pugs/trunk/docs/zh-cn/01Overview.html">http://svn.perl.org/perl6/pugs/trunk/docs/zh-cn/01Overview.html</a><br>外典的意思就是用来表明不是larry写的，而是唐自己在larry的基础上对过去的。</p>
<p>这个项目开发的进度很快，在第7天的时候就可以跑大部分的运算程序，到了第20天就有<br>了模块，到了第22天就有上千个测试，到了3月5号，除了对象与rules方面的某些新功能<br>以外，其他的perl6程序全都可以执行。所以整个项目在以一种很恐怖的速度在开发，团<br>队现在有16个人。</p>
<p>现在已经有人写perl6的小例子，还有人在把blosxom（一个轻量级的博客系统）往<br>perl6上面做移植，这个东西已经基本可以在pugs上面运行了，还有其他的很多常见的计<br>算机的运算比如河内塔、快速排序、曼德布罗特集等等都可以在pugs上面运行了，而且<br>执行的速度还很快。</p>
<p>唐开发这个项目没有得到perl基金会的资金支持，主要是最近perl基金会的财源比较拮<br>据，唐认为自己还有财力来独立完成这个项目，所以就没有要perl基金会的赞助。</p>
<p>Pugs的目的就是用来帮助perl6激活。</p>
<p>Perl6(larry启示录中描述的perl6）是一个很复杂很庞大的语言，在pugs实际开发的时<br>候，会发现perl6语言（larry启示录中描述的perl6）有很多自相矛盾的地方，唐的开发<br>团队就把这些问题汇报给larry，然后larry就不断地指导来在pugs的实际开发中就解决<br>这些冲突。这样pugs就可以实际的帮助perl6语言来进一步的完善语言设计。</p>
<p>Pugs的开发计划：希望每个月可以放出一个版本，半年以后可以将pugs移植到parrot上<br>面运行。</p>
<p>6.0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首次释出<br>6.2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基本输入输出与流程控制元件、mutable variables与assignment。<br>6.28:&nbsp;&nbsp;&nbsp;&nbsp; 类（classes）与特质（traits）（perl6的对象系统）。<br>6.283:&nbsp;&nbsp;&nbsp; 规则（rules）与文法（grammars）。<br>6.2831:&nbsp;&nbsp; 角色组合（role composition）及其它执行时期功能。<br>6.28318:&nbsp; 宏（macros）。<br>6.283185 : 如有必要，将 Pugs 移植至 Perl 6。<br>在最后一个版本也就是6.283185的时候就要完成pugs的基本使命，perl6的激活。</p>
<p>Pugs这个项目是用haskell，一种纯正的函数式程序设计语言来写的。<br>网址：<a href="http://www.haskell.org/">http://www.haskell.org/</a><br>大部分的人都不太懂haskell，唐也只是才学haskell两个月。<br>唐正在鼓动perl社区的所有人来学haskell，包括larry。</p>
<p>网址：<a href="http://www.pugscode.org/">http://www.pugscode.org</a></p>
<p>perl附录：<br>Perl简单介绍：</p>
<p>Perl是一种非常易于起步的功能强大且灵活的计算机语言。</p>
<p>Perl的成名起源于Internet的web cgi编程。</p>
<p>Perl的最大优势在于字符处理（Perl有强大的正则表达式支持）。</p>
<p>Perl近年来的优势则体现在拥有cpan上多达7000余个的模块，每个模块都可以帮你完成<br>一部分甚至全部你想要完成的任何工作。</p>
<p>Perl的主要版本已经经历了5个，Perl现在的版本为perl5。</p>
<p>Perl是一个开放源代码的软件，你可以自由的学习、使用甚至改进它。</p>
<p>Perl是hacker们最常用的工具之一，Perl也是系统管理员的挚爱。但是当你真的开始使<br>用perl时，你却会发现你想用perl完成任何你遇到的问题。</p>
<p>perl官方站点介绍：<br>perl的官方首页是一个链接型的页面，在首页上只有各种关于perl的连接，可以说是<br>perl的一个门户。通过上面的不同主题的链接，你可以去到各种perl的相关站点。<br>网址：<a href="http://www.perl.org/">http://www.perl.org</a></p>
<p>Cpan介绍：<br>Cpan是一个有很多perl模块的web站点，perl现在只所以还为大家所使用，大部分是因为<br>cpan的强大能力，在cpan中现在有大约7000多个模块。大约有1000多个是大家常用的。<br>这些模可以直接拿来使用，实现各种各样的功能。所以及大的方便了人们开发perl的软<br>件。因为很多的实现只需要你去cpan下载一个相应的模块，然后安装在你的机器上，再<br>写很少量的代码就可以完成。因此使用perl的开发速度是非常快的。这也就是为什么<br>perl是 hacker的首选工具。他可以很快帮助你造出你想要的实现。<br>网址：<a href="http://www.cpan.org/">http://www.cpan.org</a></p>
<p>Perl核心开发人员的介绍与照片：<br>Larry Wall、Dan Sugalski、Damian Conway。<br>网址：<a href="http://www.perlfoundation.org/gc/grants/2002.html">http://www.perlfoundation.org/gc/grants/2002.html</a></p>
<p>Perlchina简介：<br>一群国内perl爱好者成立的社团，致力于发展perl在国内的影响。<br>网址：<a href="http://www.perlchina.org/">http://www.perlchina.org</a></p>
<p>关于作者：</p>
<p>alexe，一个无业的自由计算机者，热爱自由软件，正在努力编写im与web相关的协议。<br>msn:alexe_com@msn.com</p>
<p>编后话：<br>我花了5天多的时间整理了这篇文章，算是为自己喜欢的perl做点小贡献。</p>
<p>Perl作为一门语言已经有15年的历史了，perl一直在不断的革新自己，而perl6的开发更<br>是要将这种革新发挥到极致，使perl最后能成为一种完美的语言。</p>
<p>perl6的开发可能使perl6成为继.net与java后的第三大平台，但开放源代码作者们并没<br>有什么宏伟的市场设想，他们只是想将自己喜爱的语言完美到极致。虽然在开发perl6的<br>过程中出现了重大的失误，但这无法阻挡有理想有热情的人们，这些人们的努力不计报<br>酬，只是为了能给大家创造更好的 perl，只是为了完成自己的美好理想。</p>
<p>希望以上的努力能让大家更加理解这门与众不同的语言，更加了解开放源代码作者们的<br>远大理想与辛勤努力，让大家知道还有人在不计报酬的为大家创造着更好的软件，希望<br>国内也能有更多的人加入这个阵营，毕竟这意味着我们在往好的方面去发展。</p>
<p>完成于05-3-22凌晨<br>家中床上PDA<br>Alexe</p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125222.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:05 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125222.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从宾馆服务员到微软技术专家</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125223.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:05:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125223.html</guid><description><![CDATA[<p>&nbsp;涂曙光:从宾馆服务员到微软技术专家</p>
<p>涂曙光，微软简洁的名片上，他的职务写着：解决方案技术专家，微软技术大会Tech&#183;ED上，他是年轻而有活力的MVP讲师，在国内SharePoint 技术社区，他是相当知名，并有大量"崇拜者"的Kaneboy。这样的涂曙光，你能把他和一个中专生、一名宾馆服务生联系起来么？</p>
<p>把时间往前拨回9年，从岳阳石油化工学校电气化专业毕业的涂曙光，不愿按照父亲安排进家乡电力公司，心里怀着对计算机的热爱，决心到外面闯一闯，当时他现在的妻子黄燕，和他一同毕业后，在长沙一家宾馆做服务员，于是涂曙光也觅了一个机会去了长沙一家酒店做服务员，紧接着就被送去广州白天鹅宾馆做培训，其间只有很少的一点工资，协议却一签就是一年，他带着个小包就南下去了广州。后来黄燕去广州探望他的时候，发现他的床头放着一本翻得皱皱的《C++语言大全》，那时黄燕已经去了一家电脑培训学校讲授Office方面的课程，看到那本厚厚的《C++语言大全》，惊讶的问："这种全是代码的书，没有电脑实验的情况下，你是怎么读下去的？"涂曙光说："嗯，只要理解了代码，就可以在心里想象出代码的运行过程，知道代码最终的输出结果。"</p>
<p>一年的培训结束后，涂曙光回到了长沙的那家宾馆继续做服务员。回忆起往事，涂曙光笑着说："做服务员让自己得到了一段很难得的人生经历，而且假如有一天过不下去了，我还是可以轻松找份服务员的工作养活自己，我经常用这个底线来鼓励自己！" 不过专职的服务员，涂曙光只做了２个月，随后就到了黄燕所在的电脑公司做起了攒机器的活。后来，涂曙光总笑着说："因为黄燕，我进了IT业。"但黄燕却说："涂曙光最终都会进入到这个行业里面，他的所有兴趣都在计算机上，从看到那本厚厚的《C++语言大全》开始我就知道，无论过程怎样，最终他一定会走上这条自己的路。"</p>
<p>此后的几年时间，涂曙光开始寻找各种进一步深入编程的机会，从电脑公司到网络公司，再到软件公司，先后换了多份工作，接触和使用的技术也经历了CGI、ASP、VB、Delphi的转变。2003年涂曙光进入了深圳一家软件公司，而这家软件公司是微软公司的金牌合作伙伴，于是，他开始接触和研究.NET技术，并很快成为了.NET开发方面的专家。由于公司研发方面的原因，涂曙光开始对当时国内还没有什么人了解的 SharePoint Portal Server开始进行研究，并很快成为了当时国内仅有的极少数SharePoint开发人员之一。</p>
<p>一个偶然的机会，涂曙光在网上看到了现在已经在.NET技术圈相当知名的博客堂网站，立刻萌生了写Blog的年头。从此，国内的SharePoint Portal Server的技术人员就开始在博客堂上看到了一位叫做kaneboy的人在不断的撰写着SharePoint相关的文章，而他的文章，在当时几乎成为了很多人唯一可以得到的SharePoint中文技术资料。2004年，由于涂曙光在博客堂上大量的SharePoint技术文章，他获得了微软最有价值专家（MVP）的称号。</p>
<p>2004年对于涂曙光的职业生涯无疑是一个转折点。因为在获得MVP称号后不久，经过一个成功的面试，他进入了微软公司专业解决方案部，成为了负责Office System和SharePoint Portal Server等产品的解决方案技术专家。</p>
<p><br>编者按：<br>　　10月，刚迈进大学校门的新生们已经开始了大学的学习生活，相信入学的新鲜感散去后，不少学子心底的郁郁不得志开始蔓延：高考的发挥失常，让自己进了一个不太好的学校；不得已选择了一个不喜欢的专业&#8230;&#8230;《程序员》选择在此时讲述涂曙光的故事，希望告诉所有心怀理想的人：不要抱怨环境，路在自己脚下，朝着梦的方向奋飞，终究会拥抱太阳。<br>出处：CSDN </p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:05 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125223.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>警惕第二次现代化的陷阱</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125221.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:03:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125221.html</guid><description><![CDATA[<p>警惕第二次现代化的陷阱</p>
<p>来源：互联网周刊&nbsp; 时间：2006-9-23 19:29:40</p>
<p>重结果轻过程的创新偏差必然会使创新行为被大大扭曲——建设创新型国家，是中国面向第二次现代化的重大战略目标。自主创新，是第二次现代化的必由之路；然而，创新"走捷径"，却是第二次现代化道路上的陷阱。</p>
<p>当前，中国在自主创新一声号令之下，商标注册申请、实用新型专利、外观设计专利申请量，应声一跃而为世界第一，颇有大跃进的气象；然而凡事欲速则不达，从DSP到CPU，从硬件到软件，从产品到标准，没过多久就露馅了：号称"两年跨越二十年"的汉芯DSP爆出造假丑闻；获得"十五"期间国家863计划"超大规模集成电路专项"中最大笔资金投入的方舟科技，在拿到1538万元资金后，放弃了CPU的研究；宣称"完全自主版权"和"中国独立研发成功"的麒麟操作系统，被爆与FreeBSD 5.3在函数名上的相似度有99.45%。无线局域网安全标准WAPI为国家冲锋陷阵，却在顶着敌人和自己人的炮火"前进、进"&#8230;&#8230;</p>
<p>凡此种种乱象，并不说明建设创新型国家的决策有何不妥，自主创新是第一竞争力，方向是对的，但在理解与执行的环节上，看来出了一些问题。这些问题并不能抹煞更为突出的成绩方面，但在前进的每一个阶段，要及时总结经验教训，这样才有利于下一阶段更好地前进。</p>
<p>我认为当前需要反思和总结自主创新中的一种倾向，在贯彻执行中追求形式主义做表面文章。表现在认识上，片面把自主创新当作工具、手段，而忽视了自主创新的目的所在；表现在执行上，单纯从结果上把握自主创新，而不能把自主创新当作过程来把握。</p>
<p>穿透创新迷雾的表象</p>
<p>观察上述创新出现问题的案例，我们可以发现一个共同的特点：所有出问题的环节，都是"一连串事件"链条上的一环；而与其说是一个环节掉链子，还不如说是整个链条本身掉了。</p>
<p>就拿方舟科技来说，媒体的炮火都集中在方舟科技CEO李德磊宣称无利可图所以放弃CPU。这是找错了方向。媒体为什么不分析一下，如果CPU真是一个好买卖，李德磊为什么要放弃；人们不是常说研发要以市场为导向吗，一个商人根据市场需要调整研发方向，这一点是否有错呢？追究方舟科技违约，追到了三名高管10万元左右的月薪上，在我看也是小题大做，不是问题的根本。如果认为CPU寄托了政府信息强国的意志，方舟科技不该放弃，那么换位思考一下，我们怎么面对"你不能要求一个商业公司，对一个市场反应冷淡的产品一直投入下去，那本来应该是高校和研究院去做的事情"的诘问呢。实际上，整条链子，无论是市场、政府还是研究，都是相互脱节的。政府的力量，不足以形成一个有效的链条。CPU孤军深入，结果也会有人付出承受不起的代价。而大家陷入了一种唯结果论的思维：有了CPU这个结果，一切都好；没有这个结果，一切都不好。</p>
<p>再看汉芯这个例子。大家都在说陈进这个人怎么怎么样，整个链子却置身事外，不见下文。回过头来发现，整个造假事件中，许多环节都可以使问题暴露出来，而陈进抓住了最主要的一个环节，这就是结果。只要把结果包装好，一切过程都不重要了；相反，结果露了馅，一切过程经不起推敲。如果就事论事，下回还可能出现同样的事情。问题的要害在于，我们在创新问题上，只关心结果，不关心过程。这是创新造假在过程中难以揭露的根本原因。</p>
<p>由此，我想到保护大熊猫。为什么生态学家不主张克隆大熊猫？因为大熊猫是生态上"一连串事件"的结果。仅仅把结果复制出来，并不能解决生态环境中的"一连串事件"的问题。这样的话，大熊猫问题势必变成儿童娱乐的问题，而非生态问题本身。同样，方舟CPU、汉芯DSP，就是那个"大熊猫"，许多人拿创新当动物园宝贝，而并不真正关心创新本身，这是是陷入第二次现代化陷阱的开始。</p>
<p>创新陷阱的制度化表现</p>
<p>更为严重的是，第二次现代化陷阱（创新陷阱）并不仅仅表现在个案中，而是深入我们制度设计的思维中。在自主创新的制度设计上，我们何尝不是只问结果，不问过程呢？</p>
<p>前一年我们的商标申请量是58.8万件，实用新型专利、外观设计专利的申请分别是11万件，都居世界第一位。但其中许多是"垃圾专利"，也就是没有任何创新内容的专利，这些所谓的"垃圾专利"主要集中在实用新型和外观设计两个领域。</p>
<p>知识产权局负责人指出其中的问题：近几年来，中国地方政府为了鼓励专利申请，相继出台了一些资助政策，这些政策对鼓励发明创造，提高全民族的创新积极性起到了积极的作用。但是由于这些新出台的政策尚有不完善的地方，比如，以专利申请数量作为衡量标准，于是少数专利申请人出于投机心理，将现有技术不做任何改进申请了专利，以套取资助，这是出现这类专利的主观原因。</p>
<p>很显然，一些地方政府理解的创新，就是创新的结果，有没有过程无所谓。为什么鼓励创新，到了地方，就流于形式？我认为制度设计过于偏重创新结果，忽视创新过程，是指导思想上的偏差。实践已经证明效果不好，需要进一步改革完善。知识产权保护制度本身，就是一种面向结果的制度，所以再完整的知识产权保护制度，对于自主创新，都是不"完整"的。重知识产权保护，轻知识共享和应用，会导致重知识结果保护，轻知识过程管理。好比重视大熊猫，而轻视生态环境本身。</p>
<p>重结果，轻过程的创新陷阱，会导致一些不是问题的问题，成为问题。例如它会反过来扭曲创新过程。</p>
<p>最典型的，就是Linux。Linux在各国都是开放的；只有到了中国，才由开放变成封闭。为什么呢，因为如果按照Linux和开放源代码本身的游戏规则，许多成果只具有创新过程的意义，只具有实际应用的意义，而缺乏知识产权结果上的意义。</p>
<p>就拿麒麟操作系统来说，本来，这一操作系统，采用开放源代码的成果，只要可以应用，产生效益，就可以了。非要宣称"完全自主版权"和"中国独立研发成功"，就是受知识产权保护的误导，仿佛不把开放源代码变成知识产权就没有意义。</p>
<p>面对以上事实，我们难道还认为重结果轻过程的创新偏差是个别的吗，难道不要反思"全面"建设创新型国家的更为全面的做法吗？</p>
<p>我认为，出现危及第二次现代化的创新陷阱，根本原因不在个别行为和制度设计层面，而在认识层面。许多人，包括一些政府部门和一些地方政府，形式化地理解建设创新型国家，把自主创新，仅仅理解为一种工具，一种手段，而背离了自主创新的实质和目的。自主创新，对官员来说，一旦当作升官的工具和手段，自然会只追求结果，追求数量，而不问创新本身；自主创新，对某些商人来说，一旦成为骗取国家政策的工具和手段，就会被利用来搞房地产、避税，而不是真做创新文章。这样下去，创新型国家就会重蹈制造型国家的覆辙—大而不强。国际上的潮流是创新的结果与创新的过程并重，"干中学"，"干中创"，让自主创新，沿着活的知识，用的知识，生活知识的方向发展。中国建设创新型国家，应当注重知识产权保护与知识共享应用并重发展，才能从根本上纠正当前的偏向，避免第二次现代化的陷阱。</p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:03 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125221.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>跟随微软的程序员都是可怜虫</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125220.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:02:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125220.html</guid><description><![CDATA[<p>跟随微软的程序员都是可怜虫</p>
<p>我就是一个，在微软平台下开发快10年了；开发工具换了一茬又一茬；<br>我一哥们，做IBM的AS400，也做了10年了；开发工具一直没变；</p>
<p>我从DOS开发到Windows2003，每次系统的升级就会是一次重新学习，每次都要重新练级；每次都是新手；<br>IBM AS400就没有怎么升级，我的哥们已经从新手变成了老老手；</p>
<p>十年时间过去，我变成了微软平台的资深新手，他成了AS400的资深高手；</p>
<p>我每天都在担心，再过几年，老板就不会要我这么老的程序员了，比我年轻的多得是；<br>他的老板每天都在担心，这个哥们会不会跳槽，我得再给他多加点工资，增加点福利；</p>
<p>现在，Vista又来了。</p>
<p>DotNet从2.0 升级到了3.0，又是一次天翻地覆的变化；</p>
<p>新程序员们欢天喜地，因为简历上又可以写上&#8220;精通Vista，精通DotNet 3.0&#8221;了；</p>
<p>只有在1.0，1.1，2.0 上开发了几年的程序员们会哭，以前的投资又打水漂了。</p>
<p>俗话说：男怕入错行，女怕嫁错郎；这入对了行，也怕选错了平台。</p>
<p>如果退回10年，我绝对不会在微软的平台上写一行代码。<br></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125220.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:02 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125220.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提问的智慧</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125219.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 15:00:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125219.html</guid><description><![CDATA[<p>How To Ask Questions The Smart Way<br>提问的智慧</p>
<p>Copyright (C) 2001 by Eric S. Raymond<br>中文版Copyleft 2001 by D.H.Grand(nOBODY/Ginux)</p>
<p>英文版：<a href="http://www.tuxedo.org/~esr/faqs/smart-questions.html">http://www.tuxedo.org/~esr/faqs/smart-questions.html</a><br>感谢Eric的耐心指点和同意，本文才得以完成并发布，本指南英文版版权为Eric<br>Steven Raymond所有，中文版版权由D.H.Grand[nOBODY/Ginux]所有。</p>
<p>目录</p>
<p>简介<br>提问之前<br>怎样提问<br>谨慎选择论坛<br>尽量使用邮件列表<br>用辞贴切，语法正确，拼写无误<br>用易读格式发送问题<br>使用含义丰富，描述准确的标题<br>精确描述，信息量大<br>话不在多<br>只说症状，不说猜想<br>按时间顺序列出症状<br>别要求私下答复<br>明白你想问什么<br>别问应该自己解决的问题<br>去除无意义的疑问<br>谦逊绝没有害处，而且常帮大忙<br>问题解决后，加个简短说明<br>如何理解答案<br>RTFM和STFW：别烦我啦<br>还是不懂<br>面对无礼</p>
<p>决不要象个失败者<br>三思而后问<br>好问题，坏问题<br>找不到答案怎么办</p>
<p>====<br>简介<br>====</p>
<p>在黑客世界里，当提出一个技术问题时，你能得到怎样的回答？这取决于挖出答案<br>的难度，同样取决于你提问的方法。本指南旨在帮助你提高发问技巧，以获取你最<br>想要的答案。</p>
<p><br>首先你必须明白，黑客们只偏爱艰巨的任务，或者能激发他们思维的好问题。如若<br>不然，我们还来干吗？如果你有值得我们反复咀嚼玩味的好问题，我们自会对你感<br>激不尽。好问题是激励，是厚礼，可以提高我们的理解力，而且通常会暴露我们以<br>前从没意识到或者思考过的问题。对黑客而言，&#8220;问得好！&#8221;是发自内心的大力称<br>赞。</p>
<p>尽管黑客们有蔑视简单问题和不友善的坏名声，有时看起来似乎我们对新手，对知<br>识贫乏者怀有敌意，但其实不是那样的。</p>
<p>我们不想掩饰对这样一些人的蔑视--他们不愿思考，或者在发问前不去完成他们应<br>该做的事。这种人只会谋杀时间--他们只愿索取，从不付出，无端消耗我们的时间<br>，而我们本可以把时间用在更有趣的问题或者更值得回答的人身上。我们称这样的<br>人为&#8220;失败者&#8221;（由于历史原因，我们有时把它拼作&#8220;lusers&#8221;）。</p>
<p>我们也知道，很多人只想使用我们编写的软件，对技术细节没什么兴趣。对多数人<br>们而言，计算机不过是一个工具，一种达到目的的手段；他们有更重要的事情要做<br>，有更重要的生活要过。我们明白这点，也并不奢望每个人都对另我们痴狂的技术<br>问题有兴致。然而，我们回答问题的风格是针对这样一群人--他们有兴趣，并且愿<br>意积极参与问题的解决。这点不会改变，也不应该改变；如果变了，我们将失去我<br>们引以为傲的效率。</p>
<p>我们在很大程度上属于志愿者，从繁忙的生活中抽出时间来解惑答疑，而且时常被<br>提问淹没。所以我们无情的滤掉一些话题，特别是抛弃那些看起来象失败者的家伙<br>，以便更高效的利用时间来回答胜利者的问题。</p>
<p><br>如果你觉得我们过于傲慢的态度让你不爽，让你委屈，不妨设身处地想想。我们并<br>没有要求你向我们屈服--事实上，我们中的大多数人最喜欢公平交易不过了，只要<br>你付出小小努力来满足最起码的要求，我们就会欢迎你加入到我们的文化中来。但<br>让我们帮助那些不愿意帮助自己的人是没有意义的。如果你不能接受这种&#8220;歧视&#8221;<br>，我们建议你花点钱找家商业公司签个技术支持协议得了，别向黑客乞求帮助。</p>
<p><br>如果你决定向我们求助，当然不希望被视为失败者，更不愿成为失败者中的一员。<br>立刻得到有效答案的最好方法，就是象胜利者那样提问--聪明、自信、有解决问题<br>的思路，只是偶尔在特定的问题上需要获得一点帮助。</p>
<p>（欢迎对本指南提出改进意见。任何建议请E-mail至<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#115;&#114;&#64;&#116;&#104;&#121;&#114;&#115;&#117;&#115;&#46;&#99;&#111;&#109;">esr@thyrsus.com</a>，然而请注<br>意，本文并非网络礼节的通用指南，我通常会拒绝无助于在技术论坛得到有用答案<br>的建议。）<br>（当然，如果你写中文，最好还是寄到<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#68;&#72;&#71;&#114;&#97;&#110;&#100;&#64;&#104;&#111;&#116;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">DHGrand@hotmail.com</a>;-）</p>
<p>========<br>提问之前<br>========</p>
<p>在通过电邮、新闻组或者聊天室提出技术问题前，检查你有没有做到：<br>1. 通读手册，试着自己找答案。<br>2. 在FAQ里找答案（一份维护得好的FAQ可以包罗万象:）。<br>3. 在网上搜索（个人推荐google~~~）。<br>4. 向你身边精于此道的朋友打听。</p>
<p>当你提出问题的时候，首先要说明在此之前你干了些什么；这将有助于树立你的形<br>象：你不是一个妄图不劳而获的乞讨者，不愿浪费别人的时间。能说明你从这些操<br>作中学到了什么就更好了。如果提问者能从答案中学到东西，我们更乐于回答他的<br>问题。</p>
<p>周全的思考，准备好你的问题，草率的发问只能得到草率的回答，或者根本得不到<br>任何答案。越表现出在寻求帮助前为解决问题付出的努力，你越能得到实质性的帮<br>助。</p>
<p>小心别问错了问题。如果你的问题基于错误的假设，普通黑客（J. Random<br>Hacker）通常会用无意义的字面解释来答复你，心里想着&#8220;蠢问题...&#8221;，希望着<br>你会从问题的回答（而非你想得到的答案）中汲取教训。</p>
<p>决不要自以为够资格得到答案，你没这种资格。毕竟你没有为这种服务支付任何报<br>酬。你要自己去&#8220;挣&#8221;回一个答案，靠提出一个有内涵的，有趣的，有思维激励作<br>用的问题--一个对社区的经验有潜在贡献的问题，而不仅仅是被动的从他人处索要<br>知识--去挣到这个答案。</p>
<p>另一方面，表明你愿意在找答案的过程中做点什么，是一个非常好的开端。&#8220;谁能<br>给点提示？&#8221;、&#8220;我这个例子里缺了什么？&#8221;以及&#8220;我应该检查什么地方？&#8221;比&#8220;<br>请把确切的过程贴出来&#8221;更容易得到答复。因为你显得只要有人指点正确的方向，<br>你就有完成它的能力和决心。</p>
<p>========<br>怎样提问<br>========</p>
<p>------------<br>谨慎选择论坛<br>------------</p>
<p>小心选择提问的场合。如果象下面描述的那样，你很可能被忽略掉或者被看作失败<br>者：<br>1. 在风马牛不相及的论坛贴出你的问题<br>2. 在探讨高级技巧的论坛张贴非常初级的问题；反之亦然<br>3. 在太多的不同新闻组交叉张贴</p>
<p>黑客们通常砍掉问错地方的问题，以保护自己的社区不被大量无关帖子淹没。你不<br>会希望自己的帖子被这样砍掉吧。</p>
<p>总的说来，问题发到精心挑选的公众论坛，比发到封闭的小圈子更容易得到有用的<br>答案。这一现象有多种原因，其中之一是公众论坛有更多潜在的问题回答者；另一<br>个原因是公众论坛有更多的听众。黑客们更愿意让尽量多的人--而非有限的一两个<br>--从回答中受益。</p>
<p>----------------<br>尽量使用邮件列表<br>----------------</p>
<p>如果某项目有自己的开发邮件列表，要把问题发到这个邮件列表而不是某个开发者<br>，即使你很清楚谁最能回答你的问题。仔细查看项目文档和项目主页，找到这个项<br>目的邮件列表地址，这样做的理由有四：<br>1. 任何值得问某位开发者的好问题，都值得向整个开发团体提出。反之，若你认<br>为这个问题不值得在邮件列表中提起，就没有理由用它来骚扰任何一位开发者。</p>
<p>2. 在邮件列表提问可以分担开发者的工作量。某位开发者（尤其当他是项目负责<br>人的情况下），可能忙得没时间回答你的问题。<br>3. 大多数邮件列表都有历史存档，而且都能在搜索引擎中检索到。人们可以从中<br>找到你的问题和答案，不用一遍又一遍在列表中发问。<br>4. 如果某个问题经常被提出，开发者可以据此改进文档或改进软件，以减少用户<br>的困惑。而如果问题总在私下提出，就不会有人对此有整体上的把握了。</p>
<p>如果你找不到项目的邮件列表地址，只能看到项目维护者的，那就写给维护者吧。<br>在这种情况下，也别以为邮件列表并不存在。在你的信中写明你已尽力寻找，仍无<br>法找到邮件列表。另外表明你不介意将此消息转给他人。（大多数人认为私信就应<br>该是私下的，即使并没有什么可保密的内容。允许你的消息被转寄给他人，给了收<br>信者一种处理你邮件的选择。）</p>
<p>----------------------------<br>用辞贴切，语法正确，拼写无误<br>----------------------------</p>
<p>我们从经验中发现，粗心的写作者通常也是马虎的思考者（我敢打包票）。回答粗<br>心大意者的问题很不值得，我们宁愿把时间耗在别处。</p>
<p>因此，明确充分表述你的问题非常重要。如果你嫌这样做麻烦，我们也会懒得搭理<br>你。注意推敲你的用辞，不一定要用呆板正式的语言--事实上，黑客文化的价值观<br>是不拘小节。准确的运用俚语和富有幽默感的语言，但别乱用；一定要能表明你在<br>思考，在关注。</p>
<p>正确的拼写，标点符号和大小写很重要。别把&#8220;its&#8221;和&#8220;it's&#8221;或者&#8220;loose&#8221;和<br>&#8220;lose&#8221;搞混淆了。别用全部大写的形式，这被视为粗鲁的大声叫嚷（全都用小写<br>也好不到哪儿去，因为这会给阅读带来困难。Alan Cox可以用全部小写，但你不行<br>）。</p>
<p>更一般的说，如果你的提问写得象个半文盲，你很有可能被忽视。如果写得象一个<br>窥客（破解爱好者）或者灰客（只会用现成工具的捣乱者）绝对是自己找死，保证<br>你除了无情的抵制什么也得不到（或者，最好的结局是得到一大堆挖苦嘲笑的&#8220;帮<br>助&#8221;）。</p>
<p>如果你在使用非母语的论坛提问，你可以犯点拼写和语法上的小错--但决不能在思<br>考上马虎（没错，我们能弄清两者的分别）。另外，除非你确切知道你的回答者会<br>使用什么语言，否则请用英文。匆匆忙忙的黑客往往简单的跳过他们看不懂的问题<br>，而英文是网络上的工作语言。用英文可以降低你的问题未被阅读即遭抛弃的风险<br>。</p>
<p>------------------<br>用易读格式发送问题<br>------------------</p>
<p>如果人为造成你的提问难以阅读和理解，将会更容易被人忽略。因此你要：<br>1. 使用纯文本邮件，不要使用HTML（关掉HTML并不难）。<br>2. 通常可以附加MIME附件，但一定要有真正的内容（例如附加的源文件或者补丁<br>），而不仅仅是你的邮件客户端产生的文件模板（例如你邮件的一份拷贝）。<br>3. 不要把所有问题放在不停换行的一整段中。（这将让答复的人难于回答其中一<br>部分问题，即使能回答所有问题，我也更希望条理清楚的一个一个来:）。很可能<br>收件人只能在80个字符宽度的文本显示器上读信，因此要相应的把行环绕模式设在<br>80字符以内。<br>4. 不要在英文论坛使用MIME Quoted-Printable编码发送；这种编码格式对ASCII<br>码不能表达的语言来说是非常必要的，但很多邮件代理不支持它，这时，满篇的&#8220;<br>=20&#8221;符号把文字分割开，既难看，又分散注意力。<br>5. 永远不要指望黑客会乐于阅读封闭所有权的文件格式，例如萎软的Word格式。<br>多数黑客对此的反应就象你在门口的阶梯上堆满热烘烘的猪粪（意即谁也不会踏进<br>你的门--译者注）。<br>6. 如果你通过一台安装Windows的电脑发送邮件，关闭萎软愚蠢的&#8220;智能引用&#8221;功<br>能。这能使你免于在邮件中夹带垃圾字符。</p>
<p>----------------------------<br>使用含义丰富，描述准确的标题<br>----------------------------</p>
<p>在邮件列表或者新闻组中，大约50字以内的主题标题是抓住资深专家注意力的黄金<br>时机。别用喋喋不休的&#8220;帮帮忙&#8221;（更别说&#8220;救命啊！！！！！&#8221;这样让人反感的<br>话）来浪费这个机会。不要妄想用你的痛苦程度来打动我们，别用空格代替问题的<br>描述，哪怕是极其简短的描述。</p>
<p>蠢问题：<br>救命啊！我的膝上机不能正常显示了！</p>
<p>聪明问题：<br>XFree86 4.1下鼠标光标变形，Fooware MV1005的显示芯片。</p>
<p>如果你在回复中提出问题，记得要修改内容标题，表明里面有一个问题。一个看起<br>来象&#8220;Re：测试&#8221;或者&#8220;Re：新bug&#8221;的问题很难引起足够重视。另外，引用并删<br>减前文的内容，给新来的读者留下线索。</p>
<p>------------------<br>精确描述，信息量大<br>------------------</p>
<p>1. 谨慎明确的描述症状。<br>2. 提供问题发生的环境（机器配置、操作系统、应用程序以及别的什么）。<br>3. 说明你在提问前是怎样去研究和理解这个问题的。<br>4. 说明你在提问前采取了什么步骤去解决它。<br>5. 罗列最近做过什么可能有影响的硬件、软件变更。</p>
<p>尽量想象一个黑客会怎样反问你，在提问的时候预先给他答案。</p>
<p>Simon Tatham写过一篇名为《如何有效的报告Bug》的出色短文。强力推荐你也读<br>一读。</p>
<p>--------<br>话不在多<br>--------</p>
<p>你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完<br>全转储摘录到你的提问中。如果你有庞大而复杂的测试条件，尽量把它剪裁得越小<br>越好。</p>
<p>这样做的用处至少有三点。第一，表现出你为简化问题付出了努力，这可以使你得<br>到回答的机会增加；第二，简化问题使你得到有用答案的机会增加；第三，在提炼<br>你的bug报告的过程中，也许你自己就能找出问题所在或作出更正。</p>
<p>------------------<br>只说症状，不说猜想<br>------------------</p>
<p>告诉黑客们你认为问题是怎样引起的没什么帮助。（如果你的推断如此有效，还用<br>向别人求助吗？），因此要确信你原原本本告诉了他们问题的症状，不要加进你自<br>己的理解和推论。让黑客们来诊断吧。</p>
<p>蠢问题：<br>我在内核编译中一次又一次遇到SIG11错误，我怀疑某条飞线搭在主板的走线上了<br>，这种情况应该怎样检查最好？</p>
<p>聪明问题：<br>我自制的一套K6/233系统，主板是FIC-PA2007 （VIA Apollo VP2芯片组），256MB<br>&nbsp;Corsair PC133 SDRAM，在内核编译中频频产生SIG11错误，从开机20分钟以后就<br>有这种情况，开机前20分钟内从没发生过。重启也没有用，但是关机一晚上就又能<br>工作20分钟。所有内存都换过了，没有效果。相关部分的典型编译记录如下...。</p>
<p><br>------------------<br>按时间顺序列出症状<br>------------------</p>
<p>对找出问题最有帮助的线索，往往就是问题发生前的一系列操作，因此，你的说明<br>应该包含操作步骤，以及电脑的反应，直到问题产生。在命令行操作的情况下，保<br>存一个操作记录（例如使用脚本工具），并且引用相关的大约20条命令会大有帮助<br>。</p>
<p>如果崩溃的程序有诊断选项（例如用-v转到详尽模式），试着仔细考虑选择选项以<br>在操作记录中增加有用的调试信息。</p>
<p>如果你的说明很长（超过四个段落），在开头简述问题会有所帮助，接下来按时间<br>顺序详述。这样黑客们就知道该在你的说明中找什么。</p>
<p>--------------<br>别要求私下答复<br>--------------</p>
<p>黑客们认为解决问题应该有公开、透明的流程。只要任何更有见地的人注意到答案<br>的不完善或者不正确，这个最初的答案就可以和应该得到纠正。同时，通过能力和<br>知识被大家注意，被大家接受，回答问题者得到了应有的奖励。</p>
<p>如果你要求对方私下回答你，这既破坏了整个流程，也破坏了奖励制度。别提这要<br>求，这是回答者的权利，由他来选择是否私下答复--如果他选择这样做，通常是因<br>为他认为这个答案过于显而易见或者有不良的公开影响，别人不会感兴趣。</p>
<p>只有一种有限的例外：如果你预计将收到大量雷同的答复，你可以说：&#8220;把答案寄<br>给我，由我来汇总吧。&#8221;将邮件列表或者新闻组从大量重复的帖子中打救出来是很<br>有君子之风的--但请记住，履行自己关于汇总的承诺。</p>
<p>--------------<br>明白你想问什么<br>--------------</p>
<p>漫无边际的提问近乎无休无止的时间黑洞。最能给你有用答案的人也正是最忙的人<br>（他们忙是因为要亲自完成大部分工作）。这样的人对无节制的时间黑洞不太感冒<br>，因此也可以说他们对漫无边际的提问不大感冒。</p>
<p>如果你明确表述需要回答者做什么（提供建议，发送一段代码，检查你的补丁或是<br>别的），就最有可能得到有用的答案。这会定出一个时间和精力的上限，便于回答<br>者集中精力来帮你，这很凑效。</p>
<p>要理解专家们生活的世界，要把专业技能想象为充裕的资源，而回复的时间则是贫<br>乏的资源。解决你的问题需要的时间越少，越能从忙碌的专家口中掏出答案。</p>
<p>因此，优化问题的结构，尽量减少专家们解决它所需要的时间，会有很大的帮助<br>--这通常和简化问题有所区别。因此，问&#8220;我想更好的理解X，能给点提示吗？&#8221;<br>通常比问&#8220;你能解释一下X吗？&#8221;更好。如果你的代码不能工作，问问它有什么地<br>方不对，比要求别人替你修改要明智得多。</p>
<p>------------------------<br>别问应该自己解决的问题<br>------------------------</p>
<p>黑客们总是善于分辨哪些问题应该由你自己解决；因为我们中的大多数都曾自己解<br>决这类问题。同样，这些问题得由你来搞定，你会从中学到东西。你可以要求给点<br>提示，但别要求得到完整的解决方案。</p>
<p>----------------<br>去除无意义的疑问<br>----------------</p>
<p>别用无意义的话结束提问，例如&#8220;有人能帮我吗？&#8221;或者&#8220;有答案吗？&#8221;。首先：<br>如果你对问题的描述不很合适，这样问更是画蛇添足。其次：由于这样问是画蛇添<br>足，黑客们会很厌烦你--而且通常会用逻辑上正确的回答来表示他们的蔑视，例如<br>：&#8220;没错，有人能帮你&#8221;或者&#8220;不，没答案&#8221;。</p>
<p>----------------------------<br>谦逊绝没有害处，而且常帮大忙<br>----------------------------</p>
<p>彬彬有礼，多用&#8220;请&#8221;和&#8220;先道个谢了&#8221;。让大家都知道你对他们花费时间义务提<br>供帮助心存感激。</p>
<p>实话实说，虽然这不象合乎语法、清楚准确的描述，避免私有格式等等那么重要（<br>也不能用来替代它们）；黑客一般更喜欢直接了当然而技术上敏锐的bug报告，而<br>不是彬彬有礼的废话（如果这让你迷惑不解，请记住，我们衡量一个问题价值的标<br>准是：它能让我们学会多少）。</p>
<p>然而，如果你有很多问题无法解决，礼貌将会增加你得到有用答案的机会。</p>
<p>（我们注意到，自从本指南发布后，从资深黑客处得到的唯一严重缺陷反馈，就是<br>对预先道谢这一条。一些黑客觉得&#8220;先谢了&#8221;的言外之意是过后就不会再感谢任何<br>人了。我们的建议是：都道谢。）</p>
<p>------------------------<br>问题解决后，加个简短说明<br>------------------------</p>
<p>问题解决后，向所有帮助过你的人发个说明，让他们知道问题是怎样解决的，并再<br>一次向他们表示感谢。如果问题在新闻组或者邮件列表中引起了广泛关注，应该在<br>那里贴一个补充说明。</p>
<p>补充说明不必很长或是很深入；简单的一句&#8220;你好，原来是网线出了问题！谢谢大<br>家--Bill&#8221;比什么也不说要强。事实上，除非结论真的很有技术含量，否则简短可<br>爱的小结比长篇学术论文更好。说明问题是怎样解决的，但大可不必将解决问题的<br>过程复述一遍。</p>
<p>除了表示礼貌和反馈信息以外，这种补充有助于他人在邮件列表/新闻组/论坛中搜<br>索对你有过帮助的完整解决方案，这可能对他们也很有用。</p>
<p>最后（至少？），这种补充有助于所有提供过帮助的人从中得到满足感。如果你自<br>己不是老手或者黑客，那就相信我们，这种感觉对于那些你向他们求助的导师或者<br>专家而言，是非常重要的。问题久拖未决会让人灰心；黑客们渴望看到问题被解决<br>。好人有好报，满足他们的渴望，你会在下次贴出新问题时尝到甜头。</p>
<p>============<br>如何理解答案<br>============</p>
<p>--------------------<br>RTFM和STFW：别烦我啦<br>--------------------</p>
<p>有一个古老而神圣的传统：如果你收到&#8220;RTFM （Read The Fucking Manual）&#8221;的<br>回复，回答者认为你应该去读TMD手册。当然，基本上他是对的，你应该读一读。</p>
<p><br>RTFM有一个年轻的亲戚。如果答案是&#8220;STFW （Search The Fucking Web）&#8221;，回<br>答者认为你应该到TMD的网上去搜索。基本上，他也是对的，你就去找吧。</p>
<p>通常，用这两句之一回答你的人会给你一份包含你需要内容的手册或者一个网址，<br>而且他们打这些字的时候正在阅读着。这些答复意味着回答者认为(1). 你需要的<br>信息非常容易获得；(2). 你自己去搜索这些信息比灌给你能让你学到更多。</p>
<p>别为这个而不爽；依照黑客的标准，他没有对你的要求视而不见，已经能大致能表<br>示对你的关注。你应该对他祖母般的慈祥表示感谢。</p>
<p>----------<br>还是不懂<br>----------</p>
<p>如果你不是很理解答案，别立刻要求对方解释。象你以前试着自己解决问题时那样<br>（利用手册，FAQ，网络，身边的高手），去理解它。如果你真的需要对方解释，<br>记得表现出你已经学到了点什么。</p>
<p>比方说，如果我回答你：&#8220;看来似乎是zEntry被阻塞了；你应该先清除它。&#8221;，然<br>后：</p>
<p><br>一个很糟的后续问题：&#8220;zEntry是什么？&#8221;</p>
<p>聪明的问法应该是这样：&#8220;哦~~~我看过帮助了但是只有-z和-p两个参数中提到了<br>zEntry而且还都没有清楚的解释:&lt;你是指这两个中的哪一个吗？还是我看漏了什么<br>？&#8221;</p>
<p>--------<br>面对无礼<br>--------</p>
<p>黑客圈子里很多貌似粗鲁的言行并非有意冒犯。更恰当的说，这是直率、不说废话<br>的沟通方式的产物，这种沟通方式源于人们关注问题的解决--多过让人感受温暖亲<br>情然而却依旧糊里糊涂--的天性。</p>
<p>如果你觉得受到粗鲁的对待，请保持冷静。如果真有人表现粗野，通常会有列表/<br>新闻组/论坛的长辈找他谈心，如果没有这样，而你又大发脾气，则很可能对方的<br>言行是黑客社区行为规范许可内，而你被认为是有过错的。这会不利于你得到信息<br>或者帮助。</p>
<p>另一方面，你偶尔也会无缘无故有粗野的言行和心态。上述现象的另一面是，人们<br>允许狠狠打击真正的冒犯者，用尖刻的言语剖析他们的不当言行。如果你真决定这<br>样做，先仔细又仔细的掂量一下你自己的分量。合理的粗鲁与发动一场无意义的论<br>战之间只隔了一条细细的线，冒冒失失撞上去的黑客不在少数；如果你是新手或者<br>门外汉，不犯这种错的机会是很渺茫的。如果你想得到信息而不是来胡闹，别冒险<br>回复，最好把手从键盘上拿开。</p>
<p>（有些人声称多数黑客有孤僻症或者社交障碍综合征的轻度症状，而且确实缺少部<br>分有助&#8220;常人&#8221;进行社交行为的脑组织结构。这也许是真的，也许不是。如果你自<br>己不是黑客，那么，把我们想象成脑部有缺陷的人有助你面对我们的古怪。有话直<br>说，我们无所谓；我们乐于按自己的想法生活，而且总是对医学概念持相当怀疑的<br>态度。）</p>
<p>在下一节里，我们将谈论另一个话题；当你行差踏错时可能遇到的&#8220;无礼&#8221;。</p>
<p>================<br>决不要象个失败者<br>================</p>
<p>很有可能，你在黑客社区的论坛会受到很多公开的攻击--用本文提到的各种方式或<br>类似的方法，而且很可能会有各式各样的旁敲侧击来告诉你你有多讨厌。</p>
<p>如果噩梦成真，你能做的最糟的事就是为此发牢骚，抱怨受到人身攻击，要求对方<br>道歉，尖叫，屏住呼吸，威胁要控诉对方，向他老板告状，不掀起马桶座圈，等等<br>等等。然而，你应该这样：</p>
<p>由它去吧，这没什么大不了的。实际上这么做是恰当的和有益的（主要是有利身心<br>健康:）。</p>
<p>社区的规范不靠社区，而是靠积极推行它们的人们来维护，这种维护是公开的，显<br>而易见的。别抱怨说一切批评都应该通过私信传送，它本来就不该那样。当别人指<br>出你的话有错误，或者他有不同观点的时候，坚持认为他在羞辱你是没有用的。这<br>些都是失败者的态度。</p>
<p>有那么一些黑客论坛，出于对高度自谦的误解，禁止参与者张贴专给人找茬的帖子<br>，而且被告知&#8220;如果不愿帮助用户，那就闭嘴。&#8221;，他们认为，引开参与者的话题<br>，只会使得他们陶醉在毫无意义的喋喋不休中，从而失去了技术论坛的意义。</p>
<p>夸张的&#8220;友善&#8221;（以那种方式）还是有用的帮助：你自己选择吧。</p>
<p>记住：当黑客说你很烦人，（无论用多么粗暴的语言）警告你别再那样做了，他的<br>本意并非是针对(1)你，以及(2)他的社区。他本来可以轻易的忽略你，把你从他的<br>视线中抹去。如果你无法接受要向他表示感激，至少应该表现出你的气度，别抱怨<br>，别期望只因为你是新人，你有戏剧般的敏感脆弱的神经和自封的权利，而受到易<br>碎玩偶般的特别对待。</p>
<p>==========<br>三思而后问<br>==========</p>
<p>以下是几个经典蠢问题，以及黑客在拒绝回答时的心中所想：</p>
<p>问题：我能在哪找到X程序？<br>问题：我的程序/配置/SQL申明没有用<br>问题：我的Windows有问题，你能帮我吗？<br>问题：我在安装Linux（或者X）时有问题，你能帮我吗？<br>问题：我怎么才能破解root帐号/窃取OP特权/读别人的邮件呢？</p>
<p>提问：我能在哪找到X程序？<br>回答：就在我找到它的地方啊蠢货--搜索引擎的那一头。天呐！还有人不会用<br>Google吗？</p>
<p>提问：我的程序（配置、SQL申明）没有用<br>回答：这不算是问题吧，我对找出你的真正问题没兴趣--如果要我问你二十个问题<br>才找得出来的话--我有更有意思的事要做呢。在看到这类问题的时候，我的反应通<br>常不外如下三种：<br>1. 你还有什么要补充的吗？<br>2. 真糟糕，希望你能搞定。<br>3. 这跟我有什么鸟相关？</p>
<p>提问：我的Windows有问题，你能帮我吗？<br>回答：能啊，扔掉萎软的垃圾，换Linux吧。</p>
<p>提问：我在安装Linux（或者X）时有问题，你能帮我吗？<br>回答：不能，我只有亲自在你的电脑上动手才能找到毛病。还是去找你当地的<br>Linux用户组寻求手把手的指导吧（你能在这儿找到用户组的清单）。</p>
<p>提问：我怎么才能破解root帐号/窃取OP特权/读别人的邮件呢？<br>回答：想要这样做，说明你是个卑鄙小人；想找个黑客帮你，说明你是个白痴！</p>
<p><br>==============<br>好问题，坏问题<br>==============</p>
<p>最后，我举一些例子来说明，怎样聪明的提问；同一个问题的两种问法被放在一起<br>，一种是愚蠢的，另一种才是明智的。</p>
<p>蠢问题：我可以在哪儿找到关于Foonly Flurbamatic的资料？<br>这种问法无非想得到&#8220;STFW&#8221;这样的回答。</p>
<p>聪明问题：我用Google搜索过&#8220;Foonly Flurbamatic 2600&#8221;，但是没找到有用的<br>结果。谁知道上哪儿去找对这种设备编程的资料？<br>这个问题已经STFW过了，看起来他真的遇到了麻烦。</p>
<p>蠢问题：我从FOO项目找来的源码没法编译。它怎么这么烂？<br>他觉得都是别人的错，这个傲慢自大的家伙</p>
<p>聪明问题：FOO项目代码在Nulix 6.2版下无法编译通过。我读过了FAQ，但里面没<br>有提到跟Nulix有关的问题。这是我编译过程的记录，我有什么做得不对的地方吗<br>？<br>他讲明了环境，也读过了FAQ，还指明了错误，并且他没有把问题的责任推到别人<br>头上，这个家伙值得留意。</p>
<p>蠢问题：我的主板有问题了，谁来帮我？<br>普通黑客对这类问题的回答通常是：&#8220;好的，还要帮你拍拍背和换尿布吗？&#8221; ，<br>然后按下删除键。</p>
<p>聪明问题：我在S2464主板上试过了X、Y和Z，但没什么作用，我又试了A、B和C。<br>请注意当我尝试C时的奇怪现象。显然边带传输中出现了收缩，但结果出人意料。<br>在多处理器主板上引起边带泄漏的通常原因是什么？谁有好主意接下来我该做些什<br>么测试才能找出问题？<br>这个家伙，从另一个角度来看，值得去回答他。他表现出了解决问题的能力，而不<br>是坐等天上掉答案。</p>
<p>在最后一个问题中，注意&#8220;告诉我答案&#8221;和&#8220;给我启示，指出我还应该做什么诊断<br>工作&#8221;之间微妙而又重要的区别。</p>
<p>事实上，后一个问题源自于2001年8月在Linux内核邮件列表上的一个真实的提问。<br>我（Eric）就是那个提出问题的人。我在Tyan S2464主板上观察到了这种无法解释<br>的锁定现象，列表成员们提供了解决那一问题的重要信息。</p>
<p>通过我的提问方法，我给了大家值得玩味的东西；我让人们很容易参与并且被吸引<br>进来。我显示了自己具备和他们同等的能力，邀请他们与我共同探讨。我告诉他们<br>我所走过的弯路，以避免他们再浪费时间，这是一种对他人时间价值的尊重。</p>
<p>后来，当我向每个人表示感谢，并且赞赏这套程序（指邮件列表中的讨论--译者注<br>）运作得非常出色的时候，一个Linux内核邮件列表（lkml）成员表示，问题得到<br>解决并非由于我是这个列表中的&#8220;名人&#8221;，而是因为我用了正确的方式来提问。</p>
<p><br>我们黑客从某种角度来说是拥有丰富知识但缺乏人情味的家伙；我相信他是对的，<br>如果我象个乞讨者那样提问，不论我是谁，一定会惹恼某些人或者被他们忽视。他<br>建议我记下这件事，给编写这个指南的人一些指导。</p>
<p>================<br>找不到答案怎么办<br>================</p>
<p>如果仍得不到答案，请不要以为我们觉得无法帮助你。有时只是看到你问题的人不<br>知道答案罢了。没有回应不代表你被忽视，虽然不可否认这种差别很难区分。</p>
<p>总的说来，简单的重复张贴问题是个很糟的想法。这将被视为无意义的喧闹。</p>
<p>你可以通过其它渠道获得帮助，这些渠道通常更适合初学者的需要。</p>
<p>有许多网上的以及本地的用户组，由狂热的软件爱好者（即使他们可能从没亲自写<br>过任何软件）组成。通常人们组建这样的团体来互相帮助并帮助新手。</p>
<p>另外，你可以向很多商业公司寻求帮助，不论公司大还是小（Red Hat和<br>LinuxCare就是两个最常见的例子）。别为要付费才能获得帮助而感到沮丧！毕竟<br>，假使你的汽车发动机汽缸密封圈爆掉了--完全可能如此--你还得把它送到修车铺<br>，并且为维修付费。就算软件没花费你一分钱，你也不能强求技术支持总是免费的<br>。</p>
<p>对大众化的软件，就象Linux之类而言，每个开发者至少会有上万名用户。根本不<br>可能由一个人来处理来自上万名用户的求助电话。要知道，即使你要为帮助付费，<br>同你必须购买同类软件相比，你所付出的也是微不足道的（通常封闭源代码软件的<br>技术支持费用比开放源代码软件要高得多，而且内容也不那么丰富）。<br></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 23:00 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>大教堂和市集</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125218.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 14:58:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125218.html</guid><description><![CDATA[<p>大教堂和市集<br>　<br>Eric Raymond<br>HansB翻译</p>
<p>一. 大教堂和市集</p>
<p><br>　　Linux的影响是非常巨大的。甚至在５年以前，有谁能够想象一个世界级的操作系统能够仅仅用细细的Internet连接起来的散布在全球的几千个开发人员有以业余时间来创造呢？</p>
<p>　　我当然不会这么想。在１９９３年早期我开始注意Linux时，我已经参与Unix和自由软件开发达十年之久了。我是八十年代中期GNU最早的几个参与者之一。我已经在网上发布了大量的自由软件，开发和协助开发了几个至今仍在广泛使用的程序（Nethack,Emacs VC和GND模式，xlife等等）。我想我知道该怎样做。</p>
<p><br>　　Linux推翻了许多我认为自己明白的事情。我已经宣扬小工具、快速原型和演进式开发的Unix福音多年了。但是我也相信某些重要的复杂的事情需要更集中化的，严密的方法。我相信多数重要的软件（操作系统和象Emacs一样的真正大型的工具）需要向建造大教堂一样来开发，需要一群于世隔绝的奇才的细心工作，在成功之前没有beta版的发布。<br>Linus Torvalds的开发风格（尽早尽多的发布，委托所有可以委托的事，对所有的改动和融合开放）令人惊奇的降临了。这里没有安静的、虔诚的大教堂的建造工作——相反，Linux团体看起来像一个巨大的有各种不同议程和方法的乱哄哄的集市（Linux归档站点接受任何人的建议和作品，并聪明的加以管理），一个一致而稳定的系统就象奇迹一般从这个集市中产生了。</p>
<p><br>　　这种设计风格确实能工作，并且工作得很好，这个事实确实是一个冲击。在我的研究过程中，我不仅在单个工程中努力工作，而且试图理解为什么Linux世界不仅没有在一片混乱中分崩离析，反而以大教堂建造者们不可想象的速度变得越来越强大。</p>
<p><br>　　到了１９９６年中，我想我开始理解了。我有一个极好的测试我的理论的机会，以一个自由软件计划的形式，我有意识的是用了市集风格。我这样做了，并取得了很大的成功。</p>
<p><br>　　在本文的余下部分，我将讲述这个计划的故事，我用它来明确一些自由软件高效开发的格言。并不是所有这些都是从Linux世界中学到的，但我们将看到 Linux世界给予了它们一个什么样的位置。如果我是正确的，它们将使你理解是什么使Linux团体成为好软件的源泉，帮助你变得更加高效。</p>
<p><br>二. 邮件必须得通过</p>
<p><br>　　１９９３年以前我在一个小的免费访问的名为Chester County InterLink的ISP的做技术工作，它位于Pennsylvania的West Chester。（我协助建立了CCIL，并写了我们独特的多用户BBS系统——你可以telnet到locke.ccil.org来检测一下。今天它在十九条线上支持三千的用户）。这个工作使我可以一天二十四小时通过CCIL的56K专线连在网上，实际上，它要求我怎么做！</p>
<p><br>　　所以，我对Internet email很熟悉。因为复杂的原因，很难在我家里的机器（snark.thyrsus.com）和CCIL之间用SLIP工作。最后我终于成功了，但我发现不得不时常telnet到locke来检查我的邮件，这真是太烦了。我所需要的是我的邮件发送到snark,这样biff(1)会在它到达时通知我。</p>
<p><br>　　简单地sendmail的转送功能是不够的，因为snark并不是总在网上而且没有一个静态地址。我需要一个程序通过我的SLIP连接把我的本地发送的邮件拉过来。我知道这种东西是存在的，它们大多使用一个简单的协议POP（Post Office Protocol）。而且，locke的BSD/OS操作系统已经自带了一个POP3服务器。</p>
<p><br>　　我需要一个POP3客户。所以我到网上去找到了一个。实际上，我发现了三、四个。我用了一会pop-perl，但它却少一个明显的特征：抽取收到的邮件的地址以便正确回复。</p>
<p><br>　　问题是这样的：假设locke上一个叫&#8220;joe&#8221;的人向我发了一封邮件。如果我把它取到snark上准备回复时,我的邮件程序会很高兴地把它发送给一个不存在的snark上的&#8220;joe&#8221;。手工的在地址上加上<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#8220;&#64;&#99;&#99;&#105;&#108;&#46;&#111;&#114;&#103;">&#8220;@ccil.org</a>&#8221;变成了一个严酷的痛苦。</p>
<p><br>　　这显然应是计算机替我做的事。（实际上，依据RFC1123的5.2.18节，sendmail应该做这件事）。但是没有一个现存的POP客户知道怎样做！于是这就给我们上了第一课：</p>
<p>　　1.每个好的软件工作都开始于搔到了开发者本人的痒处。</p>
<p>　　也许这应该是显而易见的（&#8220;需要是发明之母&#8221;长久以来就被证明是正确的），但是软件开发人员常常把他们的精力放在它们既不需要也不喜欢的程序，但在Linux世界中却不是这样——这解释了为什么从Linux团体中产生的软件质量都如此之高。</p>
<p><br>　　那么，我是否立即投入疯狂的工作中，要编出一个新的POP3客户与现存的那些竞争呢？才不是哪！我仔细考察了手头上的POP工具，问自己&#8220;那一个最接近我的需要？&#8221;因为：<br>　　2.好程序员知道该写什么，伟大的程序员知道该重写（和重用）什么。</p>
<p><br>　　我并没有声称自己是一个伟大的程序员，可是我试着效仿他们。伟大程序员的一个重要特点是建设性的懒惰。他们知道你是因为成绩而不是努力得到奖赏，而且从一个好的实际的解决方案开始总是要比从头干起容易。</p>
<p><br>　　例如，Linux并不是从头开始写Linux的。相反的它从重用Minix（一个386机型上的类似Unix的微型操作系统）的代码和思想入手。最后所有的Minix代码都消失或被彻底的重写了，但是当它们在的时候它为最终成为Linux的雏形做了铺垫。</p>
<p><br>　　秉承同样的精神，我去寻找良好编码的现成的POP工具，用来作为基础。</p>
<p><br>　　Unix世界中的代码共享传统一直对代码重用很友好（这正是为什么GNU计划不管Unix本身有多么保守而选取它作为基础操作系统的原因）。 Linux世界把这个传统推向技术极限：它有几个T字节的源代码可以用。所以在Linux世界中花时间寻找其他几乎足够好的东西，会比在别处带来更好的结果。</p>
<p><br>　　这也适合我。加上我先前发现的，第二次寻找找到了9个候选者——fetchPOP，PopTart，get-mail，gwpop，pimp，pop-perl，popc，popmail 和 upop）。我首先选定的是&#8220;fetchpop&#8221;。我加入了头标重写功能，并且做了一些被作者加入他的1.9版中的改进。</p>
<p><br>　　但是几个星期之后，我偶然发现了Carl Harris写的&#8220;popclient&#8221;的代码，然后发现有个问题，虽然fetchpop有一些好的原始思想(比如它的守护进程模式)，它只能处理 pop3，而且编码的水平相当业余(Seung-Hong是个很聪明但是经验不足的程序员)，Carl的代码更好一些，相当专业和稳固，但他的程序缺少几个重要的相当容易实现的fetchpop的特征(包括我自己写的那些)。</p>
<p><br>　　继续呢还是换一个? 如果换一个的话，作为得到一个更好开发基础的代价，我就要扔掉我已经有的那些代码。</p>
<p><br>　　换一个的一个实际的动机是支持多协议，pop3是用的最广的邮局协议，但并非唯一一个，Fetchpop和其余几个没有实现POP2.RPOP，或者APOP，而且我还有一个为了兴趣加入IMAP(Internet Message Access Protocol，最近设计的最强大的邮局协议)的模糊想法。</p>
<p><br>　　但是我有一个更加理论化的原因认为换一下会是一个好主意，这是我在Linux很久以前学到的：</p>
<p>　　3.&#8220;计划好抛弃，无论如何，你会的&#8221;(Fred Brooks,《神秘的人月》第11章)</p>
<p><br>　　或者换句话说，你常常在第一次实现一个解决方案之后才能理解问题所在，第二次你也许才足够清楚怎样做好它，因此如果你想做好，准备好推翻重来至少一次。</p>
<p><br>　　好吧(我告诉自己)，对fetchpop的尝试是我第一次的尝试，因此我换了一下。</p>
<p><br>　　当我在1996年6月25日把我第一套popclient的补丁程序寄给Carl Harris之后，我发现一段时间以前他已经对popclient基本上失去了兴趣，这些代码有些陈旧，有一些次要的错误，我有许多修改要做，我们很快达成一致，我来接手这个程序。不知不觉的，这个计划扩大了，再也不是我原先打算的在已有的pop客户上加几个次要的补丁而已了，我得维护整个的工程，而且我脑袋里涌动着一些念头要引起一个大的变化。</p>
<p><br>　　在一个鼓励代码共享的软件文化里，这是一个工程进化的自然道路，我要指出：</p>
<p>　　4. 如果你有正确的态度，有趣的问题会找上你的，但是Carl Harris的态度甚至更加重要，他理解：</p>
<p>　　5.当你对一个程序失去兴趣时，你最后的责任就是把它传给一个能干的后继者。</p>
<p><br>　　甚至没有商量，Carl和我知道我们有一个共同目标就是找到最好的解决方案，对我们来说唯一的问题是我能否证明我有一双坚强的手，他优雅而快速的写出了程序，我希望轮到我时我也能做到。</p>
<p>三. 拥有用户的重要性</p>
<p><br>　　于是我继承了popclient，同样重要的是，我继承了popclient的用户基础，用户是你所拥有的极好的东西，不仅仅是因为他们显示了你正在满足需要，你做了正确的事情，如果加以适当的培养，他们可以成为合作开发者。</p>
<p><br>　　Unix传统另一有力之处是许多用户都是黑客，因为源优码是公开的，他们可以成为高效的黑客，这一点在Linux世界中也被推向了令人高兴的极致，这对缩短调试时间是极端重要的，在一点鼓励之下，你的用户会诊断问题，提出修订建议，帮你以远比你期望快得多的速度的改进代码。</p>
<p><br>　　6. 把用户当做协作开发者是快速改进代码和高效调试的无可争辩的方式。</p>
<p><br>　　这种效果的力量很容易被低估，实际上，几乎所有我们自由软件世界中的人都强烈低估了用户可以多么有效地对付系统复杂性，直到Linus让我们看到了这一点。</p>
<p><br>　　实际上，我认为Linus最聪明最了不起的工作不是创建了Linux内核本身，而是发明了Linux开发模式，当我有一次当着他的面表达这种观点时，他微笑了一下，重复了一句他经常说的话：&#8220;我基本上是一个懒惰的人，依靠他人的工作来获取成绩。&#8221;象狐狸一样懒惰，或者如Robert Heinlein所说，太懒了而不会失败。</p>
<p><br>　　回顾起来，在GNU Emacs Lisp库和Lisp代码集中可以看到Linux方法的成功，与Emacs的C内核和许多其他FSF的工具相比，Lisp代码库的演化是流动性的和用户驱动的，思想和原型在达到最终的稳定形式之前往往要重写三或四次，而且经常利用Internet的松散合作。</p>
<p><br>　　实际上，我自己在fetchmail之前最成功的作品要算Emacs VC模式，它是三个其他的人通过电子邮件进行的类似Linux的合作，至今我只见过其中一个人(Richard Stallman)，它是SCCS、RCS和后来的CVS的前端，为Emacs提供&#8220;one-touch&#8221;版本控制操作，它是从一个微型的、粗糙的别人写好的sccs.el模式开始演化的，VC开发的成功不像Emacs本身，而是因为Emacs Lisp代码可以很快的通过发布／测试／改进的过程。</p>
<p><br>　　(FSF的试图把代码放入GPL之下的策略有一个未曾预料到的副作用，它让FSF难以采取市集模式，因为他们认为每个想贡献二十行以上代码的人都必须得到一个授权，以使受到GPL的代码免受版权法的侵扰，具有BSD和MITX协会的授权的用户不会有这个问题，因为他们并不试图保留那些会使人可能受到质询的权力)。</p>
<p><br>四. 早发布、常发布</p>
<p><br>　　尽量早尽量频繁的发布是Linux开发模式的一个重要部分，多数开发人员(包括我)过去都相信这对大型工程来说是个不好的策略，因为早期版本都是些充满错误的版本，而你不想耗光用户的耐心。</p>
<p>　　这种信仰强化了建造大教堂开发方式的必要性，如果目标是让用户尽可能少的见到错误，那你怎能不会仅仅每六个月发布一次(或更不经常)，而且在发布之间象一只狗一样辛勤&#8220;捉虫&#8221;呢? Emacs C内核就是以这种方式开发的，Lisp库，实际上却相反，因为有一些有FSF控制之外的Lisp库，在那里你可以独立于Emacs发布周期地找寻新的和开发代码版本。</p>
<p><br>　　这其中最重要的是Ohio州的elisp库，预示了今天的巨大的Linux库的许多特征的精神，但是我们很少真正仔细考虑我们在做什么，或者这个库的存在指出了FSF建造教堂式开发模式的什么问题，1992年我曾经做了一次严肃的尝试，想把Ohio的大量代码正式合并到Emacs的官方Lisp库中，结果我陷入了政治斗争中，彻底失败了。</p>
<p><br>　　但是一年之后，在Linux广泛应用之后，很清楚，一些不同的更加健康的东西诞生了，Linus的开发模式正好与建造教堂方式相反，Sunsite和tsx-11的库开始成长，推动了许多发布。所有这些都是闻所未闻的频繁的内核系统的发布所推动的。</p>
<p><br>　　Linus以所有实际可能的方式把它的用户作为协作开发人员。</p>
<p><br>　　7. 早发布、常发布、听取客户的建议</p>
<p>　　Linus的创新并不是这个(这在Unix世界中是一个长期传统)，而是把它扩展到和他所开发的东西的复杂程度相匹配的地步，在早期一天一次发布对他来说都不是罕见的!而且因为他培育了他的协作开发者基础，比其他任何人更努力地充分利用了Internet进行合作，所以这确实能行。</p>
<p><br>　　但是它是怎样进行的呢?它是我能模仿的吗?还是这依赖于Linus的独特天才?</p>
<p><br>　　我不这样想，我承认Linus是一个极好的黑客(我们有多少人能够做出一个完整的高质量的操作系统内核?)，但是Linux并不是一个令人敬畏的概念上的飞跃，Linus不是(至少还不曾是)象Richard stallman或James Gosling一样的创新天才，在我看来，Linus更象一个工程天才，具有避免错误和开发失败的第六感觉，掌握了发现从A点到B点代价最小的路径的决窍，确实，Linux的整个设计受益于这个特质，并反映出Linus的本质上保守和简化设计的方法。</p>
<p><br>　　如果快速的发布和充分利用Internet不是偶然而是Linus的对代价最小的路径的洞察力的工程天才的内在部分，那么他极大增强了什么?他创建了什么样的方法?</p>
<p><br>　　问题回答了它自己，Linus保持他的黑客用户经常受到激励和奖赏：被行动的自我满足的希望所激励，而奖赏则是经常(甚至每天)都看到工作在进步。</p>
<p><br>　　Linus直接瞄准了争取最多的投入调试和开发的人时，甚至冒代码不稳定和一旦有非常棘手的错误而失去用户基础的险，Linus似乎相信下面这个：</p>
<p>　　8. 如果有一个足够大的beta测试人员和协作开发人员的基础，几乎所有的问题都可以被快速的找出并被一些人纠正。</p>
<p><br>　　或者更不正式的讲：&#8220;如果有足够多的眼睛，所有的错误都是浅显的&#8221;(群众的眼睛是雪亮的)，我把这称为&#8220;Linus定律&#8221;。</p>
<p><br>　　我最初的表述是每个问题&#8220;对某些人是透明的&#8221;，Linus反对说，理解和修订问题的那个人不一定非是甚至往往不是首先发现它的人，&#8220;某个人发现了问题&#8221;，他说，&#8220;另一个理解它，我认为发现它是个更大的挑战&#8221;，但是要点是所有事都趋向于迅速发生。</p>
<p><br>　　我认为这是建造教堂和集市模式的核心区别，在建造教堂模式的编程模式看来，错误和编程问题是狡猾的、阴险的、隐藏很深的现象，花费几个月的仔细检查，也不能给你多大确保把它们都挑出来的信心，因此很长的发布周期，和在长期等待之后并没有得到完美的版本发布所引起的失望都是不可避免的。</p>
<p><br>　　以市集模式观点来看，在另一方面，我们认为错误是浅显的现象，或者至少当暴露给上千个热切的协作开发人员，让他们来对每个新发布进行测试的时候，它们很快变得浅显了，所以我们经常发布来获得更多的更正，作为一个有益的副作用，如果你偶尔做了一个笨拙的修改，也不会损失太多。也许我们本不应该这样的惊奇，社会学家在几年前已经发现一群相同专业的(或相同无知的)观察者的平均观点比在其中随机挑选一个来得更加可靠，他们称此为&#8220;Delhpi效应&#8221;， Linus所显示的证明在调试一个操作系统时它也适用——Delphi效应甚至可以战胜操作系统内核一级的复杂度。</p>
<p><br>　　我受Jeff Dutky (dutky @ wam.umd.edu)的启发指出Linus定律可以重新表述为&#8220;调试可以并行&#8221;，Jeff观察到虽然调试工作需要调试人员和对应的开发人员相交流，但它不需要在调试人员之间进行大量的协调，于是它就没有陷入开发时遇到的平方复杂度和管理开销。</p>
<p>　　在实际中，由于重复劳动而导致的理论上的丧失效率的现象在Linux世界中并不是一个大问题，&#8220;早发布、常发布策略&#8221;的一个效果就是利用快速的传播反馈修订来使重复劳动达到最小。</p>
<p><br>　　Brooks甚至做了一个与Jeff相关的更精确的观察：&#8220;维护一个广泛使用的程序的成本一般是其开发成本的40%，奇怪的是这个成本受到用户个数的强烈影响，更多的用户发现更多的错误&#8221;(我的强调)。</p>
<p>　　更多的用户发现更多的错误是因为更多的用户提供了更多测试程序的方法，当用户是协作开发人员时这个效果被放大了，每个找寻错误的人都有自己稍微不同的感觉和分析工具，从不同角度来看待问题。&#8220;Delphi效应&#8221;似乎因为这个变体工作变得更加精确，在调试的情况下，这个变体同时减小了重复劳动。</p>
<p><br>　　所以加入更多的beta测试人员虽不能从开发人员的P.O.V中减小&#8220;最深&#8221;的错误的复杂度，但是它增加了这样一种可能性，即某个人的工具和问题正好匹配，而这个错误对这个人来说是浅显的。</p>
<p><br>　　Linus也做了一些改进，如果有一些严重的错误，Linux内核的版本在编号上做了些处理，让用户可以自己选择是运行上一个&#8220;稳定&#8221;的版本，还是冒遇到错误的险而得到新特征，这个战略还没被大多数Linux黑客所仿效，但它应该被仿效，存在两个选择的事实让二者都很吸引　人。</p>
<p>　　<br>五. 什么时候玫瑰不是玫瑰?</p>
<p><br>　　在研究了Linus的行为和形成了为什么它成功的理论之后，我决定在我的工程(显然没有那么复杂和雄心勃勃)里有意识的测试这个理论。<br>但我首先做的事是熟悉和简化Popclient。 Carl Harris的实现非常好，但是有一种对许多C程序来说没有必要的复杂性。他把代码当作核心而把数据结构当作对代码的支持，结果是代码非常漂亮但是数据结构设计得很特别，相当丑陋(至少对以这个老LISP黑客的标准来看)，然而除了提高代码和数据结构设计之外，重写它还有一个目的，就是要把它演化为我彻底理解的东西，对修改你不理解的程序中的错误负责可不是一件有趣的事。</p>
<p><br>　　第一个月我只是在领会Carl's的基本设计的含义，我所做的第一个重大修改是加入了IMAP支持，我把协议机重新组织为一个通用驱动程序和三个方法表(对应POP2、POP3和IMAP)，这个前面的修改指出一个需要程序员(特别是象C这种没有自然的动态类型支持的语言)记在脑中的一般原理：</p>
<p><br>　　9. 聪明的数据结构和笨拙的代码要比相反的搭配工作的更好</p>
<p><br>　　Fred Brooks也在他第11章中讲道：&#8220;让我看你的［代码］，把你的[数据结构]隐藏起来，我还是会迷惑；让我看看你的[数据结构]，那我就不需要你的[代码]了，它是显而易见的&#8221;。</p>
<p><br>　　实际上，他说的是&#8220;流程图&#8221;和&#8220;表&#8221;，但是在三十年的术语／文化演进之后，事情还是一样的。</p>
<p><br>　　此时(1996年9月初，在从零开始六个月后)，我开始想接下来修改名字——毕竟，它已不仅仅是一个POP客户，但我犹豫了，因为还没有什么新的漂亮设计呢，我的popclient版本需要有自己的特色。</p>
<p><br>　　当fetehmail学会怎样把取到的邮件转送到SMTP端口时，事情就完全改变了，但是首先：上面我说过我决定使用这个工程来测试我关于Linus Torualds所做的行为的理论，(你可能会问)我怎样做到这点呢? 以下面的方式：<br>　　　　1. 我尽早尽量频繁的发布(几乎从未少于每十天发布一次；在密集开发的时候是每天一次)。<br>　　　　2. 我把每一个和我讨论fetchmail的人加入一个beta表中。<br>　　　　3. 每当我发布我都向beta表中的人发出通告，鼓励人们参与。<br>　　　　4. 我听取beta测试员的意见，向他们询问设计决策，对他们寄来的补丁和反馈表示感谢。</p>
<p>　　这些简单的手段立即收到的回报，在工程的开始，我收到了一些错误报告，其质量足以使开发者因此被杀掉，而且经常还附有补丁、我得到了理智的批评，有趣的邮件，和聪明的特征建议，这导致了：</p>
<p><br>　　10. 如果你象对待最宝贵的资源一样对待你的beta测试员，他们就会成为你最宝贵的资源。</p>
<p><br>六. popclient变成了Fetchmail</p>
<p><br>　　这个工程的真正转折点是Harry Hochleiser寄给我他写的代码草稿，他把邮件转发到客户端机器的SMTP端口，我立即意识到这个特征的可靠实现将淘汰所有其他的递送模式。</p>
<p><br>　　几个星期以来我一直在修改而不是改进fetchmail，因为我觉得界面设计虽然有用但是太笨拙琐碎了，到处充满了太多的粗陋的细小选项。</p>
<p><br>　　当我思考SMTP转发时我发现popclient试图做的事太多了，它被设计成既是一个邮件传输代理(MTA)也是一个本地递送代理(MDA)。使用 SMTP转发，它就可以从MDA的事务中解脱出来而成为一个纯MTA，而象sendmail一样把邮件交给本地递送程序来处理。</p>
<p><br>　　既然端口25在所有支撑TCP／IP的平台上早已被预留，为什么还要为一个邮件传输代理的配置或为一个邮箱设置加锁的附加功能而操心呢?尤其是当这意味着抽取的邮件就象一个正常的发送者发出的SMTP邮件一样，而这就是我们需要的。</p>
<p><br>　　这里有几个教益：第一，SMTP转发的想法是我有意识地模拟Linus的方法以来的最大的单个回报，一个用户告诉我这个非同寻常的想法——我所需做的只是理解它的含义。</p>
<p><br>　　11. 想出好主意是好事，从你的用户那里发现好主意也是好事，有时候后者更好。</p>
<p><br>　　很有趣的是，你很快将发现，如果你完全承认你从其他人那里得到多少教益的话，整个世界将会认为所有的发明都是你做出的，而你会对你的天才变得谦虚。我们可以看到这在Linus身上体现得多明显!(当我在1997年8月的Perl会议上发表这个论文时，Larry Wall坐在前排，当我讲到上面的观点时，他激动的叫了出来：&#8220;对了!说对了!哥们!&#8221;所有的听众都哄堂大笑起来，因为他们知道同样的事情也发生在 Perl的发明者身上)。</p>
<p><br>　　于是在同样精神指导下工程进行了几个星期，我开始不光从我的用户那儿也从听说我的系统的人那儿得到类似的赞扬，我把一些这种邮件收藏起来，我将在我开始怀疑自己的生命是否有价值时重新读读这些信。:)</p>
<p><br>　　但是有两个更基本的，非政治性的对所有设计都有普遍意义的教益。</p>
<p><br>　　12. 最重要和最有创新的解决方案常常来自于你认识到你对问题的概念是错误的。</p>
<p>　　一个衡量fetchmail成功的有趣方式是工程的beta测试人员表(fegtchmail的朋友们)的长度，在创立它的时候已经有249个成员了，而且每个星期增加两到三个。</p>
<p><br>　　实际上，当我在1997年5月校订它时，这张表开始因为一个有趣的原因而缩短了，有几个人请求我把他们从表中去掉，因为fetchmail已经工作的如此之好，他们不需要看到这些邮件了!也许这是一个成熟的市集风格工程的生命周期的一部分。</p>
<p>　　我以前一直在解决错误的问题，把popclient当作MTA和具有许多本地递送模式的MDA的结合物，Fetchmail的设计需要从头考虑为一个纯的MTA，做为一个普通Internet邮件路径的一部分。</p>
<p><br>　　当你在开发中碰了壁时(当你发现自己很难想通下一步时)，那通常不是要问自己是否找到正确答案，而是要问是否问了正确问题，也许需要重新构造问题。</p>
<p><br>　　于是，我重新构造了我的问题，很清楚，要做的正确的事是(1)把SMTP转发支持放在通用驱动程序中，(2)把它做为缺省模式，(3)最终分离所有其他的递送模式，尤其是递送到文件和标准输出的选项。</p>
<p><br>　　我在第三步上犹豫了一下，担心会让popdiant的长期用户对新的递送方法感到烦心，在理论上，他们可以立即转而转发文件或者他们的非sendmail等价物来得到同样的效果，在实际中这种转换可能会很麻烦。<br>但是当我这么做之后，证明好处是巨大的，驱动程序代码的冗余的部分消失了，配置完全变得简单了——不用屈从于系统MDA和用户的邮箱，也不用为下层OS是否支持文件锁定而担心了。</p>
<p><br>　　而且，丢失邮件的唯一漏洞也被堵死了，如果你选择了递送到一个文件而磁盘已满，你的邮件就会丢失，这在SMTP转发中不会发生，因为SMTP侦听器不会返回OK的，除非邮件可以递送成功或至少被缓冲留待以后递送。</p>
<p><br>　　还有，性能也改善了(虽然在单次执行中你不会注意到)，这个修改的另一个不可忽视的好处是手册变得大大简单了。</p>
<p><br>　　后来，为了允许处理一些罕见的情况，包括动态SLIP，我必须回到让用户定义本地MDA递送上来，但是我发现了一个更加简单的方法。</p>
<p><br>　　所有这些给了我们什么启发呢?如果可以不损失效率，就要毫不犹豫抛弃陈旧的特性，Antonine de Saint-Exupery(在他成为经典儿童书籍作家之前是一个飞行员和飞机设计师)曾说过：</p>
<p><br>　　13. &#8220;最好的设计不是再也没有什么东西可以添加了，而是再也没有什么东西可以去掉。&#8221;</p>
<p><br>　　当你的代码变得更好和更简单时，这就是你知道它是正确的时候了，而且在这个过程中，fetehmail的设计具有了自己的特点，而区别于其前身popclient。</p>
<p><br>　　现在是改名的时候了，这个新的设计看起来比老popclient更象一个sendmail的复制品，它们都是MTA，但是Senmail是推然后递送，而新的popclient是拉然后递送。于是，在两个月之后，我把它重新命名为fetehmail。</p>
<p><br>七. Fetchmail成长起来</p>
<p><br>　　现在我有了一个简洁和富有创意的设计，工作得很好的代码，因为我每天都用它，和一直在增长的beta表，它让我渐渐明白我已经不是在从事只能对少数其他人有用的工作中，我写了一个所有有一个Unix邮箱和SLIP／PPP邮件连接的人都真正需要的程序。</p>
<p><br>　　通过SMTP转发功能，它成为一个潜在的&#8220;目录杀手&#8221;，远远领先于它的竞争者，这个程序如此能干以至于其他的程序不但被放弃简直被忘记了。</p>
<p><br>　　我知道你不可以真得瞄准或计划出这样的结果，你只能努力去设计这些强大的思想，以后这些结果就好象是不可避免的、自然的、注定了的，得到这种思想的唯一办法是获取许多思想，或者用工程化的思考其他人的好主意而超过原来想到它的人的设想。</p>
<p><br>　　Andrew Tanenbanm原来设想建造一个适合386的简单的Unix用做教学，Linus Torvalels把Andrew的可能想到的Minix可以做什么的概念推进了一步，成长为一个极好的东西，同样的(虽然规模较小)，我接受了Card Harris和Harry Hochheiser的想法，把它们变得更强大，我们都不是人们所浪漫幻想的天才的创始人，但是大多数科学和工程和软件开发不是被天才的创始人完成的，这和流传的神话恰恰相反。</p>
<p><br>　　结果总是执着的原因——实际上，它是每个黑客为之生存的成功!而且它们意味着我必须把自己的标准定高一点，为了把fetchmail变得和我所能设想的那样好，我必须不仅为我自己的需要写代码，而且也要包括对在我生活围主页外的人们的需求的支持，而且同时也要保证程序的简单和健壮。</p>
<p><br>　　在实现它之后我首先写的最重要的特征是支持多投——从集中一组用户的邮件的邮箱中取出邮件，然后把它路由到每个人手中。</p>
<p><br>　　我之所以加上多投功能部分是因为有些用户一直在闹着要它，更是因为我想它可以从单投的代码中揭露出错误来，让我完全一般地处理寻址，而且这被证明了。正确解释RFC822花了我相当长的时间，不仅因为它的每个单独部分都很难，而且因为它有一大堆相互依赖的苛刻的细节。</p>
<p><br>　　但是多投寻址也成为一个极好的设计决策，由此我知道：</p>
<p><br>　　14. 任何工具都应该能以预想的方式使用，但是一个伟大的工具提供你没料到的功能。</p>
<p><br>　　Fetchmant多投功能的一个没有料到的用途是在SLIP／PPP的客户端提供邮件列表、别名扩展。这意味着一个使用个人机器的人不必持续访问 ISP的别名文件就能通过一个ISP帐户管理一个邮件列表。我的beta测试员提出的另一个重要的改变是支持8位MIME操作，这很容易做，因为我已经仔细的保证了8位代码的清晰，不仅因为我预见到了这个特性的需求，而且因为我忠实于另一准则：</p>
<p><br>　　15. 当写任何种类的网关型程序时，多费点力，尽量少干扰数据流，永远不要抛弃信息，除非接收方强迫这么作!</p>
<p><br>　　如果我不遵从这个准则，那么8位MIME支持将会变得困难和笨拙，现在我所需要做的，是只读一下RFC 1652，在产生信头的逻辑加上一点而已。</p>
<p><br>　　一些欧洲用户要求我加上一个选项来限制每次会话取得消息数(这样他们就可以从昂贵的电话网中控制花费了)，我很长一段时间拒绝这样做，而且我仍然对它不很高兴，但是如果你是为了世界而写代码，你必须听取顾客的意见——这并不随他们不付给你钱而改变。</p>
<p><br>八. 从Fetchmail得来的另一些教益</p>
<p><br>　　在他们回到一般的软件工程问题以前，还有几个从fetchmail得到的教益需要思考。</p>
<p><br>　　rc文件语法包括可选的&#8220;noise&#8221;关键字，它被扫描器完全忽略了，当你把它们全抽取出的时候，关键字／值对更具可读性。</p>
<p><br>　　当我注意到rc文件的声明在多大程度上开始象一个微型命令语言时，这是一个Late-night的体验(这也是我为什么把popclient原来的&#8220;server&#8221;关键字改成了&#8220;poll&#8221;)。</p>
<p><br>　　对我来说似乎把这个微型命令语言变得更象英语可能会使它更容易使用。现在，虽然我对经过Emacs和HTML及许多数据库引擎所证实的&#8220;把它做成一个语言&#8221;的设计方式确信不疑，但是我并不是一个通常的&#8220;类英语&#8221;语法的狂热拥护者。</p>
<p><br>　　传统程序员容易控制语法使它尽量精确和紧凑，完全没有冗余，这是计算机资源还很昂贵时遗留下的一种文化传统，所以扫描策略需要尽可能的廉价和简单，而具有50%冗余度的英语，看来好象是一个非常不合适的模型。</p>
<p><br>　　这并不是我不用类英语语法的原因，我提到这一点是为了推翻它，在更廉价的时钟周期与核心的时代，简洁并没有走到尽头，今天对一个语言来说，对人更方便比对机器更廉价来的更加重要。</p>
<p><br>　　然而，有几个原因提醒我们小心一点，一个是扫描策略的复杂度开销——你并不想把它变成一个巨大的错误来源和让用户困惑，另一个是试图使语言表面上的类似可以和传统语言一样令人困惑(你可以在许多4GL和商业数据库查询语言上看到这一点)。</p>
<p><br>　　Fetchmail的控制语法避免了这些问题，因为语言的领域是极其有限的。它一点也不象一个一般性的语言，它很简单地描述的东西并不复杂，所以很少可能在英语的一个小子集与实际的控制语言之间发生混淆，我想这有一个更广泛的教益：</p>
<p><br>　　16. 如果你的语言一点也不象是图灵完备的，严格的语法会有好处。</p>
<p><br>　　另一个教益是关于安全的，一些fetchmail用户要求我修改软件把口令加密存贮在rc文件里，这样觑探者就不能看到它们了。</p>
<p><br>　　我没有这样做，因为这实际上起不到任何保护作用，任何有权读取你的rc文件的人都可以以你的名义运行fetchmail——如果他们要破你的口令，它们可以从fetchmail的代码中找到制作解码器的方法。</p>
<p><br>　　所以fetchmail口令的加密都会给那些不慎重思考的人一种安全的错觉，这里一般性的准则是：</p>
<p><br>　　17. 一个安全系统只能和它的秘密一样安全，当心伪安全。</p>
<p><br>九. 集市风格的必要的先决条件</p>
<p><br>　　本文的早期评审人员和测试人员坚持提出成功的市集模式开发的先决条件，包括工程领导人的资格问题和在把项目公开和开始建造一个协作开发人员的社团的时候代码的状态。</p>
<p><br>　　相当清楚，不能以一个市集模式从头开发一个软件，我们可以以市集模式、测试、调试和改进，但是以市集模式从头开始一个项目将是非常困难的，Linus没有这样做，我也没有，初期的开发人员的社团应该有一此可以运行和测试的东西来玩。</p>
<p><br>　　当你开始创建社团时，你需要演示的是一个诺言，你的程序不需要工作的很好，它可以很粗糙、很笨拙、不完整和缺少文档、它不能忽略的东西是要吸引哪些人卷入一个整洁的项目。</p>
<p><br>　　Linux和fetchmail都是以一个吸引人的基本设计进入公共领域的，许多和我一样在思考市集模式的人已经正确的认为这是非常关键的，然后得出了一个结论，工程领导者的高度的设计直觉和聪颖是必不可少的。</p>
<p><br>　　但是Linus是从Unix得到他的设计的，我最初是从先前的popmail得到启发的(虽然相对Linux而言，它最后改变巨大)，所以市集风格的领导人／协调人需要有出众的设计才能，或者他可以利用别人的设计才能?</p>
<p><br>　　我认为能够提出卓越的原始设计思想对协调人来说不是最关键的，但是对他／她来说绝对关键的是要能把从他人那里得到的好的设计重新组织起来。</p>
<p><br>　　Linux和fetchmail项目都显示了这些证据，Linus(如同前面所说)并不是惊人的原始设计者，但他显示了发现好的设计并把它集成到 Linux内核中的强大决窍。还有我也描述了怎样从别人那里得到了fetchmail中最强大的设计思想(SMTP转发)。</p>
<p><br>　　本文的早期读者称赞我，说因为我做了许多关于原始设计的事，所以倾向于低估原始设计在市集项目中的价值，也许有些是对的吧，但是设计(而不是编码或调试)本来就是我最强的能力。</p>
<p><br>　　变得聪明和软件设计的原始创作的问题是它会变成一个习惯，当需要保持事物健壮和简洁的时候，你却开始把事情变得漂亮但却复杂。我曾经犯过错误，使得一些项目因我而崩溃了，但我努力不让它发生在fetchmail身上。</p>
<p><br>　　所以我相信fetchmail项目的成功部分是因为我抑制自己不要变得太聪明，这说明(至少)对市集模式而言原始设计并不是本质的，请考察一下Linux假设Linus Torvalds在开发时试图彻底革新操作系统设计，它还会象今天我们所拥有的内核那样稳定和成功吗?</p>
<p><br>　　当然基本的设计和编码技巧还是必需的，但我希望每个严肃考虑发起一个市集计划的人都已至少具备这些能力，自由软件社团的内部市场对人们有某些微妙的压力，让他们不要发起自由不能搞定的开发，目前为止，这工作得仍然相当好。</p>
<p><br>　　对市集项目来说，我认为还有另一种通常与软件开发无关的技能和设计能力同样重要——或者更加重要，市集项目的协调人或领导人必须有良好的人际和交流能力。</p>
<p><br>　　这是很显然的，为了建造一个开发社团，你需要吸引人，你所做的东西要让他们感到有趣，而且要保持他们对他们正在做的工作感到有趣，而且要保持他们对他们正在做的工作感到高兴，技术方面对达成这些目标有一定帮助，但这远远不是全部，你的个人素质也有关系。</p>
<p><br>　　并不是说Linus是一个好小伙子，让人们喜爱并乐于帮助他，也并不是说我是个积极外向的，喜欢扎堆儿工作，有出众的幽默感的人，对市集模式的工作而言，至少有一点吸引人的技巧是非常有帮助的。</p>
<p><br>十. 自由软件的社会学语境</p>
<p><br>&nbsp;&nbsp; 　下述如实：最好的开发是从作者解决每天工作中的个人问题开始的，因为它对一大类用户来说是一个典型问题，所以它就推广开来了，这把我们带回到准则1，也许是用一个更有用的方式来描述：</p>
<p><br>　　18. 要解决一个有趣的问题，请从发现让你感兴趣的问题开始。</p>
<p><br>　　这是Carl Harris和原先的popclient的情形，也是我和fetchmail的情形，但这已在很长一段时间被大家知晓了，Linux和fetchmail 的历史要求我们注意的有趣之处是下一个阶段——软件在一个庞大的活跃的用户和协作开发人员的社团中的进化。</p>
<p><br>　　在《神秘的人月》一书中，Fred Brooks观察到程序员的工作时间是不可替代的：在一个误了工期的软件项目中增加开发人员只会让它拖得更久，他声称项目的复杂度和通讯开销以开发人员的平方增长，而工作成绩只是以线性增长，这个说法被称为&#8220;Brooks定律&#8221;，被普遍当作真理，但如果Brooks定律就是全部，那Linux就不可能成功。</p>
<p><br>　　几年之后，Gerald Weinbeng的经典之作&#8220;The Psychology Of Computer Progromming&#8221;为我们更正了Brooks的看法，在他的&#8220;忘我(egoless)的编程&#8221;中，Weinberg观察到在开发人员不顽固保守自己的代码，鼓励其他人寻找错误和发展潜力的地方，软件的改进的速度会比其他地方有戏剧性的提高。</p>
<p><br>　　Weinberg的用词可阻止了他的分析得到应有的接受，人们对把Internet黑客称为&#8220;忘我&#8221;的想法微笑，但是我想今天他的想法比以往任何时候都要引人注目。</p>
<p><br>　　Unix的历史已经为我们准备好了我们正在从Linux学到的(和我在更小规模上模仿Linus的方法所验证的)东西，这就是，虽然编码仍是一个人干的活，真正伟大的工作来自于利用整个社团的注意和脑力，在一个封闭的项目中只利用他自己的脑力的人会落在知道怎样创建一个开放的、进化的，成百上千的人在其中查找错误和进行修改的环境的开发人员之后。</p>
<p><br>　　但是Unix的传统中有几个因素阻止把这种方法推到极致。一个是各种授权的法律约束、商业机密和商业利益，另一个(事后来看)是Internet还不够好。</p>
<p><br>　　在Internet变得便宜之前，有一些在地理上紧密的社团，它们的文化鼓励Weingberg的&#8220;忘我&#8221;编程，一个开发人员很容易吸引许多熟练的人和协作开发人员，贝尔实验室，MIT A1实验室，UC Berkeley，都成为传统的、今天仍然是革新的源泉。</p>
<p><br>　　Linux是第一个有意识的成功的利用整个世界做为它的头脑库的项目，我不认为Linux的孕育和万维网的诞生相一致是一个巧合，而且Linux在 1993-1994的一段ISP工业大发展和对Internet的兴趣爆炸式增长的时期中成长起来，Linus是第一个学会怎样利用Internet的新规的人。</p>
<p><br>　　廉价的Internet对Linux模式的演化来说是一个必要条件，但它并不充分，另一个关键因素是领导风格的开发和一套协作的氛围使开发人员可以吸引协作开发人员和最大限度地利用媒体。</p>
<p><br>　　但是这种领导风格与氛围到底是什么呢?它不能建立在权力关系之上——甚至如果它们可以，高压的领导权力不能产生我们所看到的结果，Weinberg引用了19世纪俄国的无政府主义者Kropotkin的&#8220;Memoris of a Revolutionist&#8221;来证明这个观点：</p>
<p><br>　　&#8220;我从小生活在一个农奴主的家庭中，我有一个活跃的生活，象我们时代的所有年轻人一样，我深信命令、强制、责骂、惩罚等等的必要性。但是当我(在早期)必须管理一个企业，和(自由)人打交道时，当每一个错误都会产生严重后果时，我开始接受以命令和纪律为准则来行动和以普通理解为准则来行动的区别。前者在军事阅兵中工作的很好，但是它在现实生活中一文不值，目标达成只是靠许多愿望的聚合的简单后果。&#8221;&#8220;许多聚合在一起的愿望的直接后果&#8221;精确地指出了象 Linux的项目所需要的东西。&#8220;命令的准则&#8221;在Internet这种无政府主义的天堂中一群自愿者之中是没有市场的，为了更有效的操作和竞争，想领导协作项目的黑客们必须学会怎样以Kropotkins含糊指出的&#8220;理解的准则&#8221;模式来恢复和激活社团的力量，他们必须学会使用Linus定律。</p>
<p><br>　　前面我引用&#8220;Delhpi效应&#8221;来作为Linus定律的一个可能的解释，但是来自生物学和经常学的自适应系统的更强大的分析也提出了自己的解释， Linus世界的行为更象一个自由市场或生态系统，由一大群自私的个体组成，它们试图取得(自己)最大的实效，在这个过程中产生了比任何一种中央计划都细致和高效的自发的改进的结果，所以，这里就是寻找&#8220;理解的准则&#8221;的地方。</p>
<p><br>　　Linux黑客取得的最大化的&#8220;实际利益&#8221;不是经典的经济利益，而是无形的他们的自我满足和在其他黑客中的声望，(有人会说他们的动机是&#8220;利他的&#8221;，但这忽略了这样的事实：利他主义本身是利他主义者的一种自我满足的形式)，自愿的文化以这种方式工作的实际上并非不寻常，我已参与一个科幻迷团体很长时间了，它不象黑客团体一样，显式地识别出&#8220;egoboo&#8221;(一个人在其他爱好者之中的声望的增长)作为自愿者活动背后的基础驱动力)。</p>
<p><br>　　Linus成功地把自己置于项目的守门人的位置，在项目中开发大部分是别人做的，他只是在项目中培养兴趣直到它可以自己发展下去，这为我们展示了对 Kropokin的&#8220;共同理解原则&#8221;的敏锐把握，对Linux这种类似经济学的观点让我们看到这种理解是怎样应用的。</p>
<p><br>　　我们可以把Linus的方法视为创建一个高效的关于&#8220;egoboo&#8221;(而不是钱)的市场，来把自私的黑客个体尽可能紧密的联系起来，达成只能通过高度协作才能得到的困难的结果，在fetchmail项目中我展示了(在较小规模上)这种模式可以复制，得到良好的结果，也许我比他更有意识一点、更加系统一点。</p>
<p><br>　　许多人(尤其是哪些由于政治原因不信任自由市场的人)会盼望自我导向的自我主义者的文化破碎、报废、秘密和敌对，但这种盼望很明显地被Linux的文档的多样性、质量和深度打破了，程序员讨厌写文档似乎已是圣训，但Linux的黑客们怎么产生了这么多?显然Linux的egoboo自由市场比有大量资金的商业软件产品的文档部在产生有品德的、他人导向的行为方面工作的更好。</p>
<p><br>　　Fetchmail和Linux内核项目都表明，通过恰当的表彰许多其他黑客，一个强大的开发者／协调者可以用Internet得到许多协同开发人员而不是让项目分崩离析为一片混乱，所以关于Brooks定律我得到了下面的想法：</p>
<p><br>　　19. 如果开发协调人员有至少和Internet一样好的媒介，而且知道怎样不通过强迫来领导，许多头脑将不可避免地比一个好。</p>
<p><br>　　我认为自由软件的将来将属于那些知道怎样玩Linus的游戏的人，把大教堂抛之脑后拥抱市集的人，这并不是说个人的观点与才气不再重要，而是，我认为自由软件的前沿将属于从个人观点和才气出发的人，然后通过共同兴趣自愿社团的高效建造来扩展。</p>
<p><br>　　可能不只是自由软件的将来，在解决问题方面，没有任何商业性开发者可以与Linux社团的头脑库相匹敌，很少有人能负担起雇佣200多个为fetchmail出过力的人!</p>
<p><br>　　也许最终自由软件文化将胜利，不是因为协作在道德上是正确的或软件&#8220;囤积居奇&#8221;在道德上是错的(假设你相信后者，Linus和我都不)，而仅仅是因为商业世界在进化的军备竞赛中不能战胜自由软件社团，因为后者可以把更大更好的开发资源放在解决问题上。</p>
<p>**** 网友写给作者的感想: ****</p>
<p>你好，Eric：<br>我刚读了你的大教堂／市集的文章，因为你的主页指出你还要继续关于这个问题的思考，我提供一些个人的观察。<br>首先介绍一些背景：当1990年出现BSD Net／2的时候，Brad Grantham和我把它移植到了MacⅡ平台上，它在几个月之后以Mac BSD发布(当然是以市集风格)，后来成为Net BSD／Mac。<br>我作为一个市集协调人学到了一些东西：</p>
<p><br>1. 人们很快地自愿提供帮助，但是常常很慢，我们收到上百封信说：&#8220;我很想帮助，请告诉我需要什么?&#8221; 这些人没提供什么帮助，不管他们有多么积极，真正有帮助的人那些给我们的第一封信便说：&#8220;嘿，我修改了这个，这儿有一个补丁。&#8221;最后我们忽略了所有第一种类型的邮件(只是把他们引向工作列表)，培养与第二种人的关系，这种情况所有协调人都应知道，来克服看到这么多&#8220;志愿者&#8221;时的盲目高兴。<br>(注意：他们的动机是好的，他们只是没有认识到他们正在志愿做什么)。</p>
<p><br>2. 你已经提到了这一点，但我认为它是极端重要的：甚至在你宣布产品以前你必须有一个可工作的系统：例如，我们一直等到有了一个可引导的内核和一个单用户根 shell之后才把它贴到Usenet，曾有过(据我所知)四个不同的Mac Linux项目，每一个都在Linux新闻组中有一大批拥护者，都创建了邮件列表，每个人都很热情，写了FAQ，还有许多诸如MacOS的图标应是什么样的讨论。所有这些项目没有发布一行代码或者一个内核、我挑选了MkLinux(Apple开发的)作为一个可工作的Mac版Linux(在一个项目中， MacLinux假设运转在68K Mac上，而邮件列表中所有的讨论都是关于怎样把它移植到Power Mac上。68K版本甚至不能远程工作!)，这些项目吸引了上述的第一种&#8220;帮助者&#8221;，热情高涨但是实际上却没做什么事，杀掉一个项目最快的方法是在你什么都还没有之前就宣布它，我已经见的太多了，尤其是在<br>Linux世界里。</p>
<p>我知道这两点看起来相当悲观，但我知道当我们想到&#8220;啊，我们做了这么多事了，肯定搞定了不少问题了吧！&#8221;的时候，我们太容易失去理智。而那实际上只不过是一些善良的动机罢了(谁说过：&#8220;不要把动机和行动混淆在一起?&#8221; 本&#183;弗兰克林？)协调人需要解散所有那些诸如图标应该是什么样的、FAQ用HTML格式还是SGML模式的热情讨论，而把注意力放在取得产品的一个可工作的版本，一旦得到了，人们就真正开始帮助了。</p>
<p>（从正面来看，MacBSD极大地得益于从它的开发风格，我们得到了代码、设备驱动程序、钱和一些捐赠和借到的测试和开发的硬件设备)。<br>我期望看到对我上述观点的任何评论和你关于这个主题写的任何东西。</p>
<p><br>Lawrrance <br></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/125218.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 22:58 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125218.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>“一、百、万”工程</title><link>http://www.cppblog.com/toMyself/archive/2010/08/29/125217.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Sun, 29 Aug 2010 14:56:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/08/29/125217.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 自由软件：新的游戏规则洪峰&nbsp;内篇之一：&#8220;一、百、万&#8221;工程&nbsp;&nbsp; 1. 牛犊涉世之初&nbsp;&nbsp; 2. 迷雾中的引路人&nbsp;&nbsp; 3. 蹉跎岁月&nbsp;&nbsp; 4. 走出混沌&nbsp;&nbsp; 5. 漫漫求索路&nbsp;&nbsp; 6. 初试网络的威力&nbsp;&nbsp; 7. 坚果中的爪哇&n...&nbsp;&nbsp;<a href='http://www.cppblog.com/toMyself/archive/2010/08/29/125217.html'>阅读全文</a><img src ="http://www.cppblog.com/toMyself/aggbug/125217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-08-29 22:56 <a href="http://www.cppblog.com/toMyself/archive/2010/08/29/125217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开发者的人品问题</title><link>http://www.cppblog.com/toMyself/archive/2010/06/10/117538.html</link><dc:creator>iven</dc:creator><author>iven</author><pubDate>Thu, 10 Jun 2010 02:31:00 GMT</pubDate><guid>http://www.cppblog.com/toMyself/archive/2010/06/10/117538.html</guid><wfw:comment>http://www.cppblog.com/toMyself/comments/117538.html</wfw:comment><comments>http://www.cppblog.com/toMyself/archive/2010/06/10/117538.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/toMyself/comments/commentRss/117538.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/toMyself/services/trackbacks/117538.html</trackback:ping><description><![CDATA[<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">&nbsp; </p>
<h2><strong><span><a title="Permanent Link to 阿里软件资深架构师谈：开发者的人品问题" href="http://www.programmer.com.cn/3373/"><span><span>阿里软件资深架构师谈：</span></span><span><span> </span></span><span><span>开发者的人品问题</span></span></a></span></strong></h2>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><br><br>&nbsp;&nbsp;&nbsp;程序员都知道：绝大多数编程中的问题，最终都是自己的人品问题。当遇到奇怪的问题时，我们总是喜欢怀疑系统、怀疑编译器、怀疑网络、怀疑硬件&#8230;&#8230;就是不愿意怀疑自己的人品。熬过几个不眠之夜后，最终还是发现自己的代码存在人品问题。只有极少数的情况才是系统的问题。 </span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">同样，一些程序员在职业发展中遇到问题时，也总是喜欢怀疑公司不好，怀疑战略有问题，怀疑流程制度不合理，怀疑老板和同事&#8230;&#8230;就是不愿意怀疑自己的人品。 </span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">在大大小小的<span lang=EN-US>IT</span>企业中，总能看到一些技术并非最顶尖的程序员做成大事的例子，也总看到一些技术牛人被埋没而不能一展才华的现象。我想，除了机遇之外，还有一个很重要的因素，那就是：程序员的人品问题！ </span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">当然，这所说的&#8220;人品&#8221;，依然是调侃的说法，并非指道德问题。其实，人品问题指的是程序员的软实力。如果将程序员的编程技能称为硬实力，那么编程技能之外的东西统统可以称为软实力。不容置疑，编程技能是一个优秀程序员必须具有的硬实力，对程序员的职业发展起着最直接的作用，但程序员的软实力 同样不可忽视。 </span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">如何修炼自己的人品呢？我想谈谈自己的一些经验和教训。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><span lang=EN-US style="COLOR: #365f91"><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><strong><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">程序员相轻 </span></strong><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">在长期与程序员打交道的过程中，发现大多数程序员和我一样，喜欢以自我为中心，特别是年轻的程序员。也许我的观察可能不完全正确，但从许多程序员的言谈举止中，确实可以感受到我曾经的浮躁心态。 </span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">喜欢以自我为中心的人，往往会自以为是，并按自己的思路和想法行事，不太愿意听取别人的想法和意见。同时，这样的人，性格相对内向，喜欢沉浸在自恋和自负的虚幻空间里，其他人的思想都看不上。当两个都很自我的程序员相遇时，他们不是互相倾听和学习对方的优点，而更喜欢找对方的缺点，从而显摆 自己的优势。这就是所谓&#8220;程序员相轻&#8221;现象！ </span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">不知道各位程序员是否存在程序员相轻的心态，反正以前的我经常看不起别的程序员，甚至还看不起那些德高望重的老前辈。能被我欣赏的程序员更是寥寥无几。同事编写的代码在我眼里就是小儿科，或者干脆就是垃圾。我认识许多过来的程序员，那些曾经很自我，但现已放下，从而潇洒编程的程序员。他们现 在都在一些公司的团队里担当重要角色，但据他们反映，&#8220;程序员相轻&#8221;的现象在<span lang=EN-US>IT</span>企业里是普遍存在的。 </span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">现在的软件开发，大都需要团队协同来完成的。团队作战是需要团队每一个程序员相互信任和尊重，将分散的力聚在一起形成合力，从而攻克一个又一个的项目工程。如果一个团队中的程序员相轻现象严重，团队中的成员就会从相互争论演变成相互指责，逐渐失去成员间的相互信任和尊重，内耗日渐严重。最终，团队的力量 就四分五裂，大家并不向同一个方向使力，整个团队将变得毫无战斗力。 </span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">我想，对于程序员的职业发展来说，要过的第一个坎就是<strong><span style="COLOR: #000000">克服</span><span style="COLOR: #000000">&#8220;程序员相轻&#8221;的心态</span></strong>。只有修正了这一人品问题，才能将自己的思想从狭隘封闭的自我空间中解放出来，才能踏上一条宽广的职业发展之路。那么，克服程序员相轻的心态很难吗？其实不难！很简单：放下自我！ </span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">世界上最难战胜的对手就是&#8220;自我&#8221;，而世界上最重的包袱也是&#8220;自我&#8221;。因为自我，人必自恋，心必自私，行必自负，荣必自欺，败必自卑。程序员相轻这一最大的人品问题，就是因为太自我。如果敢说&#8220;我的人品没问题&#8221;，那就得先放下自我。自我放下啦，人品问题也就放下啦。既然这样，我们何不将这沉 重的包袱放下，让心灵轻松自由起来的呢？</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><span lang=EN-US style="COLOR: #365f91"><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><strong><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">沟通交流 </span></strong><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">大多数程序员是比较含蓄的。比起复杂的人际交往，我们更喜欢单纯的技术工作。因此，在与人交流的时候，程序员会表现出两方面的不适应：一是不善于倾听；二是不善于表达。其实，我以前也是这样。在听别人讲话时喜欢默不作声，而心里总盘算自己的思路。轮到我讲话的时候，却不能有效地表达自己的思 想，讲的话很难让人理解。有时候，又喜欢打断别人讲话，将自己的观点强加于人，也不管是否听懂对方的意思，就大加指责，甚至出言不逊。 </span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">沟通交流障碍是大多数程序员普遍存在的另一个人品问题。而在团队协作中免不了相互沟通，如果一个程序员在沟通方面存在障碍，是很难融入团队开发工作的。因此，程序员应该努力提升自己的沟通能力，修炼沟通交流方面的人品。当然，提升自己的沟通能力，并不是要求我们练成辩论家的口才，只要能做到 有效地倾听和有效地表达就已经足够了。 </span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">其实，做到有效的倾听还是比较容易的，特别是当对方的表达能力很强的时候，我们只需要静下心来认真倾听即可。即使不是很容易听懂别人的话，就多问问，请对方再讲讲。反正，<span style="COLOR: #000000"><strong>一定要先理解别人的意思，才表达自己的意见</strong></span>。或许在你看来别人的想法是错的，不妨先让人家把话说完。没准等人家说完之后， 你会发现原来自己错啦；即使自己没错，也能可能理解错了人家这样想的原委。理解是从倾听开始的，认真倾听体现了对人的尊重。设身处地想想，如果是你在发言时，是否希望人家都能认真倾听你的心声，理解你的思想呢？那么，在别人发言时，我们为什么就做不到认真倾听呢？</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">然而，倾听的目的是为了理解别人的想法。一些人默不作声，貌似在听人家讲话，实际上想着别的事情；而一些人却是不懂装懂，假装点头，让人家误以为听懂了。对于有效的沟通来说，这些现象不但没有好处，反而会带来更多坏处。问题得不到解决，隐患埋藏得更深。因此，<span style="COLOR: #000000"><strong>倾听就要认真仔细的听，努力从讲 述者的思绪去理解问题，真正理解别人的想法。懂就懂，不懂就不懂，千万别不懂装懂</strong></span>。不管你是菜鸟还是大牛，多问问，没人会瞧不起你！</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">相对来说，做到有效地表达会难些。很多程序员会有这种感觉，让我写代码容易，让我说出来就难。只可惜，代码是写给机器的，沟通交流面对的却是人。因此，提升语言表达能力也是非常重要的，除非你不打算与人打交道。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">其实，在语言表达方面还是有一些简单的原则可以借鉴的。首先，要记住，不管怎样讲，要把握得住讲话的逻辑线索；其次，先讲背景，建立起沟通的上下文，再讲具体的细节；然后，在讲解中穿插关键词语的简短解释。相信这样讲解是可以让许多人理解的。这就好像编程，得有完整的逻辑主线，得有上下文， 还得有变量定义，等等。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">另外，在讲话时尽量少用指代词，就是少用&#8220;这个&#8221;、&#8220;那个&#8221;、&#8220;它&#8221;等词语。不妨直接说出这些指代词背后的真正名词，不过是多说几个字而已，但听者更容易准确地知道你指的什么。比如，你向别人请教时说&#8220;这个东西有问题，你知道原因吗&#8221;，人家一定会反问&#8220;什么东西&#8221;。但如果你说 &#8220;<span lang=EN-US>Memcached</span>命中率有问题，你知道什么原因吗&#8221;，人家就可以立即开始思考问题的原因啦。尽管在你的头脑里&#8220;这个东西&#8221;指的就是 &#8220;<span lang=EN-US>Memcached</span>命中率&#8221;，但人家并不清楚。这就好像编程时对变量命名一样，相信编程经验丰富的你基本上不用<span lang=EN-US>a</span>、<span lang=EN-US>b</span>、<span lang=EN-US>c</span>这样的通用名字，一定会用<span lang=EN-US> bufferSize</span>、<span lang=EN-US>totalAmount</span>、<span lang=EN-US>lastChild</span>等等让人一眼就能明白的单词。那么，既然你能在编程中可以养成良好的命名习惯，为什么 不能在语言表达中也养成良好的命名习惯呢？</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">程序员如果把沟通交流的人品修炼好了，保证你的职业发展会驶上快车道。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><span lang=EN-US style="COLOR: #365f91"><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><strong><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">协作能力</span></strong><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">我以前喜以欢单打独斗。如果我不能掌控全部代码，我宁愿不做；或者动不动就把本该人家写的代码也写一份，搞得别人很没面子。后来我知道，就算我是千里码，日编千行，夜编八百，也很难独自完成现代的大型系统开发。在现代的软件企业里，协作能力也是对程序员人品的重要考验，我们应该努力提高在协 作方面的人品。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">首先，提高协作能力要善于分清责任和义务。其实，这个很简单，就是根据大家约定的分工做事情，该谁做的就由谁做，该谁担责任的就谁担责任。不要盲目做事，更不要随意插手人家的事情。程序员应该牢记自己的责任，切实履行自己承担的义务。只有这样，才能赢得同事们的尊重和信任。其实，对一个有战 斗力的团队来说，不但需要忠实履行义务的成员，更需要敢于承担责任的成员！</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">其次，就是<span style="COLOR: #000000"><strong>要随时了解和关心别人在做什么</strong></span>。我以前喜欢闷头做事情，守好自己的一亩三分地，其他的都不闻不问。这对于协作开发来说是非常不好的。在一个协作的团队中，不了解别人在做什么，自己的事情也肯定做不好。分清责任和义务，并不是说可以不了解和关心他人的事情，千万别为了分清责任和义务而走极端。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">最后，就是<span style="COLOR: #000000"><strong>做事要积极和灵活</strong></span>。在这一点上，可以说是仁者见仁，智者见智，修炼起来确实需要些悟性的。做事积极主动相对比较容易，看到团队的问题主动提出来，并从自我做起加以解决；对于没人承担或谁都不愿做的事情，试着去做做；自己取得了成果，主动与大家分享一下；别人的工作有了进展，多多鼓 励和支持一下。不过，做事灵活就更不容易把握，这要求既能成事，又不失原则。这种人品只有在摸爬滚打中才能修炼出来，就看大家的悟性啦。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><span lang=EN-US style="COLOR: #365f91"><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><strong><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">职业修养</span></strong><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">毋庸置疑，程序员是一种职业。一些人是因为生存而选择了做程序员，一些人是因为兴趣爱好而选择了做程序员。可能大多数程序员和我一样，既是为了生存，也是喜欢编程，所以选择了做程序员。不管怎样，吃了程序员这碗饭，就得对得起程序员这一职业。既然程序员是一种职业，那就有职业化的要求。一名 程序员是否具有职业化的修养，可能是企业老板最关注的人品指标。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">职业化与专业化有很大不同。我们常常会称赞某人很专业，说的是这个人有某方面的专长。某方面的事情他是专家，他也很愿意去做那些事情。这叫着专业化。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">职业化首先要求我们要有专业的技能，除此之外，还要求我们有职业的态度、职业的意识和职业的道德。工作中的事情，并不每一件都是你喜欢和擅长的，但你也得去做。简而言之，专业化就是&#8220;将喜欢的事情做得很好&#8221;，而职业化就是<span style="COLOR: #000000"><strong>&#8220;将交给你的事情当作喜欢的事情，并将事情做好&#8221;</strong></span>！</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">我承认，和大多数程序员一样，我也想加入核心技术团队，也喜欢做创新性的工作，喜新厌旧，不想干编程中的体力活。但在一个企业里，不可能人人都参加核心技术开发，修建软件大厦总要有一些人会去做施工队，去干搬砖头的体力活。于是，当有工作交代下来的时候，如果不是我喜欢和擅长的，也只好硬着 头皮去做，不情愿的牢骚只能暂时憋在心头。当然，既然接了这单子的买卖，也就想尽办法努力去做好，一来是要面子，二来是怕将来留下麻烦。多年下来，也逐渐在一些不喜欢和不擅长的工作中找到快乐和成就感。后来才明白，这就叫职业化。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">另外，项目开发团队中最怕出现情绪化的程序员。尤其是在核心开发工作中，情绪化的程序员无疑就是整个项目的定时炸弹。尽管这样的程序员可能有着极高的专业化造诣，一旦项目客观要求发生变化，与其原来的喜好和理想不符的时候，他们就可能就会产生抵触情绪，甚至干脆撂挑子不干啦。其实，<span style="COLOR: #000000"><strong>情绪化是不成熟的表现， 更是缺乏基本的职业修养</strong></span>。想想自己过去也曾有过类似的表现，如今想来真是可笑啊。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">其实，做到职业化也没那么难，只需要乐观的心态和那么一点点牺牲精神。既然工作和纳税一样是无法避免的，我们何不快乐面对工作。既然这件事情总得有人做，牺牲一下又何妨，权当行善嘛。当然，要做就得做好，得有那么一股劲。让我干体力活，我就权当锻炼，即使让我扫地，我也要比别人扫得干净！这 样才能在工作中找到快乐和成就感。在职业生涯中，也许会失去某些东西，但也会得到某些东西。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">有职业化修养的程序员在企业和团队里是值得信赖和让人放心的，将这样的人放到重要和核心的技术项目中将是项目成功的有力保障。因为，<span style="COLOR: #000000"><strong>不管项目需求如何变化，不管技术方案如何调整，有职业化修养的程序员都会认真做好需要的每一件事情</strong></span>，这可以有效地保证企业和团队的整体利益和目标。因此，想要你 的职业发展一帆风顺，一定要修炼职业化人品！</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><span lang=EN-US style="COLOR: #365f91"><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><strong><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">尾声</span></strong><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">是否能认识到人品问题，关键看自己，是否打算修炼人品，关键也要看自己，外人是帮不了的。哲学家说，外因对事物发展的影响有限，而内因才是推动事物发展的根本因素。所以，如果程序员自己不愿意修炼自己的人品，无论外人如何苦口婆心都是没用的，反而会让他觉得你讨厌。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">人必须要自己经历了一些事情，才会有切身的体会。面对问题，如果开始从自身找原因啦，也就是缘份的开始。当苦苦求索，而不得其解时，也就是机缘到啦。某一天，自己突然想明白啦，或者偶遇高人点化，心中突然豁然开朗，就是顿悟。顿悟之后才发觉原来一切都很简单，以前纯粹是自寻烦恼。程序员不就 是那么回事儿嘛！从此，我们就可以轻松潇洒地做程序员啦。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 10.5pt; COLOR: #365f91">但要记住，程序员还是程序员！别修炼了半天人品，修成了专家，成了辩论家，成了哲学家，成了思想家，就是不会编程啦。如果大家都得道成仙了，谁来干活呢？当然，因为你的道行高，大家希望把你供起来，但千万别自己把自己供起来。真的，程序员修炼人品，不是为了摆脱编程工作，而是为了找到编程 的快乐。</span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; COLOR: #365f91"><font face=宋体>有一位大和尚曾对我说：真正的快乐不在于你拥有多少，而在于你付出了多少！如果你将每一件事都当善事来做，心就会快乐。所以我想，行善从编程开始好啦&#8230;&#8230;</font></span><span lang=EN-US style="COLOR: #365f91"><o:p></o:p></span></p>
<img src ="http://www.cppblog.com/toMyself/aggbug/117538.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/toMyself/" target="_blank">iven</a> 2010-06-10 10:31 <a href="http://www.cppblog.com/toMyself/archive/2010/06/10/117538.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>