2013年4月月 发布的文章

Hadoop集群搭建详细简明教程

这份教程是最简版、也是最详细版,按照步骤一步步做,应该能达到效果,这里面一点理论都没有提到,请大家在熟悉相关内容后,自行学习必要的理论。欢迎访问博客,交流沟通。
内容主要包括:
Linux操作系统安装
Hadoop集群环境安装、配置
Hadoop集群搭建验证
Hadoop开发环境搭建
MapReduce程序如何测试
Hadoop源码阅读
说明
文档下载地址:http://pan.baidu.com/share/link?shareid=495136&uk=772112791
在Hadoop云计算群300165122已经发布了,有同学按照文档已经搭建过了。
下边为文档,建议使用火狐浏览器!
[crocodoc width=”700″ height=”900″]

Source Insight 3.5查看hadoop源码

先说一下为什么要研究Source Insight的使用
最近打算看下hadoop的源码,在网上看了下,一般都是在vmware上安装linux虚拟机,搭建一堆组件,编译hadoop源码,但是我是为了“读”hadoop源码,而不想编译。
把hadoop源码从svn下checkout出来,到eclipse里,不编译四处都是红叉,看着难受,O(∩_∩)O哈哈~,因此,决定研究下Source Insight。
1、新建文件夹”hadoop源码“,从svn检出hadoop源码到该文件夹,svn地址 http://svn.apache.org/repos/asf/hadoop/common/tags/release-1.0.3
2、打开Source Insight,点击菜单“Porject→New Project”
3、输入工程名,选择刚才新建的”hadoop源码“文件夹,将工程信息保存在该文件夹下。
4、下一步是选择是否只为该工程单独设置还是全局设置,这里选默认,点击OK即可。
5、选中hadoop目录下的src文件夹,选择”add tree“,就将所有代码添加到工程里。
6、所有文件都加入到工程后,点击close,关闭对话框。
7、双击右侧区的“File Name区”中的文件即可打开该文件。共有4个区:左侧显示该文件中的所有变量、函数、包含文件的名称(双击该区的任意一项,会在中间区域显示出它的实体);中间区显示代码的内容;右侧区显示整个工程中的文件;最下方的区域为关联区,当鼠标双击中间区域的某个函数后,在下方关联区会立刻显示该方法的实体。
 

source insight

source insight

Struts2报到异常:The content of element type "package" must match

Struts2工程启动提示错误:
The content of element type “package” must match
The content of element type “package” must match “(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*)”. struts.xml /webstruts/src line 12 XML Problem
这个错误的意思是,package里元素必须按照其默认的顺序排列。这个顺序
是:
result-types
interceptors
default-interceptor-ref
default-action-ref
default-class-ref
global-results
global-exception-mappings
action*(把所有的action放到最后)

20130415爆笑体育完整版第五期

20130415爆笑体育完整版第五期
王涛,一个热爱电影、曲艺、游戏、足球的80后,生下来枯瘦如柴,于90年代后期逐渐发胖走形,从酷似陆毅、谢霆锋转而形似孙楠、周润发(中老年),一直以为自己能成一个相声演员,在相声大潮不景气的情况之下,投身主持界,于99年考入北京广播学院播音与主持艺术学院,学习播音的过程中却发现自己其实酷爱电影和足球,于是自学了导演和体育解说。2010年,王涛制作的《疯狂的足球》火遍大江南北的球迷之间,随后他配音的《演员的自我修养》也是一发而不可收拾干净。于是,在2012年末,正在筹备的《爆笑体育》栏目组选择了他作为主持人。

window下Hadoop开发环境的搭建

好多人问我Windows下怎么搭建Hadoop开发环境,说句老实话,这个问题其实很简单,你是怎么开发java项目的,就怎么写mapreduce程序就OK。但是好多培训视频都给搞复杂了,一阵安装cygwin,一阵又搞什么eclipse连接hadoop集群,我对此的评论用一句话概括:脱裤子放屁……
如果培训公司是想把hadoop这个如此简单的故意搞复杂的话,那么我鄙视你……什么为了方便测试之类的云云,都是扯淡
按照我的理解:你的机器上能运行hello world,就能编写hadoop程序!
Hadoop新人必须先记在心里的东西:
1、cygwin只是模拟了linux环境
2、hadoop必须安装在linux环境上
3、mapreduce程序开发直接就在window上开发即可,你是怎么开发java项目的,就怎么写mapreduce程序
4、mapreduce程序的运行:你是怎么运行java main方法的,那就怎么运行mapreduce程序,可以把写好的程序打成jar包 放到hadoop集群上 执行hadoop命令(就像大家安装完 验证集群是否正常运行那样 ”计算圆周率“一样)
5、我们学的是hadoop 而不是整环境 ,可以先把环境的问题绕过
6、刚开始千万别用eclipse连接hadoop集群,如果你实在是闲着无聊,那请你自己钻研
7、如果你说6的理由是测试方便,那我告诉你,写junit更方便
下面的视频是给想挑战自己能力人看的,如果只是想学好Hadoop的话就别看了!

jenkins(husdon)检出代码错误

今天碰到了那个问题,那个像幽灵一样的问题,现象描述:
jenkins的job,没有任何人配置,修改,网络环境也没有人动过,突然就不能用了,报出如下错误:
ERROR: svn: authentication cancelled
org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled
全部错误:

Started by user tianhailong
Building in workspace /root/.jenkins/workspace/web-query-1.0
Cleaning local Directory .
Checking out http://gforge.1verge.net/svn/data_analytics/trunk
ERROR: Failed to check out http://gforge.1verge.net/svn/data_analytics/trunk
org.tmatesoft.svn.core.SVNException: svn: OPTIONS /svn/data_analytics/trunk failed
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:298)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:283)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:271)
	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:533)
	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:98)
	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1011)
	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:180)
	at org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:482)
	at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:876)
	at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:534)
	at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:901)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:84)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:136)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:788)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:769)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:753)
	at hudson.FilePath.act(FilePath.java:851)
	at hudson.FilePath.act(FilePath.java:824)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:743)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:685)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1325)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:676)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:581)
	at hudson.model.Run.execute(Run.java:1516)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:236)
Caused by: org.tmatesoft.svn.core.SVNErrorMessage: svn: OPTIONS /svn/data_analytics/trunk failed
	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:200)
	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:146)
	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:89)
	... 28 more
Caused by: org.tmatesoft.svn.core.SVNAuthenticationException: svn: OPTIONS request failed on '/svn/data_analytics/trunk'
svn: OPTIONS of /svn/data_analytics/trunk: 403 Forbidden (http://gforge.1verge.net)
	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:62)
	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:656)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:292)
	... 27 more
Caused by: org.tmatesoft.svn.core.SVNErrorMessage: svn: OPTIONS request failed on '/svn/data_analytics/trunk'
	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:200)
	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:146)
	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:89)
	at org.tmatesoft.svn.core.SVNErrorMessage.wrap(SVNErrorMessage.java:366)
	... 29 more
Caused by: org.tmatesoft.svn.core.SVNErrorMessage: svn: OPTIONS of /svn/data_analytics/trunk: 403 Forbidden (http://gforge.1verge.net)
	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:200)
	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:181)
	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:133)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPRequest.createDefaultErrorMessage(HTTPRequest.java:444)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPRequest.dispatch(HTTPRequest.java:189)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:379)
	... 28 more
FATAL: null
java.lang.NullPointerException
	at java.util.ArrayList.addAll(ArrayList.java:472)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:743)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:685)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1325)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:676)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:581)
	at hudson.model.Run.execute(Run.java:1516)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:236)

查看job配置:
会报svn验证错误:

错误截图

错误截图


但是当你输入用户名 密码的时候,它又说是正确的:
验证已通过,用户名、密码以保存,但是返回配置页面却还是错误的。
在谷歌中搜索“jenkins svn: OPTIONS 错误”和“hudson svn checkout Maybe you need to enter credential”(百度无效啊 ╮(╯▽╰)╭),查了好多资料,感觉是svn插件问题
有说是版本问题(我未验证是不是版本问题):
http://stackoverflow.com/questions/8642196/jenkins-build-fails-with-svnexception
有的说是网络问题:
http://serverfault.com/questions/355166/jenkins-missing-scm-options-after-networking-ip-change
Anyone have any ideas of how to fix this? I found some of the old IPs in /var/lib/jenkins/hudson.scm.SubversionSCM.xml and changed them to the new IP and restarted/reloaded, but that did not fix this. The same screen shows up when adding a new job as well. I also noticed there is a .subversion directory in /var/lib/jenkins too.
这个也特别像:
http://issues.hudson-ci.org/browse/HUDSON-4567
后来去插件官网:
https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin
在TroubleShooting找到答案了
TroubleShooting

TroubleShooting


最终答案:
Though I do not know why Hudson (SVNKit) cancels the SVN authentication but removing the ‘~/.subversion’ directory solves the issue.
http://blog.vinodsingh.com/2009/08/hudson-svn-authentication-cancelled.html
总结:技术搜索:谷歌靠谱;技术钻研:老外靠谱;到处搜索:不如官网靠谱。 O(∩_∩)O哈哈~

CMU博士用机器学习做出能够通关《超级马里奥兄弟》的人工智能

卡内基梅隆大学博士 Tom Murphy 写了一个可以通关《超级马里奥兄弟》等任天堂经典游戏的程序。这个程序可以玩基本上所有的任天堂游戏,但是它不一定每个都能够打赢。
这种程序算是一种比较简单的人工智能,它的算法是机器学习的一种。NES 游戏主机只有 2kb 的内存,其中会主要记录游戏的状态,包括游戏分数和人物所在位置。Murphy 通过记录 NES 游戏主机内存在玩游戏中的演变,以提升游戏的分数为目标,训练人工智能做出正确的选择或操作。它的决策方法也包括一些贪婪法类的算法。
经过几次迭代之后,Murphy 的程序可以打通《超级马里奥兄弟》的前两关,世界 1-1 和世界 1-2。因为这个人工智能的设计,它会做所有加分的行为,比如吃币。Murphy 还发现在无形之中,这个人工智能发现了很多他以前都不知道的《超级马里奥兄弟》中的小 bug,而且自动开始利用这些 bug 去通关。比如,你知道 Mario 如何可以用头去干掉敌人吗?人工智能知道:Mario 在跳起后的下降时是无敌的,所以头和脚都可以干掉敌人。人工智能能够如此精准地发现而且利用其它程序中的漏洞,很明显,未来的黑客大战将是人工智能对人工智能,因为毕竟人工智能的第一语言就是机器语言。
Murphy 也试着让这个程序去打其它的任天堂游戏,比如《俄罗斯方块》。虽然它不能赢,但是效果还是很有趣的。在它快要输的时候,人工智能会把游戏暂停,因为这是它在那时能做的最好的选择。看来人工智能也会耍赖。
太令人震惊了啊!!!

林锐:我的大学十年

写此文使我很为难,一是担心读者误以为我轻浮得现在就开始写自传,二是担心朋友们误以为我得了绝症而早早留下遗作。
不论是落俗套还是不落俗套地评价,我在大学十年里都是出类拔萃的好学生。并且一直以来我对朋友们和一些低年级的学生们都有很大的正面影响。这十年是一个从幼稚到成熟的过程,交织着聪明与蠢笨、勤奋与懒散、狂热与怯懦、成功与失败。做对了的事可树立为榜样,做错的事可挂作为警钟。我写下经历与感受,期望以此引导和勉励无数比我年轻的学生们。我资历尚浅,既没有哲学家的深遂,也没有诗人的风华,不足以堂皇地育人,只能讲一些故事以表心愿。
我出生在1973年的春节,属牛,是“牛头”。父母为我起了很好听的名字叫“林锐”。这暗示着上天对我别有用心,将降大任于我,可是这时候上帝去了一趟厕所。天堂与人间的时差如此之大,就在上帝大小便的几分钟内,我混混沌沌地度过了童年和少年,天才因此成为凡人。
我小时候生长在浙江黄岩的偏僻山区。父母都是中学教师,由于山区师资缺乏,父母经常要从一个山头调到另一个山头教学。我换读过的小学的数目比我的年龄还大,没有伙伴,也没有家的概念。我就象活在货郎担里的小鸡,缩成一团,在高兴或恐惧时至多“啾”“啾”地叫几声。我在读小学与初中的8年里,既不聪明活泼,也不调皮捣蛋,确切地说象块木头,简直是我名字的反义词。在学习上我没有受过一次表扬,也没有任何值得留念的人或事。唉,无论我现在多么努力都已无法追回失去的8年金色年华,好心痛!
我草草地并且稀里糊涂地在13岁时从初中毕业,无处可去。这下我发慌了,开始渴望学习。我灰溜溜地离开山区,可怜巴巴地到一个比较好的乡下中学重读初三。我勤快得早晨4:30就起来读英语,脑袋似乎也被吓开窍了,“数理化”学得很好,并且生平第一次在物理考试中得了满分。当我“再一次”从初中毕业时,我以全校第一的成绩考入了黄岩中学读高中。
黄岩中学分农村班与城市班,我当然是农民阶级。“阶级区别与歧视”对我是相当有促进作用的。我连任了几年的卫生委员,星期六和星期天同学们习惯地把活留给我,我这小官当得有滋有味。《物理》学得极好,有一种直觉帮我快速准确地解题,常常是老师刚把题目写完我就报出答案来。上物理课时我没法讲废话,因为我一开口就是标准答案。
可惜我的文科成绩极差。那时期盛传“学好数理化,走遍天下都不怕”,我们年少不懂事,糟踏了学文科的好时光。我写作文的最高目标就是不逃题,考试前我总是反复祈祷:我没干过坏事,保佑我作文不逃题吧!历史考试时填写“任课老师某年某月某日在我家乡英勇就义”,比谁的成绩更接近零分。更让我沮丧的是,这些行径都不是我发明的,我顶多是个跟屁虫而已,一点回忆的自豪感都没有。
我现在认为文科教育实质是素质教育,如果素质不高,男孩再聪明也难以成大器,当然也难以吸引好女孩。
高考时我语文得了54分(是班里的中上水平),总分只比重点线高十几分。我不敢报考好地方,只好选择内地。选来选去觉得西安与成都两个城市还不错,我拿把尺子在地图上一量,发现我家乡离西安的直线距离较短,于是就选了西安。老师们只听说过西安交通大学比较有名气,但谁也不了解。我以为在西安交通大学是学习开火车、开轮船的,尽管我也很渴望能开车开船,但考虑到自己的身材单小,就忍痛割爱了。我觉得西安电子科技大学的名字很好听,符合我做科学家的梦想,于是就报考西安电子科技大学(以下简称西电)技术物理系。
上帝精神拌擞地从厕所回来,发现我已经上大学。也许他原先想把我安排在清华或者北大的,但事已至此,干脆也就撒手不管了。他这一偷懒反而是好事,我在读大学的十年中自由发展,成了卓而不群的学生。
刚进西电,首先吸引我的是麻雀和馍。那麻雀滚圆滚圆的,简直是会飞的肉弹。它们不怕人,成堆聚集吵闹,常让我误以为是没有人管教的一群小鸡。那馍又白又大,既不放盐也不放糖,既不象馒头也不象包子。馍凉了后贼硬,据说有同学被楼上扔下的半块馍砸中脑袋,当场长出一个“肉包子”。最好笑的是人们把“馍夹肉”叫成“肉夹馍”,那东西实在好吃。
西电原是军校,作风严谨,校园并不华丽,生活有些单调。尽管我来自山清水秀的地方,可我的确喜欢西电的粗犷与憨厚。有一天我看到一个新生写的很肉麻的赞美西电的大字报,有一句是“我踏上了东去的列车”,我不禁笑掉牙。这一笑意味着“大个子欺负小个子”历史的结束,“小个子欺负大个子”新纪元的开始。
上大学的第一个学期刚好碰上美国打伊拉克(“沙漠风暴”行动)。那时全国都在谈电子战,我们全校都是研究电子的,而且以军事应用为主。在那种气氛里,同学们都有很强的使命感,并且被鼓动得信心十足。
一日,系主任视察早读,偏偏有同学迟到。系主任喝问:“你为什么迟到了?”
“因为我来迟了,”同学毫不含糊地回答,昂然入座。那时候的学生充满了理由。
我在班里年龄小个子也小,上课时就象猩猩堆里的猴子那么显眼。由于我们是物理系学生,第一学期的《普通物理》课程就显得非常重要。系副主任给我们上课,他长得象叶利钦,口若悬河,板书极快。象在高中上物理课那样,我常在“叶利钦”刚写完题目时就报出答案。开头几次,“叶利钦”满脸疑狐地扫视我们,好像是要抓住拔掉他自行车气门芯的那个捣蛋鬼。后来他在第一排发现了我,我俩乐得裂了嘴。课间休息时,“叶利钦”常坐在我旁边,乘他给同学们答疑时,我就用笔拔弄他硕大无比的手指,在他指甲上涂点什么。
在第一学年,我就象乱草丛中的野花那样脱颖而出,倍受老师和同学们的关怀。就在我光荣到感觉屁股都能绽放光彩的时候,发现了令我胆战心惊的学习缺陷——不会做实验。一进实验室,我就束手无策,浑身发抖。我相信大一的学生们都有虚荣心,为了维护“最聪明”这个荣耀,我完全可以掩盖、躲避甚至偷偷地弥补实验能力的不足。
我做了一件了不起的事:为了对抗虚荣的引诱,我夸大其辞地把“缺陷”告诉每一个我认识的人,让我没有机会欺骗自己。
聪明的人并不见得都有智慧,他可能缺乏“真实”这种品质。虽然我是在硕士毕业的时候才立下誓言——“做真实、正直、优秀的科技人员”,但我在18岁的时候就已经做到了“真实”,我必定一生保持。
第一年暑假回家,得到一个惊喜:家里竟然有了电路实验室!
因为我常在信中鼓吹自己实验能力何等之差,“长此以往,下场将极为悲惨”。父母经不起这种“恐吓”,当英语教师的父亲将半年的工资连同“私有财产”全部捐出,每周到很远的商品交易市场购买电子元件以及器材,在家里建立了实验室。父亲很威严,我从小就怕他,但那个暑假我一点也不怕他。我们一起做实验,都从零学起,话不投机就用电烙铁“交流”,完全是同事关系。后来,我的兴趣转向了计算机,家里的实验室就由父亲独掌,继续发扬光大。现在父亲修理电器的水平在家乡远近闻名,学生们都忘了他是英语教师。
母亲是数学教师,年轻时略有姿色,智力远胜我父亲。当她与他在山头的学校里相遇时,他一顿热情洋溢的饭菜就把她缴械了。我小时候家里很贫穷,家就象一条飘荡的小船,父亲划桨,母亲掌舵。当我6岁上学时,母亲就说:“儿子啊,你将来只能靠笔吃饭而不能靠锄头吃饭。”小时候,母亲怕我变狡诈而不允许我学下棋。尽管我在大学里已经相当出色,母亲来信总不忘叮嘱“德智体全面发展”。她常用独特的方式检查我:
(1)看我是否变胖。如果我胖了,表明我懒了。因为勤奋的人没有理由变胖。
(2)看我说话是否还快。如果我说话慢条斯理,表明我变笨了。因为脑子灵活的人没有理由说话不快。
我读博士研究生时,母亲的眉头才舒开。她经常在师生中发表自由言论:“儿子的智力与性格完全是我遗传的,他爸毫无半点功劳。” 
本科第三学期的主要课程是电路分析。电路题目常常很滑稽,当你满头大汗地解完方程式时,答案往往是零。我归纳了不少公式用于简化计算,所以照样能在老师画完电路图时报出答案。学习是如此的轻松以致于我有太多的课余时间。
在课余我常做两件有意思的事:
(1)我为学习较差的十几名同学办了补习班,给他们讲课,改作业,出考题。我就象老母鸡那样看护着一群小鸡,使班长、学习委员等班干部形同虚设。我这样做既提高了自己的表达能力,又帮助了同学。这事不是老师叫我干的,是我自己的主意。
(2)我经常在宿舍里焊接电子线路,技艺渐精。我曾花了两天时间,把磁带盒做成能发声、发光的精美礼物,乐颠颠地送给一个女孩子。可惜不久后我迷上了计算机,从此再也没亲手做过好玩的东西。
上大学以前我根本没见过计算机。在第四学期时我遇到了十年来最敬爱的老师周维真,从而对编程产生了强烈的兴趣。他教我们Fortran语言,Fortran语言本身对我没有影响,影响我的是周老师高尚的师德以及他在教学和科研中的敬业精神。我从他那里学到的是怎样做人,怎样做事。
很多计算机系老师改作业时喜欢打“√”或打“×”了事。周老师不仅把作业里的错误都找出来,而且逐一评注“好在哪里”和“差在哪里”。为了不让周老师过于劳累,全系同学有一个约定:上课时不准吵闹,否则别来;作业必须清楚,否则别交;提的问题必须有质量,否则闭嘴。
Fortran语言期末考试,我的卷面成绩是97分,有个女同学考了99分。我当时官为课代表,想不到被一个女生超过,甚为沮丧。可是报到系里的成绩单上,我的成绩是99分,那个女同学是97分。我以为周老师搞错了,跑去问他。周老师笑笑说:“你平时的学习表现,该得满分。不能因为考试中的一个失误而打击你的积极性,所以给你加2分作为鼓励。而她一上机就束手无策,要让她知道考试成绩高并不表示已经学好了,扣她2分以示警告。你本来就是第一名。”这时又跑来一个“查”成绩的同学,他得了59分,哀求周老师让他及格。周老师说:“你的试卷我看了好几遍,的的确确是59分。而你平时的学习表现也不会超过59分。这一分不能加,否则我会害你一生。”
在我这一级(90级),周老师至少为技术物理系教出两名软件高手——我和马佩军。我和马佩军读到硕士时已在软件方面雄霸西电,计算机系学生毫无翻身之望。由于马佩军不好名利,风头让我一人独得。我离开西电数年后,余威尚在。可惜我和周老师相处不到一年,他便调到北京信息工程学院。然而师恩的厚薄不在于时间长短,好的老师会让人想念、感激一辈子。
在上大学的前三个学期,学习如同表演,有趣而且轻松。自从第四学期学习了计算机课程,我就有了新的追求,我多么渴望拥有一台计算机,可以天天编程。如果挨一个巴掌能换取一分钟上机时间的话,我愿意每天挨1440个巴掌。如果非得加上一个期限不可,我希望是一万年。
我本科的专业是半导体物理,一二年级由系里负责教学,三四年级由微电子所负责教学。在第四学期末,我央求系里把我推荐到微电子所参加科研,贾新章教授“收留”了我。我踏进微电子所的那一脚,让我从纯粹学习转向了科研,从“高分低能”转向了“低分高能”。
我终于有了一台286电脑,那个暑假我就睡在实验室里,时时刻刻守着它,深夜里我一个人冲着它发笑,一会儿盖上布,一会儿掀开布,一会儿摸摸它的“脸”,一会儿理理它的“辨子”。我很快地完成了任务:设计一个“立方运算”的模拟电路,并且学会了C语言。
西电有个好传统,每年冬季举办一次全校性的“星火杯”学生科技作品竞赛。每届都有六七百件作品展示,低年级的学生看后无不热血沸腾,跃跃欲试。我很希望能独立开发一套软件,参加本届“星火杯”竞赛。贾新章老师是研究集成电路可靠性的,见我如此热切,就让我开发“集成电路可靠性分析软件”。
我开始一边研究数值算法,一边设计软件。从炎热的8月份到发冷的十一月,几乎天天通宵编程,程序很快增长到一万多行。在离竞赛还剩一个月左右的时候,出现了大量的问题。不仅程序老是出错误,而且发现原先的算法并不有效。此时已经没人能够“救”我。贾老师不会编程,不知道问题究竟出在程序上还是出在算法上(实质上两者都有问题)。而那些懂软件开发的年青教师,实在看不明白我的上万行程序是如何组织的。他们只能悲伤地看着我挣扎。由于我经常逃课,好学生变成了坏学生。系里意见极大,贾老师十分为难。不少老师和同学劝我赶紧“改邪归正”,放弃项目,不值得因小失大。
当时我有个无法动摇的信念:如果放弃一次,那么碰到下一个挫折时我就会继续放弃;如果坚持而成功,那么碰到下一个挑战时我会激励自己再取成功。
在压力面前,我依然坚挺。每当略有进展时,心里就一阵狂喜,但很快又会碰到新的困难,有时一坐就是20个小时。每天在喜悦的颠峰与苦恼的深渊之间反复折腾。在竞赛前两天,我终于成功地完成了软件研发,结果获得软件与论文两个二等奖。这个荣誉本身不值得一提,并且我付出很重的代价——对物理专业失去兴趣而彻底抛弃了它。但那时我才19岁,在极限状态下,我磨练了意志,使我日后充满激情。
在本科四年级,我认识了微电子所的郝跃老师。他是数学博士,是微电子所最有才华、最潇洒、最有领导风范的青年学者。我常去向他请教数学问题,他讲得意气风发,我听得如痴如醉。我俩一个月的“交流量”很多硕士花一年时间也得不到。有一天,郝老师说:“你做我的学生吧。”我就毫不迟疑地从贾老师门下“跳槽”到郝老师门下。郝老师后来是我的硕士导师,他高兴时喜欢说:“好,很好,非常好!”我看着他升教授,升博导,升副校长,师生两人分别在各自的阶层中名声显赫。
在三四年级,我的专业课程没有一门及格过。但由于微电子所的老师们已经认可了我,就把我的卷面成绩作为及格线,“水涨船高,水落船底”,我对同学们的帮助莫大于此!如果要我考研究生,我绝对考不上。系主任安毓英觉得我将来很有前途,于是不顾别人反对,一锤定音让我免试读硕士研究生。
读硕士研究生时,我的科研条件相当好。导师十分开明,任我自由发展。我最喜欢做的事是设计图形用户界面和开发数据可视化软件。图形软件的最大魅力是即便它毫无用处,你也可以自我欣赏。总有人担心“花很多精力、物力让界面那么漂亮,图形那么逼真是否值得?”这种问题不能强求别人与你一致。我当时赞美女孩子的最高境界就是把她和我的图形软件相提并论。
我喜欢设计用户界面是因为自己有相当好的美感。在读本科时我模仿过六七个流行软件的界面。那时期大家编程都用Turbo C 2.0,我伪造了一个“Turbo C 2.6”。有个北大的博士生来实验室参观,看“Turbo C 2.6”后对我导师说:“郝老师,你们的工具比我们的先进多了”。
我常常向同学演示、卖弄自己开发的软件。觉得还不过瘾,就写了一篇名为“用户界面设计美学”的短文。凡是路过我实验室的同学都被我逮住,被迫听完我得意之极的朗读,茫然者与痛苦者居多。不久我的朗读便所向披糜,闻声者逃之夭夭。这篇文章我6年后照搬到博士学位论文中,可见当初写时的确有所“超前”。
我的研究工作基本上以集成电路的数值计算为主,数值计算产生的一堆数据常把我搞得晕头转向。我发现用图形来表征、解释数据可以让自己不再迷糊下去,那感觉就象刚睡醒时冲凉水一样。我硕士学位论文中的软件就是用图形来仿真集成电路生产过程中“缺陷”对成品率的影响。我并不是在看了学术论文后才开始研究可视化技术的,我是在做了工作后才发现那些好玩的技术叫做“可视化”。由于我肚子里头的确有货,在硕士一年级,我没有使用“剪刀”与“浆糊”(这是很多人写书的法宝),只化了三个月时间就写完第一本著作《微机科学可视化系统设计》。
我在读硕士期间的工作强度与本科时的相当,但工作方式有很大不同。我有了明确的目标:(1)开发自主版权的软件产品;(2)培养做领导的才能。这个目标可以通过团队工作,参加全国性大学生科技竞赛而实现。
我在西电成立了“可视创意软件小组”,马佩军、戴玉宏、马晓宇是我的主要技术伙伴,帮手很多。有几个漂亮的女生负责宣传(有一个长得像孟庭苇)。办公室里贴满了标语,如“创造性的事业要靠激情来推动”,“生于忧患,死于安乐”,“让春天消失”。还有大幅的“作战图”,倒计时牌。每个伙伴写了一张“军令状”放在机器上,我迄今还记录着那些纯真、活泼、充满激情的文字。那是多么艰苦而幸福的日子,夜里放震耳欲聋的音乐、咬尖辣椒提神,有伙伴累得蹲在厕所里睡着了。
在1994年和1995年的冬季,我们的软件作品分别获中国大学生应用科技发明大奖赛二等奖和全国大学生“挑战杯”学术科技作品竞赛二等奖。在西北地区,我们是“老大”。我成了西电学生的榜样,仰慕我的学生有一大批,我刚到浙大读博士时,收到一个西电计算机系学生的信,他说:“你走了,我呆在西电没有意思,我准备考浙大的硕士生,你到哪里我就跟到哪里。”
在硕士毕业前,我在鉴定表上这样写道:“我热爱科技事业,如同热爱生命一样。近5年的科研工作带给我最充实的生活,也寄托着我美好的向往。可我同时也感到了痛苦,因为5年来我耳闻目睹科研中太多的弄虚作假。我发誓做一名真实、正直、优秀的科技人员,以正身自勉。”
我在西电度过了幸福的6年半,最让我牵肠挂肚的是“吃”、“友情”和“爱情”。
当我第一次吃红红的和青青的辣椒时,“感动”得满脸是泪,那滋味让我觉得前17年白活了。我在读硕士时已经能自力更生,我开发的软件不仅竞赛获奖争了名气,而且还挣了钱(卖了二十多份软件,平均每份挣500元)。写书得稿费7000元,那时我简直就是富翁。这些钱的小部分用来给女孩子买礼物,大部分用于和与哥儿们吃香的喝辣的。
我相信自己已经尝遍了西安的小吃,并且发现了一个“秘密”:最好吃的东西都在地摊上,最香的东西一定是辣的,最辣的东西一定是香的。曾经沧海难为水,我在浙大的三年里很少再吃辣椒,因为怕它玷污我心目中的辣椒。
在我小时候,我爸很讨厌土豆(在困难时期他吃了太多的土豆),他竟然因此不让我吃土豆。我哪敢跟他论理,于是忍啊忍,一直忍到我上大学“远走高飞”。如果说辣椒是我新交的女朋友,那么土豆就是我天生的命。我在西电经常用电炉(从来都没被抓住过)做“以土豆为核心”的菜,天长日久,朋友们干脆叫我“土豆”。
我吃饱土豆和辣椒后不免深思而感叹,人要是认认真真地吃,真的花不了多少钱,那些贪官究竟是怎么吃掉巨款的?我将来怎么吃得掉自己挣来的钱?
我在读中学与本科时,满头白发,脑袋可以当白炽灯泡用。当我硕士毕业再照镜子时,吓了一跳,白头发不见了!我不知道究竟是哪种食物起的作用(估计是辣椒)。那些早生白发的小伙子们,你们就到西安上学吧。
马佩军是我在西电最早的朋友。刚入学时我们分到一个宿舍,他象国民党兵盘问良家妇女那样上下打量我,问:“喜欢干啥?”
我怯生生地回答:“打乒乓球。”
他再问:“什么风格。”
我答:“快球。”
他突然象阎锡山那样怪笑,拍拍我的肩膀说,“好!我喜欢,以后你就是我的朋友。我是陕西人,农民,会开拖拉机和卡车。这里是我的家,以后你有啥事,就对我吱一声。”
马佩军和我打乒乓球时口中念念有词:“哼!你对我狠,我对你更狠;你对我好,我对你更好。”他好几次说要把世上最好吃的板栗送给我一袋,这一袋板栗我到现在都没拿到。马佩军夜里极能侃,吹他家乡的人跑得快,常把野兔追断气。有时他吹得太离谱,常令我们6个舍友群起而攻之。为了把我们一举歼灭,他白天到图书馆查“资料”,夜里再挑起事端。双方就象印度与巴基斯坦,常干两个秃子争一把梳子的事。
马佩军上大学前也没见过计算机,但他对计算机技术有极强的领悟力。我们第一次上机时,他把我拉到打印机旁边说:“帮我防着管机房的,我要修理这台打印机”。还没等我反应过来,他就开始“肢解”打印机。我无比深刻地体会到:歹徒在作案时都不害怕,最提心吊胆的就是那个放风的。他在5分钟内修好了打印机,我佩服得五体投地,甘愿下次再跟他干“坏事”。
我们读本科和硕士时主要用DOS操作系统,那时期病毒泛滥。马佩军杀病毒不用软件,用手杀。看他杀病毒简直是一种享受:噼里啪啦地敲一阵子汇编命令,然后机器就好了。求救电话太多,他经常无怨无悔地带着那双铁手游荡于西电各个角落,却不知道编写个杀病毒软件来赚钱。
我一直认为马佩军是西电编程第一高手,他编程的时候根本不是人,是指针。之所以我的名气大,一是因为他不好名利,二是我把他的程序写上了我的名字(并且卖了不少钱)。
马佩军的女朋友是我介绍的,我一眼就看出她将嫁给他。后来俩人果真结婚了,只是他嫁给了她,现在他还有了一只“小马驹”。硕士毕业后,马佩军留在西电读博。前年我再见到他时,他说我害死他了,快乐得要宰了我。马佩军在西电已经呆了十年,禀承了西电所有的优点与缺点——“很土但结实耐用”。我在西电时很土气,离开西电后变得“半土不洋”。马佩军简直就是西电人自己的“兵马俑”,每次看到他或者想起他时,我就明白自己的“根”还在西电。我喜欢陕西人源于马佩军。
宋任儒是我们的班长,也是班里最早的党员,满口仁义之道,比唐僧还让人受不了。在二年级时,我迷上一个比我大一岁有了男朋友的女同学,多日沮丧。他看在眼里痛在心里,跑去把那女同学教育了一通。苏联解体的时候他十分沉痛,在思想教育课上,他向我们作了深刻的检讨,好象是他没有管教好戈尔巴乔夫那小子。最后他为我们点燃了希望:在不久的将来,“苏联”将重新成为苏联,共产主义旗帜将继续在全世界飘扬。
在本科三四年级,他对跳舞十分入迷,连上厕所都滑翔而去。我那时常把自己关在实验室里搞科研,极少有空与他玩乐,等到本科毕业时,猛地发现他已经风度翩翩。
宋任儒在读本科时学习既不好也不差,我们从来没有合作研究过什么。我喜欢他是因为他很有情趣,不落俗套,并且刚正不阿。也许,我俩本来就有相似的秉性,只是表现不同而已。
本科毕业时,他分到威海工作,走之前我为他饯行。可在硕士开学时,我的房门被人一脚踢开,他对我喊了一声“林子啊,我又回来了”。我就象祥林嫂见到了被狼叼走的孩子那样惊喜。
宋任儒读硕士时被发配到临憧771所,他在那里过上了乐不思蜀的日子。有一天,他带来两个看上去很文静的女孩子(一个读硕士,一个读本科)来串门。就在我洗水果的几分钟里,三个人已玩得乐翻了天,两个女孩满屋子追他,一会儿把他按到桌子上打,一会按到床上打。我惊诧至极而又羡慕至极,恨不得挨打的人是我。想不到上学竟然会有这等欢乐,看来我读硕士的日子白过了。
后来,那个大一点的女孩子嫁给了他。当他带她去见公婆时,公公长叹一声:“把儿子交给你,我就放心了。”而婆婆已乐得合不拢嘴,竟然无法叹气。
现在,宋任儒已从复旦大学获得博士学位,比我更早地成家立业。他和她既是夫妻,又象兄妹,还象伙伴。他叫她“聪聪”,她叫他“笨笨”。
“聪聪”问“笨笨”:“老公啊,人活着为了什么?”
“笨笨”答:“就是让咱们每天快快乐乐。”
我亲眼看到的幸福莫过于此。
我在大二时曾为系里学习最差的十几名同学办了补习班,谢伟在这个补习班里名列倒数前茅。在他睡懒觉时,我象催命鬼那样喊他捅他。他无比吃力地抬起沉重的眼皮,就象软弱无力的举重运动员,还没有挺起来就趴下了。
他开始呻吟:“这一次就饶了我吧,下一次我一定,一定会去的,求你了。”
我不肯。
“那么让我再睡5分钟,”他不死心。
我仍不同意。
“那么你就从1数到10,要慢一点,”他讨价还价。
当我数到9时,他就接着数9.1,9.2, 9.3 ……
一开始他觉得我很好玩,后来他就离不开我了。并不是因为我学习好,而是那时侯我天真并且充满活力。在三四年级我忙于科研时,他照顾我的生活,叫我“少爷”,既做管家又做兄长。我们不仅共用饭菜票,并且共用仅有的一个碗,总是他买饭菜和洗碗。
我们那一级的学生大多崇拜巨人公司的创始人史玉柱,我问谢伟:“我是不是和史玉柱一样能吃苦?”
他说:“如果考虑年龄因素,你已经比他更能吃苦。你将来一定能做大事业,我就把希望寄托于你了。”
在我们都还不成熟的时候,我成了他心中的灯塔,只要灯不灭,希望就在。现在他为了娶一个日本姑娘,披荆斩棘追到日本,有了新的希望。
二十几年来,我就为一个男人哭过,那时他本科毕业离校。
我读硕士研究生时,由于受我的影响,本系三四年级的学生蜂涌至微电子所参加科研。夜里看十二层高的科技大楼,灯火通明、热闹非凡的那一层就是微电子所。那时,我在微电子所学生中的地位仿佛伊拉克的萨达姆,手下兵将极多。
我写第一本书时,有好几个人帮我输入稿子,使我没时间慢腾腾地打草稿。我就象金庸写小说,有如神来之笔,想到那里就写到那里,写了一段他们马上输入一段,一气呵成。那本科技书写得很滑稽,同学们看得笑出眼泪,编辑看了拍案叫绝,只改了几个字就出版了。
那时侯我的心情是如此之好,为一男同学乱蓬蓬的头发写了一篇散文,并送他一把梳子。又把一女同学的实验报告写成评书。我的文笔大概就是这样练出来的。
这一群学生中,戴玉宏、史江一和马晓华是我最好的伙伴(我们都属于牛)。
戴玉宏其貌甚帅,眉中有一根白毛闪闪发光,因此号称“白眉鹰王”。“白眉鹰王”武功了得,是我软件产品的核心开发人员,我们合作最深最久。后来我开公司,他就从广州辞职到杭州为我助威,令我感动不已,可见读大学时期我们有多铁!戴玉宏有一次打饱嗝,整整打了两天两夜,我差点心疼死。
我尚未发迹之日曾与戴玉宏在校园里卖花,无人问津,就请电子工程系的鲁洁救助。鲁洁温柔貌美,她一言一笑尤如春风吹拂苏堤的杨柳,令人心里一荡再荡。顷刻间就有男生围观,有人看花,有人看“贵妃”,鲁洁一走,我和戴玉宏可怜得就象两根蜡烛。鲁洁读大学时调皮捣蛋,到四年级时还不太会编程。她的本科毕业设计是仿真“雷达跟踪飞行物”,程序基本上全是我编写的。我已记不起用了什么公式,只知道每次计算后都弹出一个对话框“报告长官,击中目标”。鲁洁毕业后到深圳的一家软件公司工作,几年一过,她成了行家。再与她交谈时,我只有听的份,象鸡啄米一样点头。
史江一和马晓华都是陕西人,和马佩军一样厚道热情。史江一性格稳重,属于“你办事我放心”的那类人。我对微电子专业一窍不通,全靠他帮我混过实验这一关。后来我开公司失败,陷入经济危机,就把希望工程的一个小孩托给了他。
马晓华是我最不放心的人。他常常为别人做事情,但热情过头就忘了自己的事情。有几个不道德的学生就利用他的这个缺点,经常使唤他,并且借他的钱不还。马晓华喜欢为那些人“卖命”并且挨训,他总是在受虐待够了的时候再跟我们嘀咕,我们实在气不过,只好对着他的屁股追加一顿拳脚,并给他一个绰号“受虐狂”。但愿他找个好老婆,我可以早日放心。
我们这一群小伙子同时喜欢上一个女孩子,她叫姜姗,是她班里的四大美人之一。我们不仅没有争风吃醋,而且心甘情愿地让她坐遍每个人的脖子。姜姗小姐5岁时她爸姜晓鸿成了我的同事,我们经常一起去钓鱼,亲得象一家人。姜姗喜欢大喊大叫,声音高过帕瓦罗蒂,我们教唆她喊她爸“姜球球”。
我常带姜姗到小吃摊去吃女孩子不敢吃的东西,并哄她:“世上最好吃的东西是鸡屁股。”
她无师自通地加上一句:“世上最好听的屁是鸡放的屁。”
我常想着将来生个儿子并把他培养成天才,但如果能有姜姗这样的女儿,不要儿子也罢。
在本科三年级我第一次参加“星火杯”竞赛并获得软件二等奖后,马上成为低年级学生眼中的明星。我义务当上了一年级学生的上机辅导员。一天晚上我巡视机房,一女生请求帮助。
我见屏幕上空白一片,根本没有一行程序,十分疑惑地问:“什么问题?”
“没有问题。”她把书往我手上一塞说:“这些作业你帮我做。”然后就自个子跟她的同学玩乐,把我撇在一边,似乎我辛辛苦苦地学习就是为了给她做作业。
我定神对她细看,发觉她简直就是《射雕英雄传》里的黄蓉再世,顿时心就“突突突”直跳。当天晚上我没睡着,接下几天的课不知所云。在选修课《操作系统》考试时,我给家里写了一封超短信:请快寄钱来,我谈恋爱了。我交了白卷直奔她去。
我的初恋只有两个月,却让我思念了8年。她离我而去时没有任何理由,而我却失魂落魄。在我本科毕业前的18个月里,白天我狂热工作强作笑容,夜深人静时心痛如刀割而无法抑制。没有人为我“疗伤”,我是硬挺过去的,这一段经历使我日后心理承受能力极强。后来我开公司的失败虽然对信心有所打击,但根本无痛可言。
我们分手后并未成为陌生人,就象两只刺猬,离得远了就有点留恋,离得近了,就刺着对方。认识她时我虽然已略显才气,但并不具备成熟男人的魅力,很多事情我并不知道怎么去把握。有时“喜欢”并不能成为“爱”,感情也许是永远研究不透的学问。
我读硕士研究生时有了一群生机勃勃的朋友,感情的伤痛被淹没了。朋友堆里夹着一位女生,她文雅而富有气质。平日里无拘无束,大伙戏称她是我的秘书。我的言行举止和穿着都经过她的调教,俩人出双入对,十分亲近,不知不觉有了感情。别人已经把我们当成恋人,我和她牵着小姜姗散步时,简直就象一家人。
可是我当时着迷于事业,认为自己不久将干一番惊天动地的事。鉴于史玉柱在创业时就离过婚,所以我认为感情是事业的累赘,两者不可得兼。
更糟糕的是,我和第一个朋友藕断丝连,偏偏她俩是同班同学。我知道脚踩两只船没有好下场,可我的的确确同时喜欢着两个人,并梦想她俩能合二为一。我情愿被人指责,也不愿掩饰真实的感觉。有时她俩一同走过,我站在路上丢了魂似的看着俩人的背影,任凭看热闹的人指指点点。
我和第二个朋友已经有了很深的感情,她毕业后我曾坐火车千里送鲜花给她,让她感动过。而我固执的性格和对初恋的思念终于让她心碎。尽管我们已经几年没见,我依然看得见她留在我心里的那颗眼泪。
我在西电六年半的学习和生活也许是一生中最珍贵的,叫我怎能不爱西电。
两年前我回西电,惊奇地发现校园里房前屋后长满了待收割的小麦!这所大学是从事电子科技的,种小麦干啥呀?
朱总理曾讲过:“目前国家粮食充足,再来三年自然灾害也不怕。”现在国泰民安,似乎用不着“深挖洞,广积粮”吧。我素知西电提倡勤俭节约、自力更生,但与其种小麦还不如种蔬菜呢。
老同学告诉我,种小麦是为了应付“211”工程(为21世纪选拔100所重点大学)的检查团,因为“211”工程有较高的绿化指标。偏偏检查赶在冬天,那时的西北极难长草。西电本来就人多地少,地上一长草马上就会被谈恋爱的学生给折磨死。一到冬天,整个校园就光秃秃一片。小麦在年轻的时候还真和青草长得一个模样,用小麦绿化校园可谓千古绝笔,检查团的那些权贵人士早已五谷不分,岂知所见的“草坪”乃是麦田。
浙江大学依山而傍西湖,是个美丽而高贵的大学。1997年春天,我就象干儿子那样挤进她的怀抱,并期望得到关爱。我到了向往已久的计算机辅助设计与图形学(CAD&CG)国家重点实验室读博士学位。导师是石教英教授,石老师虽然年过六旬,但精力充沛,红光满面,施拉普纳不及他半分精神。
我幸福地幻想着大干一番自己喜爱的专业,并计划在35岁左右成为实验室主任。开学的第一天,我兴冲冲地奔向实验室。进门不到5分钟,就因不懂规矩被看门的年青女子训了几次。为了不再冒犯规矩,我就老老实实地抓起一份计算机报纸并且站着阅读,心想这下不得罪谁了吧!
突然一个气得脸色铁青的男人(机房管理员之一)对我断喝:“你在干什么!你怎么可以不经允许就翻看别人的报纸!”似乎我是他一生中见到的最无耻的人。
我就象一个情窦初开的少年飘飘然地去拥抱梦中情人,不料迎来两个耳光,此下场比《猫和老鼠》中的猫还惨。如果这两个年轻人有幸看到我这篇文章,应该好好悔过自新,她与他的工作态度打击过数十个学生的积极性。我本是因为向往CAD&CG实验室而来的,得到的却是极坏的第一印象。(我博士毕业后,这两人也离开了实验室,我替后来的学生们谢天谢地。)
CAD&CG实验室在理论研究方面很有名气,但我的兴趣是开发实用的软件,“嫁错人”了。我颇费周折地考入CAD&CG实验室,却尚未热身就全力而退,决心自立门户。至今我都没有用实验室的计算机编过一行程序。
刚读博士时我穷困潦倒,只有一床,一盆,一壶,一碗。我那些穷朋友们象挤牙膏一样挤一些钱资肋我。我买了一台计算机,在宿舍里开发软件产品“可视化软件开发工具 VA 4.0”。1997年8月,我去北京参加首届中国大学生电脑大赛软件展示,路费也是借的。同学为我壮胆时说:“如果不能获奖,就回到实验室干活吧。”
我说一定会拿第一名,不然去干啥。
在软件展示时,我们发现很多好的作品是国家的科研项目,根本不是学生个人的作品,违背了竞赛的宗旨。如果允许这样做的话,学校可以运几条生产线过来。我写了一份抗议书,找了十几个人签名(很多人敢恨而不敢签)。但抗议能顶屁用,我参加过的科技竞赛、听过见过的科研鉴定多了,哪一次我没看到虚假?我写抗议书是因为眼里容不得沙子。如果我在北大读政治,恐怕早就遭殃了。
这次竞赛选出十个“软件明星”,只有我的软件和清华大学博士生的项目值得一看。他的项目水平很高,但那不是他个人的作品(评委甚至认识他的导师,知道项目的来龙去脉)。综合诸多因素,我的作品被评为第一,他的项目被评为第二。组委会来拍电视,可是找不到浙江大学的展板。因为浙江大学没有任何准备,我是一个人来的,我的作品夹在杭电的作品之中,没名没姓。我只好从塑料袋上剪下“浙江大学”四个字,贴在展板上撑撑门面。
自新中国成立以来,清华大学就一直在浙江大学头上“作威作福”,我好歹也争了一口气。可是颁奖时,组委会竟按地方顺序从北京念起,我沦落到第七,差点咽气。
我曾在上海的一辆公共汽车上与一位北京来的旅客聊天,此公极健谈。似乎他到上海旅游的目的就是为了发掘北京的优越性。见我挂着浙江大学的红色校徽,且对清华、北大并不神往,不禁十分迷惑,就问:“浙江大学在浦东还是浦西?我要去看看。”
北京已经是极度优越了,就请不要把什么鸡毛蒜皮的好东西都拿走。
1997年11月,在穷得快挨饿的时候,我获得了中国大学生跨世纪发展基金特等奖(全国共20名,奖金1万元),到人民大会堂领奖。给我们出钱的是一个靠资本运作发财的集团,在宴会前,该集团领导人和我们座谈,他什么不好吹偏偏吹自己是个高科技企业:“我们主要从事生物工程,几年前就掌握了克隆技术,英国的‘克隆羊’简直是小菜一碟。……我们在东北有个农场,新品种的小麦长得比人还高,麦粒跟葡萄一样大,你们不久都会喝到用这种小麦酿的啤酒。……我如果去美国炒个总统,那就跟玩似得。”
我们几个获奖的博士生吃饱喝足、拿了钱后,关起门来把那个老板臭骂一通,扬长而归。别以为给钱就能让我们说好话!
刚拿了“跨世纪发展基金”,又马上获得“浙江省青少年英才奖”,浙江大学也给我发奖学金。比起那些一个月只有300元工资的博士生们,我简直是“暴富”。还了朋友们给我的“救济款”后,仍然是个“富翁”。我老是觉得手头的钱是“抢劫”来的,心里不踏实。于是找浙江大学校团委“诉苦”,请校团委把我的“不义之财”捐给浙大的贫困学生。校团委的老师热情而坦诚,说愿意等我成为真正的富翁时再接受捐款,现在不能让我“杀鸡取卵”。但为了能让我表达心意,建议我资助“希望工程”的中学生,让我选了5个初一的学生,每个学生500元。我轻浮地以为自己真的帮助了5个中学生,直到1998年暑假我见到了其中的一个中学生,才发现自己做的好事只不过杯水车薪而已。我是到了自己贫困失意时才真正去帮助那些孩子的。
在1997年,我在学生时期的荣誉已登峰造极,觉得自己的翅膀已经硬了,不想再混下去。我总以为自己是第二个史玉柱,应该开个软件公司来振兴民族软件产业。我曾到东软集团(沈阳)参加“民族软件产业青年论坛”,大不咧咧地作了一次演讲(现在发现演讲的内容没有一项是可以操作的)。杭州有一个记者来采访我,我谈了一天的理想,记者还是没听明白,干脆自己写新闻报道,并且含蓄地做了一个广告:万事俱备,只待投资。
由于我能说会道,频频上电视,引来近10个投资者。我选择了一位年龄比我大一倍、非常精明的商人作合伙人,成立了“杭州临境软件开发有限公司”。彼时,我可谓光芒四射,名片上印着“以振兴民族软件产业为已任,做真实、正直、优秀的科技人员。”浙江大学有关部门想开除我,被我“晓之以理、动之以情”安抚住。
我当时想开发一套名为Soft3D的图形系统,此系统下至开发工具,上至应用软件,无所不包。公司名字起为“临境”有两个含义:一是表示身临其境,这是我对图形技术的追求;二是表示快到了与SGI公司称兄道弟的境界,这是我对事业的追求。“临境”这个名字我在读本科时就已经想好了,1997年底公司成立的那一天,我有一种“媳妇熬成婆”的悲壮感觉。
我从实验室挖来一位聪明绝顶的硕士生做技术伙伴。他叫周昆,年龄很小(1978年出生),研究能力极强。如果按照浙江大学计算机系博士生毕业的论文要求,他入学读硕士的那一天就可以博士毕业。周昆的头明显比我的大,估计其脑容量至少是我1.5倍。我曾经以师兄的身份为他洗过一双袜子,他因此觉得我是个好人。我俩一拍即合,常常为Soft3D的设计方案自我倾倒。一想到Microsoft公司的二维Windows系统即将被Soft3D打击得狼狈不堪时,我们就乐不可支,冲劲十足。
我已经把“振兴民族软件产业”列入日程,并且提前担忧将来钱挣得太多用不完该怎么办。1998年5月份,我们做了一套既不是科研又不全象商品的软件。软件产品宣传了几个月,并没有出现订单如潮、接应不暇的局面(事实上压根就没有反应)。我意识到没有找对市场,但仍觉得产品中的一些技术很有价值,将它改装成其它软件也许能开创“东方不亮西方亮”的新局面。
于是我向只有一面之缘尚在北大方正工作的周鸿袆求助。他是真正的软件高手,当我小心翼翼地展示约10万行C++代码的软件时,他竟在十几分钟内就指出多处重大的设计错误,使我目瞪口呆地意识到整个软件系统的价值为零。那种心痛啊,就象眼睁睁看着孩子被狼吃掉一样。
到1998年10月,我用光了30万元资金。周鸿袆再一次从北京飞到杭州,三下五除二替我把只活了一年的公司关闭掉。他放心不下,觉得我“恶病需用猛药治”,于是意犹未尽地把我捉到北大方正插在他管辖的部门,让我学习怎样做事情。
北京寒冷的冬天可以营造一种凄凉的气氛,冲去一切可以自我原谅的借口。我并不是太爱虚荣的人,知道这次失败是我的毛病积累到一定水准忍不住喷发出来的结果。我绝不能以年纪尚轻不太懂市场与管理为理由轻率地敷衍过去。
从北大方正“劳改”了两个月回来,我心服口服地承认失败了。我把察觉到的数十个毛病列出来,日后一个一个克服掉。现在我能比较清醒地分析我和投资方所犯的主要错误,以祭我那幼年夭折的软件公司。
我的主要错误:
(1)年青气盛,在不具备条件的情况下,想一下子做成石破天惊的事。我的设计方案技术难度很大(有一些是热门的研究课题),只有30万元资金的小公司根本没有财力与技术力量去做这种事。
(2)我以技术为中心而没有以市场为中心去做产品,以为自己喜欢的软件别人也一定喜欢。我涉足的是在国内尚不成气候的市场,我无法估计这市场有多大,人们到底要什么。伙伴们跟着我瞎忙乎一整年,结果做出一个洋洋洒洒没人要的软件。
(3)我做到了“真实、正直”,但并没有达到优秀的程度。我曾得到很多炫目的荣誉,但学生时代的荣誉只是一种鼓励,并不是对我才能和事业的确认。正因为我不够优秀,学识浅薄,加上没有更高水平的人指点我,才会把事情搞砸了。
投资方的主要错误:
(1)投资方是个精明的商人,他把我的设计方案交给美国的一个软件公司分析,结论是否定的。但他觉得我这个人很有利用价值,希望可以做成功其它事情,即使Soft3D软件做不成功,只要挣到钱就行。这种心态使得正确的可行性分析变得毫无价值。
(2)由于我不懂商业,又象所有单纯的学生那样容易相信别人。他让我写下了不公正的合同,我竟然向他借钱买下本来就属于我的30%技术股份。他名为投资方,实质上双方各出了一半的资金(他出51%,我出49%)。他在明知Soft3D软件不能成功的情况下,却为了占我的便宜而丧失了应有的精明,最终导致双方都损失。
关闭公司时,他搬走了所有东西。我明明投入了技术,又亏了15万元,却一无所得。几个月后当我意识到不公平而找他协商时,他说:“只能怨你自己愚蠢,读到博士,连张合同都看不懂。”此事充分地显示了我的无知与愚蠢。自己的奋斗没有必要后悔太多,学到的远比失去的多,我相信下一次会做得更好。
公司关闭后,我就面壁反省,补习基础,准备为几年之后“东山再起”养精蓄锐。
1999年1月,有一个民营企业家G先生向我请教一个问题:“我给一个年轻人投资了100万元,建立一家从事环保信息应用开发的软件公司。他曾许诺一年内创利润上千万元,可是才过去5个月,他就把100万元用完了,什么也没挣到。我实在不明白是怎么回事,请你帮我分析分析。”
这位G先生年龄有我的2.5倍,曾在西北当过几十年的技术兵,性格豪爽。他投资的那个年轻人叫Y(以下称Y经理),自称有英国的管理学文凭,能对公司的市场、技术、管理一把抓。G先生喜欢说“钱我没问题”,于是想也不想就投了100万元,并且给Y经理40%的股份。
G先生请Y经理到家里座谈。我那时突然狡猾起来,自称是G先生的远房亲戚,在浙大读半导体物理,特羡慕那些做软件的同龄人,渴望听听Y经理的高见。Y经理果然信口开河,滔滔不绝,连绵不断,如黄河泛滥,一发而不可收拾。我激动地想去参观他的公司和产品,并表示要抛弃物理专业,立马转向软件专业。
Y经理得意而笑:“对于IT行业你就不懂了,我们经营的是一种理念而不是产品,这是国外最先进的思想。你可以来参观我的公司,但你看不到具体的东西,只能用心去领会。”
这屁话比曹元朗的诗还臭(《围城》)。我搞软件只有8年功夫,说我不懂IT行业并不过分。可我读了10年大学都没听到过如此“先进”的思想。如果这是英国管理学教育的成果,我认为自己已经发现了这个曾经是“日不落帝国”的衰败的真正原因,有必要找英国首相切磋一番。
我对G先生说:“Y经理根本不懂技术,为人极其浮夸。应马上关闭公司,以绝后患。那100万元你也亏得起,就买个教训吧。”
G先生说:“钱我没问题,那100万元就算我在澳门赌博输掉了。”
1999年5月,G先生又来找我请教另一个问题。
他说:“小林啊,你上次说得很有道理,我接受了教训。”
我说:“那是好事,不论年龄大小,知错就改总是好孩子嘛。”
他叹了一口气:“最近几个月,Y经理又花了我100万元。”
我当时差点给噎死,气凶凶地训G先生:“我早跟你讲过,Y经理不是好东西,叫你关闭公司你不听,你老说钱没问题,亏你200万元活该。”
老先生象犯了错误的小孩子:“Y经理每一次向我要钱时,都拍拍胸脯保证下个月就有利润,所以我一而再、再而三地掏钱给他,希望能救活软件公司。现在该怎么办?”
一个有20名职员的软件公司,程序员只有三四个,连“十羊九牧”都不如。200万元的财务报表中,有100多万元用于吃喝玩乐和行贿。这种公司完全无药可救。台湾作家李敖曾说过:“当你没法扶一个人上马时,也许应该拉他下马”。从5月份到8月份,我行侠仗义,替G先生清理软件公司,根除Y经理这些败类。
可是难哪,因为G先生投资的公司根本不把G先生放在眼里,又岂能让我插手。就在我想方设法卡住Y经理的脖子时,Y经理总能从G先生那里挖出钱。G先生就象被吸血鬼附身,却仍存幻想:“如果吸血鬼能治好我的病,就让它再吸些血吧。”
Y经理又和一个来自深圳的骗子H想了注意,教唆G先生再投资100万元新建一个“指纹”公司,说利润将比开发环保信息更加可观(估计要用亿来度量)。就在他们准备签合同之际,我偶尔路过,发现异常,便强行阻止。
G先生是个好人,但太顽固。好几次我气极想撒手不管,但又不忍心好人被坏人欺负。我曾请求G先生:“我求您别再说钱没有问题,您的私人财产会被人骗光。请让我把这漏洞堵住吧,好让我安心地回学校做完博士学位论文。”
到8月份,我和G先生的两个儿子,伙同“黑社会”的朋友,强行把那个软件公司搬回G先生的工厂中,辞退所有员工。现在那个软件公司被别人接管,仍然半死不活,好在每月亏损不过几万元,G先生承受得起,我就不再去碰G先生的伤疤。
我以前从未玩过与人勾心斗角的游戏,此三个月的经历让我疲惫不堪。那个软件公司的员工曾透露,Y经理的英国文凭大约是在上海或杭州某个大专培训班里混来的。方鸿渐买美国克莱顿大学博士文凭尚知羞耻(《围城》),而Y经理却趾高气扬。害得我平白无故为英国教育界担心,回想起英国鬼子曾打劫过中国,倍感耻辱。
G先生是正人君子,不防小人,实在不是现代的商人。我和他成了忘年交。G先生第一次见到我时问我工资几何,我答曰:“300元,够买几本书。”G先生甚为着急:“这样的条件怎么能生活?你就搬到我家来住吧,我家条件好,你可以安心地学习,将来可为国家多作贡献。”后来他几次相邀,我就看在国家的份上住入他家,一直住到博士毕业。自从读中学以来,我第一次享受食来张口,不用洗衣服的奢侈。唯一的麻烦是我得向很多朋友解释:“我不是被别人养起来了,是为了国家的利益,不得已才这么做的。G先生是男的不是女的,并且没有待出嫁的女儿。”
我在读博士学位的三年半里,经历有点奇特。我遗憾的是“真才实学”没有长进多少,并且没有了在西电那样的纯真友情。略为欣慰的是我做了几件有意义的事情。
我很想讲一讲自己参加希望工程的经历与感受。
1998年暑假,浙江省云和县梅源中学的老师们带着希望班几名优秀学生来到浙江大学,其中有受我资助的何晓丽同学。我才知道初中学生一个学期的学杂费就要600元。何晓丽哭诉下学期不能再上学,其它的学生处境相似。我以前资助的2000元是5个人3年平均分派的,根本不起作用。
那时侯,公司倒闭使我债务累累,并且自信心遭受十年来最大的打击。我在入不敷出、心事重重的情况下,没有推卸义务,而是“变本加厉”的去尽这个义务。我在西电的好朋友史江一替我“接管”了一个中学生。有一个小姐追求我,我乘机给她一个活生生的“见面礼”。1999年7月份,我把饭卡送给了一个大学生,自己成了无产阶级。从1997年11月起到我博士毕业期间,我直接或间接地为7个贫困学生捐助了约1万元。我有了几点感受:
(1)对人的帮助莫过于给予希望。
(2)人在任何时候都能够帮助比自己更困难的人,哪怕自己处于困境。
(3)帮助是要负责任的,一定要设法做成有意义的结果。不负责任的帮助就是“施舍”。“施舍”缺乏诚意,不配称为“帮助”。
不少人曾对我说:“你是做大事的人,不要在小事上浪费精力,更不要为了别人而害了自己。”
很多人总以为自己将来是伟大人物而不愿做小事,从而到死也没做成什么有价值的事。也有很多人希望自己成功后再去帮助别人,无论他最终成功还是失败,一辈子也没有帮助过人。还有很多人略有权势或略有名气后,便觉得自己吃喝玩乐、放屁、上厕所都是重要的事,在他们最能够帮助人的时候却以“太忙”“没空”为理由不去做好事。
我也在忙碌、在奋斗,也渴望成为伟大人物,但我希望让有意义的小事充实一生。
我还要讲另一件我常干的小事。
很多受过高等教育的人保留了随地扔垃圾的“风俗习惯”,这恶习就象脚气那样虽然不致人于死地,但能遗臭万年。即便象浙江大学这等典雅的地方,你都经常可以看见草坪、校门口的废纸、果皮和塑料袋等,垃圾就如同天使脸上的一砣狗屎那样鲜艳,人们竟然无动于衷。我记不请自己多少次当众、当道捡垃圾,可是几年来我都没有在大学里发现第二个做这种事的人。
我很想对所有的教授、博士、硕士、学士们讲句话:“救人并不只是医生干的事,保护环境也不只是清洁工干的事。只要你多花几秒钟,弯几次腰,就能让环境更加清洁,让心灵更加清洁。我们不必个个道貌岸然,但至少应该做到‘读书明理’。”
那些正在追我和将要追我的小姐们,你多捡一次垃圾就多一份希望,你丢一次垃圾就不再有希望。
我这样喋喋不休地讲“希望工程”和“捡垃圾”,并不是在沽名钓誉,也不是在布道,只是希望我这些“金玉良言”能触动更多的自以为自己是高素质的人们。
在浙大的三年半里,我没有对感情“播种”,所以也没有收获,但有一次“艳遇”。
在关闭公司的那天晚上,人去楼空,我象严监生断气前那样盯着尚未熄灭的灯。这时某大学的一位四年级女生来找我。一年前她曾作为实习记者采访过我,谈得很投机。我知道她是聪明好学的学生,曾大言不惭地教导过她几次。我开公司的一年里几乎没与她来往过,想不到当我成了光杆司令时她还能“兔死狐悲”地来看望我,着实让我感动。
我不无自嘲地对她说:“你不用安慰我了,这次失败我还能挺得住。”
她说:“我不是来安慰你的。我一直盼望你的公司倒闭,等了整整一年。在你去北京之前,我有话跟你说。”
我心下一凉,搞不清什么地方得罪她了,让她如此记恨我。大概是我得意之日教导她时言语过重,伤了她的自尊心。好在我是知错就改的人,当下惭愧地向她道歉。
她不理会我,说:“你开公司时光环重重,我根本无法靠近你。即便那时我成了你的好朋友,你也不会把我放在眼里。我暗恋你一年了,一直都没跟你讲。我早知道你会失败的,失败时你就剩下一个人,你才会知道我是真心爱你的,而不是冲着其它来的。你是个优秀的理科学生,我是个优秀的文科学生,门当户对,珠帘壁合。请你不要觉得女的追男的很荒唐,我是认真的,请你给我一次机会。”
我虽然评不上情场高手,好歹也在爱河里游过泳,呛过水。想不到仓促之下,被一女子说得脸红耳赤,无法掩盖窘相。
我一直认为男人应该勤劳一辈子,好让柔弱的女子舒舒服服地在大树下乘凉。而学习、工作出色的女子只能做朋友,不能做夫人。
她从小习诗弄文,读大学时蜚声校园。我见到她第一面时就把她归类为事业上的朋友,所以才会正儿八经地与她交谈并教导她。我在西电的两个女朋友就属于读书不太好但比较有魅力的女生,我从来也没有指导过她们学习。如果我喜欢一个女孩子并希望她成为我的女朋友,我早就去追求她了,岂能轮到她追我。
她见我彷徨不安,便滔滔不绝地例举爱我的“证据”。我开公司一年来发生的事她了如指掌,就象在我的房间里放了窃听器,在我的朋友中安插了间谍。她甚至趁着实习机会跑到团中央去查阅我的老底,有些“光辉记录”我过去的伙伴都未必知道。她思念我时,写了很多诗,留了很多泪……
我早知道有些人不编程序、不做实验就能写出论文,难道男女之间不接触也能滋生感情?
第一回合我就被她挑翻在地,我莫名其妙地成了“负心郎”,无地自容地把她送走。我以为这是文科女生的风格,就当作一个趣事不放在心上。
我从北大方正“劳改”回来不久后,她提着一篮鲜花来找我,并对我说了她的梦想:在寒冷的冬天,大地铺满积雪,四野人鸟绝迹。我孤独求败地深居在冷冰冰的小木屋里。在一个狂风呼啸的黄昏,她一手拎着亲手做的饭菜(我想应该有土豆和辣椒),一手拎着一捆木柴,敲开了那扇紧闭的门和心房。终于木屋四壁生辉……
我曾对第一个朋友最好的赞美是:“黄蓉很象你。”
我曾对第二个朋友最深情的话是:“将来咱们老了,我回黄岩当物理老师,你当语文老师。”
相比之下,我的确不及她浪漫。此后她再找过我几次,当我意识到她动真格的时候,她已不能自拔。爱情是很怪的东西,并不是两个好人在一起就能碰出火花。与其让她长痛,还不如让她狠痛一次。
我对她说:“我们真的不能在一起。”
她问为什么?
我说:“不为什么,我没有心跳的感觉。”
她说十年之后再找我。
我知道她会奋发图强,因为她会一直想着“为什么”,期望让自己有个满意的答案。 这条路8年前我已经走过了。后来她读硕士时我曾再见过她,她在文学上已经有了长足的进步。
她说将会送给我她的第一本著作,书中开头的几个故事是关于我和她。
我说看了她的书后一定会写一篇读后感给她。
她仍然提醒我不要忘记十年后的相约。
我在浙大有一个值得怀念的人,她是管宿舍楼的大妈。在1999年1月至5月,我在博士生宿舍静心修炼内功,大妈就象我的“护法”。晚上九点钟时,她就会烧些东西给我吃。我和大妈非亲非故,同学们都不明白大妈为什么待我好。我想那是因为我没把自己当成“博士”来看,而是当成“人”来看。
5月份后,我看在国家的份上搬到一个千万富翁家里去住,大妈也调到“熊猫馆”当掌门人。我一般隔几个月去看望大妈一次,中秋节我就和她在一起。朋友们知道我和大妈有这层关系,就纷纷托大妈物色女朋友。
大妈果然称职,她就象特务那样审视大楼里的女生。可大妈毕竟是大妈,她采用的“标准”是几十年前的版本,无法与现今的兼容。她盯住了不该盯的,却漏掉了不该漏的,至今都未“推销”成功一个。
这件事让我又明白了关于软件的一个道理:光有完善的数据库还不够,还应该提供很好的搜索引擎。
我相信生活、科学、艺术中的很多道理是相通的,于是就不嫌人笑,写下了十年来的故事,交最后一次作业。
大学十年给我留下了很多美好的回忆,现在可以打上漂亮的句号了。尽管我即将告别大学,但我会终生学习。也许我成不了天才,但还有机会成为天才的爸爸。
我想大声呼喊出那种可以用双手把握未来的自豪。
我要对年轻的朋友们说两句肺腑之言:
一、主动去创造环境,否则你无法设计人生。
二、生活和工作要充满激情,否则你无法体会到淋漓尽致的欢乐与痛苦。
如果我碰到上帝,只会对他说一句话:“你看厕所去吧。”
2000年7月份,我从浙江大学博士毕业后到上海贝尔有限公司工作。从2000年8月至2001年底,大约一年半时间,我在网络应用事业部从事软件工程与CMM的研究与推广工作。从2002年初至今,我调到公司总部从事企业研发管理的研究。
我在上海贝尔没有发财,没有当官,那么工作近两年来我都在做些什么呢?
我在心平气和、踏踏实实地做学问。
我读本科的专业是半导体物理,硕士专业是集成电路,博士专业是计算机图形学。十年之内我换了三个专业,哪一个专业都没有学精通。我觉得自己在软件工程方面有些悟性,可是没有当成专业来系统地学习。所以博士毕业时,除了有点虚名外,我的确没有什么过人的才能。
如今大学里的博士、教授中“水货很多”,我不幸是其中之一。象我这样的好苗子沦落为“水货”,是中国大学学术腐败、堕落的恶果。
在公司里,很多员工恭谨地叫我“林博士”,甚至还有年轻人特意来看看我这个“好榜样”。虽然我也爱慕虚荣,可是良心未泯,彼时我那有博士的真才实学,多么羞耻啊。
刚到公司时,我有两类工作可选择:一是开发产品,二是研究并解决企业存在的软件工程问题。
我在开发产品方面比绝大部分应届毕业生和员工们有经验,当项目经理可谓熟能生巧。软件工程则是我的研究兴趣。前者可能会有更高的经济收入,后者能提高自己的学问。
当时我的想法很简单:趁着自己还年轻,赶紧好好做学问,弥补读博士期间浪费的三年青春,让自己有真才实学。
在企业里做学问与高校里很不一样。如今学校里的学者们越来越浮躁,聪明才智大多建立在“纸上谈兵”之上,做学问变成了造文章。
而企业特别讲究“务实”,所有的工作围绕一个目标:努力让企业活下去并且活得更好。
我在公司里没有象在学校里那么“兴风作浪”,日子过得很简单,不停地调研、写规范和培训。就象少林寺藏经阁里的修练者。上海贝尔提供了一流的软件工程研究与实践环境(不是现成的,是争取来的,这就是我信奉的“创造环境”)。在这种环境下,只要人不笨,认真工作,谁都能成为软件工程专家。
在博士毕业前,我写了一本薄薄的书叫《软件工程思想》。这本书与《大学十年》一样在网上流传,我曾经自鸣得意。最近我要出版一些研究成果,便重新阅读了那本《软件工程思想》。发现此书真的是彻底地“纸上谈兵”,不仅对企业毫无用处,并且会误导读者。
我真是悲喜交加,悲的是和我同类的一大批“假博士”长期干些“自欺欺人”的研究工作,浪费生命并且浪费国家财产。喜的是我终于跳出了虚假学术的火炕。我不敢说现在自己的水平有多高,但至少能够拿出一些对企业有价值的东西来。
我在公司是一名自由自在的软件工程专家,公司待我不薄。如果不给自己一些事业上的压力,人很容易在安逸中堕落。我的目标是创作出可以与Rational公司RUP相媲美的软件过程规范,并且开发出物美价廉的适合于中国IT企业的项目管理软件。
基于大量实践的基础上,我和合作者研制了一套“软件过程改进解决方案”(Software Process Improvement Solution, SPIS)。SPIS的主要组成部分有:
² 基于CMMI 3级的软件过程改进方法与规范,称之为精简并行过程(Simplified Parallel Process, SPP)。
² 一系列培训教材,包括软件工程、项目管理、高质量编程等。
² 基于Web的项目管理工具,包括项目计划、项目监控、质量管理、配置管理、需求管理等功能,命名为Future。
以我们研究小组的实力本来是可以顺利完成SPIS的。但遗憾的是,SPIS不是公司产品发展战略范畴之内的东西,不能作为正式项目开发,我的组员们都被分配了其它的任务。我只能在公司之外组织一些朋友共同开发SPIS。虽然困难很大,但是工作很有意义,很鼓舞人。
我依然相信“创造性的事业要靠激情来推动”。最近我又重新修订了以前写的《高质量C++/C编程指南》一书,增加了不少精彩章节,更名为《高质量程序设计指南——C++/C语言》,2002年5月底会在电子工业出版社出版。希望在今后的一年内,我能结识不少志同道合的朋友,共同把事业做好。

大数据是什么

大数据是什么?
这个视频介绍什么是大数据,为何应该关注大数据以及企业应该如何利用大数据来挖掘信息并实现巨大的竞争优势。

java实现的map排序

java实现的map排序,直接上代码:

import java.util.Arrays;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
public class TestSort {
	// HashMap里面的元素是无序的,要进行排序的话只能是用TreeMap和SortedMap,例如:
	public static void main(String[] args) throws Exception {
		Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
		map.put(100, 131);
		map.put(0, 0);
		map.put(83, 49);
		map.put(137, 98);
		map.put(33, 651);
		map = mapSortByKey(map);
		System.out.println(map.toString());
	}
	private static SortedMap<Integer, Integer> mapSortByKey(
			Map<Integer, Integer> unsort_map) {
		TreeMap<Integer, Integer> result = new TreeMap<Integer, Integer>();
		Object[] unsort_key = unsort_map.keySet().toArray();
		Arrays.sort(unsort_key);
		for (int i = 0; i < unsort_key.length; i++) {
			System.out.println(unsort_map.get(unsort_key[i]));
			result.put(Integer.parseInt(unsort_key[i].toString()),
					unsort_map.get(unsort_key[i]));
		}
		return result.tailMap(result.firstKey());
	}
}

打印结果:

651
49
131
98
{0=0, 33=651, 83=49, 100=131, 137=98}