随笔-8  评论-0  文章-0  trackbacks-0
  2006年6月21日

                                   作者:李锦洋

     
我没有参加过任何一个招聘会,也没有看过招聘会,专科毕业后,我就进了英特尔(intel)公司。我不是什么天才,也不会自暴自弃,只是努力地做好我自己。高考的时候我与梦想擦肩而过,于是在大学里,我让自己努力学好专业。我爱在宿舍那个狭小的空间里看很多书,习惯抓紧时间做一些自己喜欢的事情,相信自己决不会比别人差。如今,我是英特尔偌大家庭中的一分子,与无数高手牛人一起工作,住在上海四星级酒店的套房里。
     
对于一个专科生来说,我也许是幸运的,但我从来不认为自己的价值可以仅凭一张文凭来决定。推开房间的窗户,看着上海繁华的外滩和没入云端的金贸大厦,我知道,我还有很多梦,很多理想,我要一一实现它们。
上了专科我不失落

     
高中的时候我很用功,成绩也不错。无奈高考没有发挥
 
好,这也成为我人生的一个转折点。把我从小带大的奶奶在我高考前几个月去世了,我一直处于一种恍惚和烦燥的状态,无法静下心来学习。高考语文是我心中永远的痛。从小到大,我的作文一向都是超格的,但高考时我却无论如何也下不了笔,到最后作文还是没有写完,走出考场,除了失落,我有一种很释然的感觉。结果,我差当年的本科线4分。填志愿的时候,我根本没有上专科院校的念头,随手填了几个大专院校,连涂了什么专业都已经忘了。就这样,我去了西安航校,念了一个我非常陌生的专业:环境工程。
     
进了航校以后,我并没有因为失落而放弃我喜欢的东西,在这一点上我一直是很坚持的。原来我想进大学念生物,所以我在大学里就一直自学生物。我经常跑到西北大学去蹭名师的课,时间长了,生物进化史教授居然开始让我收作业。后来,我还去陕西省教育厅咨询有没有生物的自学考试,才知道到现在全国都没有生物的自学教材,更没有什么生物的自学考试。现在想来,觉得颇有意思。
     
大学里我的生活很有规律,因为我不喜欢浪费时间。每天早上六点起床,坚持长跑,看很多书。我喜欢去阅览室,觉得那里安静。每天晚上七点,我就在阅览室帮老师分拣报纸杂志。和老师的关系“混”好了,我就可以第一时间看到很多新书、好书。生物、数学、还有我的专业“环境工程”。此外,四书五经,百科全书,甚至资本论我也看。我不看小说,而更喜欢人文地理和人物历史传记。一到周末,我就去“暴走”。西安是个有着浓厚历史底蕴的城市,而我总是喜欢自己一个人到处探索历史的遗迹和人文的景观。我算是个纯粹的“暴走族”,没有任何利益驱使,纯粹是个人喜好。周末的“暴走”让我磨破了好几双鞋,翻坏了好几份地图,西安方圆50华里我都走过了,这些走路的积累,使我有幸参与了西安市地图的再版工作。
     
在学校,我是一个独来独往的人,跟周围的同学不太合得来。怎么说呢?身边的很多人和本科院校的相比,的确是有差距的,言谈举止,思想的广度和深度……当然,我并不是想标榜自己多么的与众不同,但我在大学里确实没有几个能交流的朋友,所以我的大学过得既充实又寂寞。
     
在专科的三年中,我所做的都是我喜欢并且热衷的事。我努力学好自己的专业,并善于利用好时间,享受我的兴趣。看起来我很随性,可是也许正因如此,英特尔录用了我这么一个专业完全不对口的人。
  
原是看热闹,没想被看中了

     
我所在的动力系又分为三个专业,我是环境工程,此外还有制冷和暖通。我现在的工作是负责奔腾芯片处理器测试CPU test,可以说和我的专业风马牛不相及。要说起我和英特尔的碰撞,那纯粹是巧合。
     
那天我在宿舍看书,忽然有一个同学叫我去看热闹。别的公司到学校招人我是不会去看热闹的,因我满脑子只想着继续念书,要专升本。后来觉得英特尔这个公司还不错,就去看了看。英特尔招人没有专业限制,只要报名就可以参加笔试,我也跟着报了。笔试考了很多专业电器知识、机械知识,这些我不太懂,但由于平常书看得比较杂,所以也不是完全不懂,另外就是一些智力题,我对这些题的感觉倒是很好。
     
参加笔试的有200多人,选择68个人进入面试,我很顺利地进入了面试。
     
面试我的是原来上海区的二老板,现在是成都区的大老板,我跟他仿佛一见如故。他问了我一些电路图的知识,让我用英文解释。我曾参加过物理竞赛,所以物理学得不错,但是用英文就困难了点儿。我跟他说了很多,画图加手势,张牙舞爪,把能用招的都用上,就差唱歌了。我对自己的表现有点失落,可是老板看起来对我很满意,还夸我“有思路”。于是我乘胜追击,向他show了很多我在学校的好成绩和课后自己做的事情。他对我的“DIY”风络很感兴趣,认为我的大学过得非常有意义。还记得面试那天是圣诞节,我戴了一条围巾,那条围巾是在西安城市中心的世纪金花广场举办的一次IBM&INTEL活动中,我现场即兴创意了个modal而胜出得的奖品。我把围巾给考官看,兴奋地向他描述当时的各种细节,告诉他我有多么棒!果然,他被我打动了。面试结束后,就有人告诉我基本确定被录用了,直到现在,我跟这个老板的关系一直都很不错。
     
正式的offer是两个月后我在家过年时收到的。录取了20个人,在后来的培训中又刷了不少,最后只剩七八个人正式进入英特尔,而我是里面唯一一个专科毕业又专业不对口的人。
     
工作敲定后,我就没有再想升本的事了。我们当时是学满三年后才能考本科,以我的决心和平时的成绩,要升本那是铁板定钉的事。但我觉得英特尔是个机遇,这个牌子很硬的公司,值得我去挑战一下。
  
我住进了四星级酒店

     
英特尔将在成都设厂,我们会是那里的“开国元勋”。刚把户口落在美丽富饶的天府之国,还没有享受到新生活带来的乐趣,我就和同事们被派到了上海接受培训。我们住在四星级饭店里,一人一个套房,每天房费400块,一个月12000元,比工资高得多。公司用优越的条件留住我们,让我们不至于在繁琐、劳累的工作环境中退缩,为的是让我们这批受过正式培训的川籍员工回成都去建设新厂。也正是在这样的氛围中,我才真正领略到什么是人才的价值。
     
在上海的manufactory里,我们面对的是24小时的工作,轮流不停地倒班。四白,三白,四黑,三黑。也就是说我们做三天休息四天,然后做四天休息三天。这样看上去比五天制多点休息时间,可实际上是非常辛苦的。我来之前没有心理准备,根本不知道还要上晚班,我也没告诉家里人,怕他们担心我的身体。就在这样的工作中,我学到了外企工作的秘诀:“best is best!尽力而为,天道酬勤。”可是在这里,永远都有做不完的工作。
     
在外企工作,虽然薪水、福利等不错,但是工作的压力很大,特别是对于我这样的专科生。在一起工作的同事们好多都比我们这些新来的大一轮,他们都有丰富的工作经验,而我们的主管一般都是高学历的。升supervisormangergroup leader都是需要工作经验和学历的。所以我想在英特尔升职,那是一件相当困难的事情。我不得不承认,专科文凭是我事业发展的瓶颈。
  
还在给自己充电

     
休息的时候,我会去逛逛南京路。繁华的大街,拥挤的人群,置身其中,很害怕会迷失自己。我也会跟同事去迪厅、酒吧放松,但开放的服务和人群吓得我赶紧闪人,从此不愿再去。而我最经常做的,就是在酒店里望着窗外,想着我那些还未实现的梦。那是我的未来,我永远不会放弃。以我现在的状态,继续深造是必须的,我也开始在为下一步打算了。我住的酒店旁边是浦东第一图书馆,我办了借书证,常常去看书,常常和大学时一样一看就是一整天。我喜欢在酒店房间挂着“请勿打扰”的牌子,依然独自做一些自己感兴趣的事。我知道,不管什么时候,都要不断地给自己充电,梦想才会越来越近。
     2008
年奥运,我一定会出现在马拉松赛的赛道上,那是我最近的一个梦。 

posted @ 2006-06-21 16:15 我的博客 阅读(358) | 评论 (0)编辑 收藏
           我喜欢男孩,我一直认为男孩比较皮实比较好养。我喜欢淘气顽皮的小男孩。
 
  后来,我真的有了儿子。
 
  我给儿子起了一个名字叫——臭臭。
 
  有孩子的日子是快乐的,每个孩子给父母带来的快乐都是无价的,都是永恒和真实的。现在回想起和臭臭在一起的那段时光,我仍然能感到那一份从心底涌出的温柔。那是一种能让钢铁融化的温柔。
 
  还记得,刚出生时,臭臭是那样的娇小和丑陋。红红的皮肤皱皱的。像一个小老太太。我甚至不敢碰他不敢抱他。他不停地哭。饿也哭,渴也哭,拉也哭,尿也哭。很长时间我才醒悟,他所有的表达方式也只有这些了。于是开始学习怎样当一个合格的母亲,初为人母的我好像突然之间长大了,好像一下子有了责任了。因为这个小小的生命只有*我才能存活,他只有在我的怀里才会感到安全,才会安静地睡,才会停止哭泣。
 
  我快乐的看着我的孩子,并真心地感谢上天赐予我这个如此美丽的小精灵。
 
随着孩子一天天地长大,我发觉,原来我可以这样地温柔和宁静,可以这样地慈爱和善良,可以这样地勇敢和真诚。我的心中充满了爱,让我对每一个人都微笑。是的,我不停地发现着新的自己。
 
  到现在我仍然固执地认为,一个女人如果不结婚会很不完整,如果不做母亲就永远不会成为一个真正的女人。孩子会让你的心异常柔软。他那天使般的笑声可以洗涤尘世的一切污秽和烦恼,他那纯洁的眼睛会使你心灵如西藏的天空般地空灵和宁静。当你抱着他的时候,当他小小的身体信赖地依偎着你的时候,你会发现,在这个世界上你是如此地被人需要和不可缺少。当他用纯真的声音喊你***时候,你会发现你真的是世界上最最幸福的人!
 
  慢慢地,他开始学走路。开始他在学步车里学习。他学得很快。常常看到他的身影在家里冲来撞去。他很好奇,他看见镜子里的自己会微笑,然后亲一下,看见加湿器冒出的白烟也会伸手去抓。在我给他做饭的时候,他会把车停在厨房门口,好奇地张望。他很依赖我,不论我在哪里,他都跟着。哪怕是我在洗澡和去卫生间,他都会重重地敲打着门,在确认我在里面的情况下,安静地等待我出去。
 
  我现在仍清楚地记得,那是1996年的春天,五月的微风温柔地吹拂着我绿色的短风衣。明媚的阳光温暖地照耀着我,一切都暖洋洋的,我吸着芬芳的空气,迈着轻快的步伐去接我的孩子。很突然,就同被雷击中了一般,我心中涌出来的幸福压得我要窒息,那是一种暖暖的暗流,轻轻地流遍我的全身,直达到我的指间。甚至,我身上的每一寸肌肤每一个毛孔都感觉到了那种幸福。那一刻我问我自己:还有什么不满足的呢?我有一个爱我的丈夫和可爱的儿子。我是多么地幸福。那是一种真真切切的、扎扎实实的幸福。那一年我25岁,我儿子刚刚到一岁。
 
  快乐的我啊,丝毫没有察觉到灾难就藏在我幸福的背后。它总是在你不经意的时刻来临。
 
  在他一岁三个月的一天夜里,他突然哭闹起来,我和爱人一直哄着他,但他仍不停地哭,直到他哭累了,才睡去。第二天,他睁开眼睛的时候,左眼红红的。我抱他去医院检查,医生只是告诉我,点点消炎药水就好了。于是,我给孩子按时点药。但红还是没有消。快一个星期了,我又带孩子去查。这次大夫好像很紧张的样子。仔细地查了又查。最后告诉我,孩子的左眼失明。而且,怕还有别的毛病。我惊呆了!一会儿医生把我的爱人叫了进去,当爱人出来后,脸色苍白地告诉我:“臭臭可能是眼癌!”我一下就呆住了:“眼癌?不可能!一定是错了!”我抱着我的孩子走出医院。我不相信。我的孩子健康活泼,就算他的眼睛有问题了,也不可能是什么癌!我不相信!我要去北京复查!
 
  第二天,我和爱人带孩子去了北京。
 
  结果终于出来了。
 
  臭臭真的是视网膜母细胞瘤。真的是眼癌!
 
  我一下子跌坐到了地上。很久才发现我已失声痛哭。我的心中狂喊:“不可能!决不可能!”我感到血被抽干了,心被揉碎了。爱人让爷爷把孩子先带走,然后拉着我走出医院,我们拉着手,漫无目的地穿梭在北京喧闹的人流中,泪水在我脸上疯狂地流着,我无法抑制自己的悲伤。我知道茫茫人海没有人能帮助我的孩子,我也不能。医生告诉过:得这个病的孩子在走的时候两只眼睛会都瞎的,而且随着肿瘤的长大和游走,脸部要变形,会惨不忍睹的。想着孩子欢笑的脸,我不能相信这一切真的。他才一岁三个月啊,他的生命才刚刚开始,难道就要结束吗?这一切是真的吗?医生告诉我,臭臭现在可以化疗,也许还有50%的希望,但是他必须进行眼球摘除手术,包括眼眶,化疗的结果是这半边脸永远是他一岁时的脸,而那半边脸却正常生长。而且,即使手术成功化疗成功也只能活到七八岁左右。我真的很想给他化疗,当时我疯狂地抓着医生的手一个劲地喊:“给他做手术!做手术!”但我也清楚地知道,这对才一岁多的孩子来讲太痛苦了,更残忍的是如果他活到了七岁,如果他懂事以后,他的痛苦也是不可想像的,因为他难逃一死啊!
 
  那天晚上我和爱人作出了我们一生最难做的决定。我清楚地记得在作出这个决定时我那坚强的爱人那张没有血色的脸和悲伤的眼睛。我对我爱人狂喊:“不可以!医生说若不做手术,孩子会双目失明的,最后双眼会长出菜花一样的东西,头也要变形的,我该怎么办!当臭臭伸着双手呼唤我‘妈妈,妈妈,你在哪里?’时,我该怎么办啊?我会疯的!做手术吧!不管结果怎样,我们都不会后悔的,就算是倾家荡产,剜骨剔肉也要给他治啊! 毕竟还有一丝的希望啊!我不能眼睁睁地看着我的孩子死去!”面对着我的歇斯底里,我爱人,我心爱的人只是使劲地抱着疯狂的我,向我吼道:“春儿,你清醒一点!你难道让臭臭长到可以质问你‘妈妈。我为什么不能活下来啊!’的时候吗?你难道让他就用一只眼睛来面对这个冷酷的事实吗?你难道让他饱受身体的摧残还要面对那些好奇的目光吗?”然后他使劲地擦了一把眼泪。
 
  孩子,原谅父母吧!我们是残忍的,但也是无奈的!我们必须这样决定。我们宁愿让你快快乐乐地活上一年,在你什么也不懂的时候走,也不要你受尽折磨才走。虽然我知道这个决定会让我把内疚背负一生。
 
  第二天晚上,我独自背着我的臭臭,躲开了亲人。我背着他走在午夜安静的城市里,一直走着,累了就休息,渴了就买瓶水。我不知道要带他去哪里,也不在乎去哪里。我只知道我要背着他走,我要和他在一起。路上,我抱着我的臭臭问他:“臭臭,妈妈爱你,你知道吗?”臭臭告诉我:“知道。” 我流着泪告诉他:“臭臭,妈妈爱你,不管妈妈怎么做,你要知道妈妈是爱你的。”臭臭回答我:“知道。”我问他:“臭臭,你来世还做我的儿子好吗?”我的臭臭,什么话都会答的臭臭却什么也没说。我的泪水滴到了他的脸上。于是,我又换了话题问他:“臭臭,你爱我吗?”他清楚地回答:“爱。” 
 
  日子一天天地过,我还抱着一丝的幻想和希望。也许是误诊,或许会钙化。也许这一切都是梦幻。于是,我恐惧地开始一天天地观察我的孩子。他的左眼已经失明了,但还看不出来,眼里只是红红的,后来就消了,但渐渐地本来是黑色的眼仁变成了灰色。在那一年里,我每天早晨第一件事就是看孩子的眼睛,我提心吊胆地看着他睁开眼睛。如果,他向我微笑,如果,他清脆地喊我妈妈,我的一天就会很轻松很愉快地度过。但更多的时候他总是皱着小小的眉头,闭着眼睛赖在我的怀里告诉我:“妈妈,我难受。”然后不停地翻转他小小的身体。每当这时,我的心就紧缩在一起,我能做的只是抱着他,紧紧地抱着他。希望这样能减少他的疼痛。希望能把他所有的疼痛都吸附到我的身上。我不停地告诉他:“臭臭,妈妈在这里呢。不怕,妈妈在呢,妈妈抱着你呢。”然后让他在我的泪水和歌声中昏睡。我心碎啊,碎成了一片片,又被碾成粉末。每当这时,我总是痛苦地问自己:我们的决定对不对啊?我要救我的孩子啊。哪怕把我的眼睛和生命给他啊。我问苍天:为什么!为什么要让我的孩子忍受这样的折磨呢?为什么不让他一下子死去!为什么让他一点点地忍受疼痛呢?我抱着我的儿子,抱着这个柔软的小生命,这个依*我,难受时只会喊***小生命。我很害怕,我怕自己总有一天会承受不了,我怕随着他一天天地长大,他向我诉说他的感觉,我真的怕啊。我教会他很多的故事和诗歌,但我从不教他“疼”、“痛”和有关的字词,所以,他临走的时候仍只会告诉我:“妈妈,我难受。”我知道,只有我知道这个难受的意思。那个难受里包含了多少不能忍受的折磨!我的臭臭毕竟才一岁多啊!
 
  还记得很久以前,有一则新闻:一个母亲在自己走投无路的情况下把孩子推到车轮下,而后自杀。新闻播出后是一片谴责那个母亲的声音。而我,可以深深体会到那个母亲的绝望和痛,因为她已准备了死亡,她不能忍受自己的孩子孤单地生活在这个世上。
 
  孩子的眼睛一天天地变化,变灰,变红,再变灰。我恐惧地看着它在不停地变化。我不止一次地想像要杀死臭臭,好结束病痛对他的折磨。我想像着给他打空气针,吃安眠药,放煤气,捂死他,或一家人干脆跳下楼。我每天骑着摩托车带着臭臭穿梭在车流不息的公路上,不止一次地想:要是有哪位好心的司机一下子把我们都撞死该多好啊。很多次我都不得不停下车来稳定一下自己想撞车的情绪。是的,我承认我是脆弱的。我无法忍受他的痛苦和我的绝望。
 
  我的孩子活了958天,两年7个月15天。
 
  我的臭臭活着的时候,他出奇地乖巧,出奇地聪明,他和同龄的孩子一样地可爱,不,甚至更机灵。他会用不同的语气来喊妈妈,来喊我的名字,他很会表达他的需要和感情,他会看眼色,会哄人。他很独特,很抢眼。不只是因为他留着童子头,也不只是他有一根长长的小辫子。而是他很活泼很有礼貌,他见到谁都称呼。他喜欢小汽车,我给他买了近百辆大小不同的小汽车,每天他都不停地摆弄他的车。是的,我溺爱他,倾我所有来满足他的愿望。看着他在不疼痛的时间认真地玩,对我是一种享受和幸福,我知道我看的日子不会很多了。
 
  在他病的日子里,我用了很多偏方给他治病。我带他找过气功大师,给他喝过他自己的尿液,给他吃蛤蟆的眼睛,去寺庙许愿等等。我知道我很愚昧,但是一切都没有用。臭臭仍然做了手术。因为他的眼睛里的东西已长大了,真的突出来了,他合不上眼睛。每次我帮他合眼睛的时候,看到他应该是眼球的地方已被一块灰色的东西代替的时候,我都在颤抖。我真的快崩溃了,我抓着爱人的手,狠狠地抓着,不能说话,但我爱人明白我眼里的疯狂。我知道,再这样下去,我会疯的。或者,我当时在别人的眼里已经疯了。
 
  臭臭被推进了手术室,他小小的身体躺在大大的床上,那么地单薄和可怜。我望着手术室的门。我的生命似乎被抽干了。我向上天默默祈祷:“让我的臭臭不要活着下来,让他死在手术台上吧。”我真的是疯了,世界上还有这样的祈祷词吗?但我当时就是那样想的。我知道,臭臭的眼睛将被挖掉。他那个眼睛的地方将是一个黑黑的窟窿。我害怕,我不知道我该怎样面对他的痛苦。他即使做了手术也是要死的,不如在麻醉中安静地没有痛苦地死去。我颤抖着。牙齿不停地打颤,身体不停地抖,止不住地抖。我的爱人拉着我的手,我们坐在手术室外的台阶上,远离人群。紧紧地握着对方的手,那是我们惟一能抓住的地方。
 
  手术车推了出来。我却躺到了另一张床上。我很虚弱,从心里的虚弱。我支撑着起来。我必须起来,我是母亲。我看到了他安静的身体,小小的身体。一动不动地躺在床上。我抱起他,他是那么地轻盈,我抱紧他,我怕他飞走。他的左眼蒙着一块大大的纱布。他的麻药还在起着作用。他很安静。那一刻我忽然有个幻觉:是不是他死的时候也是这样的?我狠狠地咬了一下嘴唇——不要想啊。
 
臭臭疯了,他疯狂地拉着他脸上的纱布。他疼啊。麻药劲儿过去了。他挣扎着大叫:“妈妈,难受啊!妈妈啊!难受啊!”爱人用力地抓着他的手,一边喊我:“春儿,快点,帮我抓住他!不要让他把纱布拽掉!”我勉强站了起来,正在这时,臭臭挣扎着向我伸出了手并喊出了我一生中最难忘的一句话:“春儿!妈妈啊——!”那个声音是那样地凄凉和无助,又是那样地震撼!
 
  我终于崩溃了。我长这么大第一次晕倒了。
 
  当我醒来时,臭臭已被打了安定针,昏睡过去了。
 
  在医院的日子是没有记忆的日子,我现在仍然想不起来。不知道为什么,我现在只记得臭臭左眼睛上那一块白的刺眼的纱布。
 
  我曾尝试过闭上我的左眼,想看看臭臭能看到的世界。当我看到后,我感到很悲哀。真的。
 
  他常常用他那仅存的右眼信赖地看着我,那是一只清澈如泉水般的眼睛。眼睛里流露出的信任让我悲伤。
 
  我是脆弱的。我从来就没敢看我孩子那做完手术的左眼。我怕,我真的很怕。每次带孩子去换药的时候,我总是不敢进去。我躲到了眼科走廊。但我还是能听到臭臭狂喊:“妈妈——妈妈——”的声音。我躲到了电梯里,随电梯上上下下,我用力捂住自己的耳朵,但臭臭的叫声仍能听到。那无奈的喊***声音飘荡在医院的每一个角落,挥之不去。是的,我逃不掉,永远也逃不掉。每次,我抱着换完药挣扎的没力气了的臭臭,抱起满面泪痕但仍在哽咽的臭臭,抱起向我扑过来让我保护的臭臭的时候,我的心不是用一个“痛”字就能描述的。
 
  我问苍天:这一切都是为什么啊?
 
  苍天无语。
 
  在他做完手术后,医生告诉我臭臭还能活半年。我真的以为他能活半年呢,但只有两个月,我的臭臭就走了。
 
  臭臭要走了,我不知道。我真的不知道那是他要离开我的征兆。他不吃不喝,安静地躺在我的怀里,轻飘得像一片羽毛,他小小的眉头紧紧地皱着。我抱着他,只能紧紧地抱着他。而臭臭也只让我抱着。他不停地在我的怀里扭动,不停地喊:“妈妈,难受。妈妈,难受。”我抱着他,只能紧紧地抱着他。
 
谁能救救我的孩子啊!
 
  我把臭臭送到了医院。在病房,我爱人去取住院的东西,我抱着我的孩子,抱着即将离开我的孩子,我哭了,没有任何顾及地放声哭了。我任泪水在我的脸上疯狂地流淌。我问臭臭:“为什么,为什么你要离开我!我是你的妈妈,可我为什么却救不了你啊!”是的。悲哀的不是孩子有病,是我做***救不了孩子,我只能眼睁睁地看着他离开我,却没有任何办法。在空空的病房里,我无奈的哭声在回荡。上苍有灵啊!如果泪水能唤回我的臭臭,我宁愿让我的泪流成海!如果用我的生命能救回我的孩子,我情愿死一万次!我的孩子,我的臭臭!只有他能听得到我的呼唤。但他已昏迷了。
 
  臭臭走了。永远地走了。真的走了。真的永远地走了!我永远记得那一天:1997109。我的灵魂被永远地带走了。
 
  但我仍感谢上苍。他走的时候没有像医生预言的那样,他的面貌没怎么变。虽然他的脸有些轻微的变形,但他的右眼没有失明,他临走的时候仍看得见我,他仍能准确地用他的小手紧紧地抓住我的手,他仍知道他的妈妈在他的身边——永远!
 
  我选择了给他火葬。老人告诉我,这样小就夭折的孩子最好埋在路边。我坚决不同意。臭臭在世的时候已饱受折磨,我不能容忍他小小的身体在冰冷的泥土中孤单地睡去,不能想像他的身体受虫蚁的侵害。我怕他冷,怕他寂寞,怕他醒来哭喊着找妈妈。我要他化成轻烟,随风散去。我要他干干净净地来,干干净净地走。
 
  但火葬的时候我没有去,我没敢去。我无法面对我死去的孩子,我怕自己控制不了自己。我的爱人和我的同事去送的臭臭。回来后,我望着我的爱人默默地流泪。我的爱人啊,我坚强的丈夫,在孩子有病的时候他没有哭过,但此刻,他在床上打着滚,用力抓着自己的胸膛,撕扯着衣服,放声大哭。他只是不停地告诉我:“春儿,我疼啊!我心疼啊!”我抱住他的头,他虚弱得像一个婴儿。他喃喃地告诉我:“我看到臭臭被烧的情景了,那一刻,我真的想跳进炉子里去。”我抱着我的爱人,泪水不停地流。我只能告诉他:“你真傻,你怎么能去看呢?”爱人告诉我:“我把臭臭的奶瓶放到了他的身边,还有他的小玩具陪着他。我把他从冷柜里抱出来的时候,他那个样子就像在睡觉,我亲了亲他的脸。我总感觉他马上能睁开眼睛喊爸爸似的。我把他脸上的纱布摘了,我不要他在投胎的时候还带着那块可恨的纱布。”我的泪水滴在了爱人的脸上,我心疼啊,心疼我的爱人。这个坚强的男人!第一次流露出他的脆弱,他对孩子的爱同样是那样地深沉。他一直在支撑着我。在有些时候我可以逃,但他不能。我可以哭,但他不能。我可以去述说,他不能。他只能去面对,只能选择坚强。因为他是男人。在孩子病的时候,我把全部的精力都放在了孩子身上,忽略了对爱人的关心。在以后的日子里他的同事告诉我:“他上班时总是在那里发呆,或者一个人转来转去,像疯了一样。”我的爱人啊,让我心疼的爱人啊,你不说,你什么也不说,你只是默默地独自承受这一切……
 
  晚上,我和爱人把臭臭所有的玩具、衣服和臭臭用过的东西,照片和我的日记,到十字路口全部烧掉了。
 
  我悄悄地留下了臭臭的一缕胎毛和一张他百天的照片。在那张照片上我有一张幸福的笑脸,快乐地拥抱着我的孩子。这是我留下的与臭臭的惟一的联系,也是我做过母亲的惟一纪念。再有,就是我对臭臭永远的记忆和无尽的思念。
 
我仍不记得那一夜我和爱人是怎样熬过的了,那一夜我没有记忆。
 
  第二天上午。我把我的睡衣和爱人睡觉时常穿的背心剪了,在胸口那个地方剪的。我小心地把臭臭那少得可怜的骨灰包了起来。我期望在冥冥之中臭臭能感到温暖,感到父母的呵护和体温。但是,去埋藏孩子的时候,爱人仍没让我去,所以至今我仍不知道我心爱的臭臭的坟在哪里。
 
  我的孩子这一次真的走了,我今生今世也看不到他了,再也听不到他清脆的笑,再也听不到他那特有的喊***声音了。
 
  除非在梦里。
posted @ 2006-06-21 16:12 我的博客 阅读(192) | 评论 (0)编辑 收藏

注意:本文是转载的,如果你喜欢可以转载,但是必须说明作者和出处。  

sebastian 翻译

--------------------------------------------------------------------------------

我闯入船舱,“嗨!你听到一些传闻了吗?”

珍妮的工作并没有丝毫的停顿:“草料(在英语中的发音跟嗨一样,珍妮的话带有几分嘲讽)是用来喂马

的。什么传闻?”

“关于加尼米德,”我解释道,“我听说他们在冰下发现了一些东西。没有迹象表明冰层近期曾融化过,说明那东西很古老了,而且它绝对不是大自然的产物。”

这吸引了她的注意力。她直起身来,眼睛闪着光,“是吗?不属于人类的?”

“有一种嗡嗡声。这是不是刺激了你的神经?”

“是,嗯,还有其他的吗?”

“没有其他的信息了,”我走到沙发前面,一屁股坐了下去,老老实实地回答,“这仅仅是一个传闻。而且,即使有什么大的事情发生,也不值得如此令人激动,不是吗?用不了两个月,我们都将在空间站里了。”

“冰下面...?"珍妮思考着,“无论这个东西是不是人造物,至少有一点可以肯定,它已经有一段历史了。

这会促使我们思考一些大的问题,不是吗?人类的历史,我们从哪里来,我们到哪里去。”

“人类的起源和前进的方向,对。”我说,“这使我想起了发生在我的第一份工作期间的一些事情...”


那是一个阴天,我正在和温迪谈话。她是我的邻居...也就是说,我们的卧室相邻。

“对了,"我说,“我听说Stroustrup之所以命名这种语言为C++,是因为它是在C语言的基础上增加了一些东

西,对吗?”

“是这样的,”温迪说,“如果你再仔细考究一下这个名称的语义,你能想到什么呢?”

一阵迷惘后,我只能摇摇头:“愿闻其详。”

“你看,它使用了后缀形式的自增运算,意思是‘拿来C语言,增强它的功能,但还用原来的。'"我们一起笑了起来。

“一个不高明的玩笑。”Guru的声音把我们都吓了一跳。我们转过身,我有点紧张,但还是发现了一件不同寻常的事情:Guru的蓝眼睛里闪着光。她接着说:“对这个被你们嘲弄的语言,你们知道它的历史吗?”

我放松下来,很快答道:“您的意思是...”

Guru 合上了手中的书--从封面上看是一本D&E[1]。她微微抬头,眼睛注视着远方然后开始慷慨陈词,像

唱歌一样,瘦弱的身体随着演讲内容起伏晃动:

“最初,计算机语言非常混乱,高级语言根本不存在,连固定的语言形式也没有。贝尔实验室的Richard

Martin在使用了计算机语言的过程中意识到了高级语言的必要性。他深入地研究后,开发出了他认为不错

的BCPL语言。

“然后Ken Thompson使用了BCPL,虽然他觉得很不错,但他认为如果想在一台PDP-7上使用BCPL,就必须精简BCPL。Ken Thompson深入地研究后,他开发出了一门新的语言,命名为B,它是BCPL的一个简化版本,他认为这是一门很好的语言。

“然而B语言没有类型的概念。Dennis Ritchie意识到了这一点,他深入研究后,对B语言进行了扩展。

Ritchie 添加了结构和类型,他把这门语言叫作C语言,因为C是B的下一个字母,无论是在字母表还是在

BCPL中。Ritchie 认为这门语言已经相当好了,但是他并不满足,继续投入大量的心血和汗水去完善这门

语言。在1978年,Brian Kernighan 和Dennis Ritchie合作出版了《The C Programming Language.》[3]

这为人们带来了很多的喜悦,人们看到了C的美妙,‘耶,这门语言真的很棒!’人们纷纷议论。

“C语言很快流传开来。新的特征不断的被添加,但并不是被所有的编译器厂商支持。人们开始感到沮丧,开始呼吁“我们需要标准C!” ANSI响应了这一要求,在1989年ANSI 宣布," 请注意,我将给所有的程序员带来快乐。因为在今天,C的标准X3.159-1989将诞生."接着ISO采纳了这一标准,发布了ISO/IEC 9899-1990。这又一次为人们带来喜悦。

“事情在进一步发展,早在C标准被发布之前,Bjarne Stroustrup就已经致力于改善C语言。Stroustrup致

力于在C语言里增加类、函数参数类型检查和其他的一些优秀的特征。他继续深入,于1980年发布了'C

With Classes.'这为人们带来了更多的喜悦和兴奋。

Stroustrup 并没有止步不前。他在对C语言做了很大的改变后,产生了一门新的语言,他命名这门语言为

C++,就是C的增强的意思。他继续努力,在1986年出版了《The C++ Programming Language》,这再一次

为人们带来了喜悦。

"象所有的事物一样,C++语言也在不断的进化着。模板,异常处理(exception handling)以及其它的特

征陆续被添加到C++中,人们再次为新事物而兴奋。

“然而人们又开始抱怨了。那时候,不同的编译器开发商使用不同的解决方案支持模板和异常以及其它的

特征,甚至有些开发商拒绝支持这些新特性。因此ISO又行动了, 在1998年----克林顿上台后第六年,

克雷蒂安成了除魁北克人之外所有加拿大人的总理。莱温斯基成了媒体的大红人,因为没有第二个辛普森

诞生,那年没有什么大的新闻----在九月的第一天,ISO 宣布“ 请注意,我将给所有的程序员带来快乐的

消息。因为在今天,C++的标准ISO/IEC 14882:1998(E)将诞生。”接着ANSI接受了这一建议,在七月的二

十七号发布了几乎相同的标准,甚至早于ISO标准的发布,有时候事情就是这样。这又一次为人们带来喜

悦,“啊,太好了,我们可以踩在巨人的肩膀上前进了”大家是这样欢呼的。

故事并未结束,当时Patrick Naughton为Sun Microsystems工作了一段时间后,深感厌烦,想离开Sun ,

寻求新的发展。然而公司挽留了他,‘你可以拥有一支开发队伍,只要你愿意,一切都可以由你指挥,但

要给我们带来点酷的东西。’于是一个名叫Green的团队产生了。

Green小组孤独地在荒野上不断的探索。他们寻求一种可用于嵌入式设备的面向对象语言,他们一开始在

C++的基础上修改,但是C++的庞大使之无法满足他们的需要,于是他们在C++的基础上创建了一门新的语言Oak----这个命名仅仅因为James Gosling看到了相窗外的一颗橡树(Oak)。开发队伍仔细审视了这门

语言,认为它相当的好。

也是在那个时代,美国巨型计算机应用中心开发出了Mosaic,这为我们带来了令人兴奋的WWW。随后Bill

Joy试图公开Oak的源代码,使Oak能使用于网页浏览。Sun审视了这个想法,觉得不错,但Oak这个商标已

经被人占用,所以Sun把这门新语言称为Java,并发布了《the Java programming Language》。这又一次

使人们激动,"耶!我们又有了一个真正与开发平台无关的语言!我们认为,这真是太酷了!"

Guru 结束了她的演讲,把目光转向了我,“年轻人,这就是C语言家族的故事。”她轻轻的把遮住耳朵的一缕灰发拨开,静穆的站了一会儿,重新低下了头,打开她的D&E,静静的走开了。

我被震住了,呆呆的站了好一会才看了看温迪。

“嗨,不要看我,”温迪耸了耸肩,“你会慢慢熟悉她的。她是我共事过的程序员中最好的。”

我几乎不能相信。我试图想记起装有我的软盘放在哪了。


--------------------------------------------------------------------------------

珍妮开玩笑似的笑了起来:“你花了多少时间----工作还是思考如何离她远点?”

“是的,”我傻笑了一下。那不是我最后一次同珍妮谈论关于Guru或者其它更令人高兴的的话题,


--------------------------------------------------------------------------------

[注释]
1. B. Stroustrup, The Design and Evolution of C++ (Addison-Wesley, 1994) ISBN 0201543303.

2. See http://cm.bell-labs.com/cm/cs/who/dmr/chist.html for alternate etymologies of "B".

3. B. Kernighan and D. Ritchie, The C Programming Language, 2nd edition (Prentice Hall,

1998) ISBN 0131103709.

4. B. Stroustrup, The C++ Programming Language, Special Edition (Addison-Wesley, 2000) ISBN

0201700735.


--------------------------------------------------------------------------------

[参考书]
M. Ellis and B. Stroustrup, The Annotated C++ Reference Manual (Addison-Wesley, 1990) ISBN

0201514591.

J. English, The Story of the Java Platform.

D. Ritchie, The Development of the C Language.

B. Stroustrup, The Design and Evolution of C++ (Addison-Wesley, 1994) ISBN 0201543303.


--------------------------------------------------------------------------------

[建议阅读]
D. Bank, The Java Saga.

M. O'Connell, Java: The Inside Story.

posted @ 2006-06-21 16:06 我的博客 阅读(212) | 评论 (0)编辑 收藏
  2006年6月10日
 每个人都是最棒的,父体的千万个细胞中最强壮的一个才能跑到最前面与来自母体的细胞结合。这时,有二分之一的机会会诞生一个男人。儿子,无疑是父亲所有理想的最好载体,而母亲给儿子的,是最无休止的爱,她最担心的,是自己的儿子不能顶天立地。当女儿家可以搂着母亲的脖子窃窃私语时,请揽住母亲的的肩头,让母亲感觉到你结实有力的臂膀。
 
  敬父亲一杯酒:
  儿子承载了父亲太多的理想,但是理想与现实总是不能够完美的结合,无论你实现了多少父亲的期盼,甚至你与父亲的期望背道而驰。但是,要敬父亲一杯酒,你身上淌的是他的血液,严肃的父爱是你人生道路上的鞭子,驱策你走向自己的路。当你成为一个男人的时候,请感恩的凝视父亲的双眼,斟满一杯酒,告诉父亲你无愧于是他的儿子。
  对你爱的女人说“我爱你”
  在这里我们不谈爱情的专一,你爱过几个女人就说几声 “我爱你”,这三个字不是你对别人的赐予,而是对自己灵魂的负责,不敢说的爱是懦弱的,活着的时候不说这三个字,死了,就没有机会了!
  和另外一个男人打架:
  这个不需要任何理由,你是雄性动物,这是天性,谁让你是男人!如果你现在还没有试过,那么准备好,当一张厌恶的脸出现时,瞄准好部位,把拳头砸过去!
  不要打女人:
  在你心智正常的情况下,不要打女人。你不要管女人是不是水做的,你都不能打她。对于实在让你厌恶的女人,你最好的做法是不和她一般见识,最坏的做法是用恶毒的语言骂她,但是千万不要打,你不打,可能有人说你无能,你打了,你就是真的无能。
  有一个自己的孩子:
  不一定非要是自己亲生的,因为生理问题有时候你真的避免不了,但是你要有一个自己养大的孩子,你同样会有很多的梦想没有实现,需要一个载体。别太期望这个载体会顺着你设计好的路走下去,你看看我们自己,有很多地方已经让父亲失望了。但是他一定会在你的教导下长大成人。如果出息了,你可以对别人说“那是我的孩子”。如果他很平凡,你可以对自己说“呵,这是我的孩子”
  年轻的时候去漂泊:
  你最好年轻的时候飘荡着过了一段日子,不论离家远近,你一个人生活过,打拼过,这样老了的时候才会有更多精彩的故事可以回忆。人要是没得东西可回忆,实在是一件可怕的事情。
  唾弃同情这种感情:
  同情是一种凌驾于弱者的情感,是最没有用的一种情感,请不要把同情当作爱心,爱心是自内而外的,是不会让任何人的尊严受损。而同情是自上而下的,同情往往意味着你于心不忍,而又爱莫能助,这种情感你觉得有用吗?因此,不要去接受别人的同情,也不要去同情他人。
  有自己的一份事业:
  每个人头顶的天都一样大,死了之后都不会带走什么,所以,你要去拼一拼,成败与否,要的不是结果,是个过程。
posted @ 2006-06-10 14:32 我的博客 阅读(203) | 评论 (0)编辑 收藏
  2006年6月5日

注意:本文是转载的,如果你喜欢可以转载,但是必须说明作者和出处。

夏天 翻译


在船上,你最后想感受的就是海风了。我和珍妮碰巧很不凑巧,最接近事故发生地点。我们费尽力气,将笨重的房门关上,并将其密封,使打破的小房间与外面隔绝。当我们靠在门上,作深呼吸的时候,汽笛突然停止鸣响.

“他奶奶的,到底怎么回事?”值班驾驶员刺耳的声音穿过了整个船舱。

“小小渗漏而已,先生,”珍妮回答,“我们已封好了那间船厢,问题已解决,没事了。”

“你密封了船厢?为什么它不能自动密封呢?刚才我们不是把门重修了吗?”

珍妮和我对望了一眼。“哦,先生,维修人员都认为这个新的锁闭装置不会有问题,因为它是刚从工厂出来的,是崭新的,因此他们没有检查它。它是好的,只不过他们没有取下所有的包装材料,所以它不能自动密封。”

稍停片刻后,珍妮接着说,“对,干得不错。有个维修人员正在赶来。” 接着,恰好在被打破的船舱前面,我们听到XO的声音在说:“约翰逊先生,叫工程部主管到我的船舱来见我。告诉雷利到...”

我对着珍妮咧嘴一笑,“能听到刚才的对话,我愿意付一个星期的薪水。它提醒了我我们以前遇到的一个编码安全的问题,这是很久以前的事了...”


我的第一份编程工作已干了几个星期了,也熟悉了同一项目组的其他的程序员,其中一个是鲍勃。几乎在每一个方面,他都与Guru形成鲜明对比。鲍勃是个自命不凡的家伙,他的代码让其他人很难维护,并且经常违反编程的规则。

我已经一头扎进我的第一个项目,鲍勃的任务是对我经手的一些资料进行核查。他来到我的桌边,拿着一杯咖啡,靠在隔板上,“你的代码由于在你的helper函数里存在一个存取违规而崩溃。”他说,“在Space Cadet知道之前,你最好把它改好。”

“Guru的确是一个优秀的程序员,鲍勃,”我生气了。的确,Guru是很古怪,在她旁边时,我也不自在。每次我和她谈话时,我总是不断考虑更新我的概略,但是鲍勃刚才的态度莫名其妙地激怒了我。

“是,不管怎样,”鲍勃轻蔑地晃了晃杯子,溅出一点咖啡,“总之,你的helper函数使用了空的指针。让我们来看一看。”

“但helper函数并没有使用任何指针啊,”我皱了皱眉头。“只不过是一个对xWrapper类的引用而已。”我在文本编辑器里找出代码。它看起来是这样的:

class xWrapper
{
/* ... */
public:
virtual void dump() { cout << name << endl; } 
}; 
void helper( xWrapper& w )
{
w.dump(); 
// ... do other stuff with w ... 
}

鲍勃将头伸向显示器,“是的,就是在dump()语句这里崩溃。”他抓了抓鼻子说。

“那是不可能的。”

“确实是这样,年轻人。” 鲍勃真的让我心烦意乱,“我所做的就是从类工厂中取得一个新指针,把它传递给你,而你就对它进行提领操作。如果那个指针是个空指针,你就引用了一个空指针。你再仔细看看。”

“嗯,是吗,”我支吾道,信心有点动摇。毕竟,我刚从学校出来,而鲍勃已经有几年的经验了。“我想要注意到引用是否为空是不可能的。”

“你所要做的,”鲍勃说,“就是检查引用的地址。象我说的,如果想要安全,你就应该检查它...”

“不,”Guru平静的声音把我们两人都吓一跳。她又一次出现在恰当的时候。现在,她正站在我们身后,手里拿着一本打开的大书。“没必要这么麻烦。标准告诉我们不存在空引用。”

“但它这是可能的,”鲍勃坚持道,“我们刚刚展示显示了这一点,是他的问题。”

我真想打他几耳光。Guru只是冷眼看了他一下。“不,你应该检查那个。绝不要提领一个空指针。改一下你的代码:如果指针是空的,就不要调用helper()。今天下午把能够运行的代码给我看看。让这种难看的程序方法滚蛋。”她挥挥手让他离开。

鲍勃眨了眨眼。但她是这组里的高级程序员,因此他什么也没说就走开了。

“我的学徒工,”她继续单独地跟我说,“使用引用代替指针的主要的理由之一就是把你从不得不测试它是否引用一个无效的目标的负担中解放出来。空引用的唯一来源就是提领一个空指针——这在神圣的标准里明确被禁止,在未定义的行为(Undefined Behavior)里也写的很清楚。”

“OK,但是为什么只告诉我?为什么不告诉鲍勃呢?”

她悲伤地摇摇头。“他知道这个。我说服不了他 ,他已经沉湎于未定义的行为了。我的学徒工,小心踏入未定义行为这条路。一旦你走上这条路,你就会受它控制,当你试图捕捉并且解决问题时,它将耗费你的时间。”

我心中暗自掂量。“好,”我问道,“创建一个无效的引用会有什么样的危险?比方说,你传递了一个对象给一个函数,但你传的那个对象在函数结束前超出了它的范围。你怎样预防这种情况的出现呢?”

她摇了摇头:“这个办不到。从这方面来说,引用和指针是很类似的。想想这个比喻。”Guru很快地在我的白色书写板写下了一些代码:

T* f() 
{ 
T t; 
return &t; //返回一个悬而未决的指针
} 

void f1( T* t ) 
{ 
if( t ) 
t->doSomething(); 
}

int main() 
{ 
T *tPtr = f(); 
f1( tPtr ); // 非法
}

“这个f()函数显然为人所诟病。”她理了理耳后一络银灰的头发,接着说,“它返回一个指向局部对象的指针,当函数结束时,该变量就超出了其作用范围。因此tPtr在main()里指向一个已被删除的对象。f1()函数尽了最大努力——它对空指针进行了检查。一些平台也提供编译器专用函数来检测一个指针是否指向一块有效的内存区域。但是,这些函数还是无法检测到上面例子中的那种情况。在f1()内部,变量t没有指向一个有效的T类型的对象,因此f1()函数无法确定t是否有效。 因此当程序员写f1()时,要相信你的程序员同事们会尽他们最大努力,确保向你提供的指针是指向一个有效的对象的。

“就像你必须假定一个非空的指针是有效的一样,你必须假定一个引用也是有效的。在你的程序员同事中你必须要有信心。”

“即使是鲍勃?”我问道。

她用一种悲伤的表情点点头,然后看着她那本大部头书沿着走廊飘然而去。


“鲍勃还是坚持已见吗?”珍妮问道

“比他应该坚持的时间要长。”我停止微笑,“我们公司也做一些软件,是用于起搏器的。你知道,这种设备是要植入到胸腔里的。有一次,他测试一段代码,还没等这些代码验证所有的先决条件,就整合到产品中了。并且...”

珍妮耸了耸眉毛。

我悲哀地点点头:“鲍勃最后又找到了别一份工作,是做零售的。他应该高兴才是,国为这是在程序员责任法颁布之前的事。”这时,事故控制小组接过我们的工作,我们作好准备,继续进行监视。

这不是我最后一次和珍妮讨论有关Guru,或更多令人愉快的事。

posted @ 2006-06-05 19:43 我的博客 阅读(302) | 评论 (0)编辑 收藏
  2006年6月1日

toulouse 翻译

 

注意:本文是转载的,如果你喜欢可以转载,但是必须说明作者和出处。  


我刚刚在昨天遇到珍妮,就在人员中转站,现在已经远远在我们脚下了。“我会永远记住我的第一个工作,”在乘务员检查完我们的安全带后,我对她说。

“想起了什么”

“项目组高级程序员,”我微笑着说,陷入了回忆中。“她是个古怪的家伙,我们都叫她做Guru。领导不喜欢把新来的程序员分到她的组里;我是当年招聘的四个人中唯一坚持到试用期结束的。”

珍妮扭过头刚准备问一个问题,这时钟声响起,隆隆的加速声响彻整个机舱,我们的谈话因此中断了好几分钟,等这截推进器快烧完时,我们已飞离轨道,我给她讲述了工作第二天发生的故事。


我们用早期的C++语言编程。工作的第二天中午,厌烦了读职工手册,于是我写了一个工具类,里面包含一个原始指针作为成员变量:

#include "xStruct.h" // definition of struct X

class xWrapper
{
    X* xItem;
public:
    xWrapper() : xItem(new X) { }
    ~xWrapper() { delete xItem; }

    void dump() { /* dumps xItem to cout */ }
};

当然了,使用这个类的程序由于内存问题总是时不时的崩溃,因为我违反三个重要设计原则之一:任何时候,只要你提供了析构函数、拷贝构造函数或赋值运算符中的一个,你通常需要三个都提供。([1]) “所以,”我自言自语道,“我必须自己处理拷贝和赋值问题。简单地...auto_ptr有拷贝构造函数和赋值运算符,我可以拿过来用一下。”(你知道早期C++程序库中的auto_ptr,是吗?)

既然auto_ptr自动删除它所指向的对象,我只需要改变xItem的类型,移去析构函数中的delete语句-auto_ptr会处理其他的事情,对吗?

Class xWrapper
{
    auto_ptr<X> xItem;
public:
    xWrapper() : xItem(new X) { }
    void dump() { /* dumps xItem to cout */ }
};

不幸的是,程序仍要崩溃,这次是由于它试图对空指针进行提领操作。我对这个问题苦苦思索了半个小时,这时Guru碰巧从我这里路过,像芦柴棒一样瘦瘦的她一只手里捧着厚厚的一本打开的书。 她来得――我的意思是她来得太不是时候了,真是怕什么来什么,实际上,这简直称得上诡异了。

“哦,你在看什么?”我指着书问,想让她的注意力从我的屏幕挪开,同时也希望着她能离开。

Guru眨了眨眼睛。“Josuttis的书,”她边温和地说着,边做了个标记并合上书。“年轻人,你写了些什么啊?”

“我在写这个wrapper class时遇到了问题,”我承认道,“我使用了auto_ptr成员,但是在测试时,不知为什么它的指针重置为null。”

“把你的代码给我看一下,”Guru说。我把屏幕转向她。“所有权,”仅仅扫了一眼,她立刻说,

这回轮到我眨眼睛了。

“所有权,孩子;你的问题是所有权语义学。一臣不事二主,没有指针可以同时给两个auto_ptr使用。”

她的话虽然很怪,却使我意识到了自己的错误。“哦,是的,”我答道。“当你拷贝一个auto_ptr的时候,原来的那个放弃了所有权,重置为null。Xwrapper的拷贝构造函数使用了那个缺省的行为,所以原来xWrapper对象的auto_ptr被重置,于是我存取它的时候,实际上是在提领一个null指针。”

“对的,”Guru说。“你能使用标准里已有的代码,这很好,不过使用的时候要小心。对于xWrapper来说,你还是必须自己写拷贝构造函数和赋值运算符。”

“但是,我没法用auto_ptr的拷贝构造函数和赋值运算符来实现他们啊,因为auto_ptr自己的版本无法正确的……-哦。有办法了。我可以用auto_ptr的提领运算符访问其拥有的对象。”我很快写下了下面的两个函数:

XWrapper::xWrapper(const xWrapper& other)
: xItem(new X(*other.xItem))
{ }

xWrapper& xWrapper::operator=(const xWrapper &other)
{
*xItem = *other.xItem;
}

“嗨,cool。”我喜欢这个实现,“我甚至不需要在赋值运算符里检查自我赋值。”

“很好。”

我应该就此打住,闭紧嘴巴,可惜我当时正得意着呢:“使用auto_ptr很容易出错。如果在我实际上并不想发生所有权转移时,它可以告诉我它将试图转移所有权,那有多好啊……”。”

“冷静一下!”Guru打断了我。“这不是auto_ptr的错。如果你想达到这个效果,你应该明确地说明你不想auto_ptr被拷贝。”

“但是怎么去做呢?这是不可能的。”

“可能的。记住const修饰符的使用。声明一个auto_ptr不可变的方法是使它成为const。假如你让成员成为一个const,编译器就不能不声不响地产生xWrapper对象的一个拷贝。或者,你可以使用一个也许叫strict_auto_ptr的修正版本,这样编译器就不会错误地拷贝和赋值xWrapper。当然,在这种情况下,让它成为const比较简单和有效率。” ([2])

她离开的时候又重新打开Josuttis的书继续看了起来,边走边心不在焉地和我说这话。她和她的声音慢慢地远去:“要注意的是,我的孩子...auto_ptr是一个有用的工具,但是就象你刚才发现的那样,它不是万能的。好好琢磨Josuttis chapter 4.[3],永远不要在标准程序库的容器中用auto_ptr,如vector<auto_ptr>,因为auto_ptr的拷贝和赋值不能达到标准的要求。此外,永远不要用auto_ptr指向对象数组,因为auto_ptr的析构函数用non-array delete删除所拥有的对象;对于对象数组来说,可以用一个vector。程序库...”

这时她转了个弯,消失了。这只是我工作的第二天;我告诉自己,不能空闲下来,我应该不断地学习,前面的路还很长!


“不可思议,”珍妮说,喝着咖啡,此时飞船已飞离了泰兰的交通控制区域,并继续加速,“那么,你离开了吗?”

“她...我不确定为什么,”我坦白承认,“这种事发生了好几次。我也想和其他人那样在试用期离开,尽管他可能对我有好的影响。你曾经和这样的怪人工作过吗?”

“嗯,我想也有一些。”

这不是最后一次我和珍妮谈论Guru或其他更令人高兴的事。


[注释]

1. M. Cline, G. Lomow, and M. Girou. C++ FAQs, 2nd ed. (Addison-Wesley, 1999).

2. Ibid., FAQ 30.12, pages 426-8.

3. N. Josuttis, The C++ Standard Library (Addison-Wesley, 1999). 

posted @ 2006-06-01 11:03 我的博客 阅读(274) | 评论 (0)编辑 收藏
  2006年5月27日
这幅图片是来自孙鑫VC++中的一个画面,我觉得对于理解基类与派生类的关系有很大的帮助。

继承关系.JPG
posted @ 2006-05-27 15:57 我的博客 阅读(344) | 评论 (0)编辑 收藏
  2006年5月25日
前段时间我在www.ccpblog.com 申请blog,最初的想法是申请两个,一个是关于.NET,另一个是关于C++.刚开始我申请成功了一个关于.NET的blog,但是过几天,网管给我发邮件跟我说:"还是C++ 适合你"。最初挺郁闷,本来想在两方面都有所发展,后来想通了,其实最关键的一点是,无论你想干涉么都得精通,而我现在学习VC++不久,怎么可能在短时间在.NET上有所造诣呢!就这样吧!
posted @ 2006-05-25 16:38 我的博客 阅读(225) | 评论 (0)编辑 收藏
仅列出标题