欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《编程机制探析》第一章 写作初衷——若是当年早知道......

程序员文章站 2022-05-17 13:36:48
...
《编程机制探析》第一章 写作初衷——若是当年早知道......

小时候,我读过一部短篇小说《一块牛排》,美国著名小说家杰克.伦敦写的。
故事中,一个年老体衰的老拳击手陷入了人生的低谷,参加比赛之前,连补充体力的一块牛排都买不起。他的对手是一个正处于体力上升期、精力充沛的年轻拳击手。他凭借着丰富的经验与对手周旋,并抓住一闪即逝的机会,给了年轻的拳击手以沉重打击。但是,遗憾的是,他的体力不足,并没有给对手造成致命打击。对手最终重新稳住了脚跟,将他击倒在地。
很多年过去了,但这篇小说给我的印象一直没有褪色,尤其是文中那一段关于老拳击手心理活动的描写:“当他坐在自己的一角打量对手的时候,他的脑子里涌现出一个想法。如果以他的老谋深算,再加上桑德尔那样的年轻力壮,定能成为一名重量级的世界冠军,一代拳王。可是困难就在这里,桑德尔决不可能无敌于天下,因为他缺少智慧.而获取智慧的唯一途径,就是拿青春去交换。不过这样一来,等他有了智慧的时候,青春已经消失了。 ”
这段话,我可以说是感同身受。我也年轻过,我也踌躇满志过,我也精力充沛过,我也废寝忘食过。然后,同那个老拳击手一样,等我年纪渐长后,回忆起当年的无知无觉,我也满腔遗憾,悔不当初。
若是当年的我,就拥有了现在的见识和经验,那么,我当年绝不会走那么多弯路,也绝不会浪费那么多时间。
如今,很多事情虽然知道了,却为时已晚。正如有个一句话笑话讲的那样:我想早恋。可是,已经晚了。
正如那个老拳击手一样,每个人都有一些大大小小的“早知如此,就应如何如何”的遗憾。细数当年,我也有过不少这样的遗憾。
我现在还清楚地记得,毕业求职的时候,我去一家外企面试,由于英语口语不好,没有通过。只有在那时候,我才意识到了英语口语的重要性,我才明白,那些早晨起来在校园里坚持大声背诵李阳口语的同学们是多么的明智。
对于见多识广的同学来说,英语口语在求职中的重要性,只是一个简单的常识。而我对英语的认识却远远没有深刻到这个程度。我只是在积累词汇量和扩大阅读量两个方面投入了精力,以便查阅大量的英文技术文档。
那件事情是一个知识决定命运的活生生的例子,给了我深刻的教训,以至于我到现在还不能忘却。
这个世界上有一些人,意志坚韧,能力出众,做什么事情都能干出一番名堂来。那些人可能很难理解我的这种想法。在他们看来,一份职业只不过是一个起点而已,能做到什么地步,完全依靠个人的能力。
但很不幸的是,我是一个资质平庸、意志薄弱的人。第一份职业基本上决定了一个人职业起点的高低。与其努力工作,不如努力找工作。对于像我这样的资质平庸的人来说,尤其如此。
人在失败的时候,出于自我心理保护的机制,总是会为自己找借口。吾非圣贤,自然也是如此。很快,我就为自己找到了诸多借口。
首先,我没有意识到口语重要,是因为信息不对称。我是农村里长大的孩子,自然不如城里人懂得多。
其次,我们农村孩子从小学的都是哑巴英语,高考时听力部分就吃了大亏,幸亏没有考口语。
再次,这种基本教育环境的落后,不仅表现在英语方面,还表现在各个方面。比如,双语家庭里长大的孩子,从小就懂双语,根本就不用学。生意人家庭里长大的孩子,从小就懂生意经,自然比我们起点高。
再说了,中国人为什么要学英语啊?!都说中文,不就没这回事了?
总而言之,这都是环境的错,和我一点关系都没有。
当然,以上种种借口,除了给自己带来心灵上的抚慰,对于物质世界却没有任何改变作用。要想在物质世界占有一席之地,还得从改变自身做起。
既然信息不对称,那么就想办法弥补。我意识到求职宝典之类的重要性,也开始有意无意地留意网上的相关资料。
我在网上看到过一个微软求职的例子。有一个人,从来没有接触过编程工作,却敢于去微软面试。第一次自然被刷下来了。但他不屈不挠,还准备下次再来。主考官见状,对其产生兴趣,决定给他这个机会。多次面试之后,他从一个门外汉成为了一个半专业人士,展示了强大的学习能力,通过了考核,成为了微软的一员。
在这个例子中,那个人的学习能力和意志力起了关键作用,同时,那个主考官的耐心、闲心、宽容心也起了重大作用。
无独有偶,后来我在网上又看到了一篇帖子——“我为这份工作准备了十年”。作者在文中描述了他为了一份工作,积累各方面经验长达十年的过程。隔行如隔山,那个帖子描述的工种我不太懂,好像也是专业性很强的那种。
网上有些风言风语嘲笑作者,说什么有这份心思和功夫,还不如做生意或开公司,说不定早就发财了。对此,我的看法是这样的。我羡慕有钱人,但我敬佩专业人士。
前一个微软求职的帖子,我还没有太强的感觉,但是,看了这篇帖子,作者那种孜孜以求的精神,却令我敬佩不已,汗颜不已。
我从来就没有过这种感觉,能够对一份职业,或者说一个公司,能够有这么强烈的向往和执着的精神。
我如果能够拥有这样的精神和毅力,我也能成功获得一份向往的工作。但我没有。我从来没有对某个职位产生过如此强烈的感情。
我开始反思自身。难道我对计算机技术不够热爱?也许吧。我看到过一些少年黑客的故事。有些还在上高中的少年,就已经成为深谙计算机底层的黑客级别的编程高手。他们拥有天赋、兴趣、热情,缺一不可。与他们相比,天赋就不用说了, 太打击自信。就说兴趣和热情,我也远远不能与他们相比。当年求学的时候,我选择计算机专业,完全是因为这行热门,好找工作。
你能指望一个出身农村普通劳动者家庭的年轻人能够怀有“为中华崛起而学习计算机”的远大理想吗?
这样的人确实有。比如,“计算机要从娃娃抓起”宣传画上邓爷爷手抚的那个娃娃。
现实中,我也遇到那样的同学和同事,对于计算机抱有真正的热忱和热爱。但是,那类人屈指可数,凤毛麟角。大部分人都是像我这样,只是为了谋生和“钱景”。
说实话,编码工作整天与机器和代码打交道,确实是比较枯燥的。不过,编程工作也可能是有趣的。我正是在学习和工作的过程中,时而遇到智力上的挑战,甚至体会到创造的快乐,才真正对编程工作本身产生了兴趣和热情。遗憾的是,随着软件业的发展,程序员的工种进一步细化,产生了大量代码工人的职位,不仅减少了编码工作的趣味,而且加重了程序员的职业危机感。
俗话说,有竞争才有动力。程序员原本是一种脑力劳动,但是,随着经过简单培训的代码工人的大量涌入,编程越来越有沦为体力劳动的趋势。
本来自以为老资格的入行早的程序员,面对精力充沛的年轻一代和日新月异的新技术,越来越感到力不从心,不禁发出了和那个老拳击手一样的感慨——这是个吃青春饭的行业,这是年轻人的天下。
程序员是不是吃青春饭的行业。这是程序员群体中一直争论不休、经久不衰的永恒话题。之所以说这是个永恒话题,是因为这个话题的争论,永远不会有定论。
一方面,有不少人叫嚣着,程序员三十岁之前一定要转管理和行政,否则前途堪忧。想想老拳击手面对精力充沛的新生代的窘境吧。体力、精力、学习能力都不如人,只能吃老本。
另一方面,有不少三四十岁甚至年龄更大的资深程序员现身说法,并举例说,在国外(这里的国外,自然是指那些发达国家,其他的欠发达国家,很少有人会在意),十年经验以上的程序员才是一个软件公司真正的中坚力量。
这两种说法都有道理,各有其适用范围。但是,无论持何种看法的人,都同意这一点:程序员是一个危机感十分严重的职业,每天都在担心自己会被淘汰。
当然,职业危机感并非程序员这个职业独有,而是这个时代的象征。有一个流行词语叫做充电。每个人都在忙着上夜大、进修、考研、考证、考职称,生怕被时代大潮所抛下。
各类资格证书,学业证明,能够给人以极大的安全感。似乎手中有了证,就有了将来兑换成货币的保证。
从前,我们说,手中有粮,心中不慌。现在,我们说,手中有证,心中不慌。
程序员这个行业也不例外。为了满足软件从业人员考证的需求,各大公司机构提供了多种多样的认证以及相关考试,分门别类,应有尽有。
程序员是否应该考证?这也是在程序员群体中引起过争论的一个话题。
当时有牛人放出这样的豪言:真正有能力的程序员是从来不考证的。考证是缺乏自信心的表现。认证是一个程序员一生的污点!
对于这种说法,我是举双手双脚赞成的。因为我没有考过任何认证。当然,真正的原因是因为考证费用太贵,而并非我过于自信于自己的能力。
事实上,和所有浮躁的年轻人一样,我也是相当缺乏自信的。同所有年轻的程序员一样,我千方百计、呕心沥血地寻找提高技术能力的方法。购买技术书籍,阅读技术文档,阅读开源代码,访问技术论坛,追踪最新技术,等等,这些大家都干过的事情,我也通通干过。
现在回顾过去,不禁感慨万千。当年的我,就像一只无头苍蝇一般,四处乱撞,极度想找到出路,却四处碰壁。我一直想多积累一些原理性方面的知识和经验,却不得其门而入,徒然在外围的资料性知识上浪费了太多的时间和精力。
多年以后,我终于摸到了一点门径,却已经青春不再。当然,我还是比小说《一块牛排》里面的那个老拳击手幸运一点。程序员这个职业归根结底还是和智力相关的。
体力会随着年龄的增长而逐年下降,但智力不会。或者说,不全会。人的智力分为两部分。一部分叫做流体智慧,指那些会随着年龄增长而消退的能力,比如,反应能力,机械记忆力,等。一部分叫做晶体智慧,这那些不会随年龄增长而消退的能力,比如,逻辑思维能力,理解能力,等。活到老,学到老,指并不只是一句励志空话,而是有一定心理学依据的。
这本书主要讲述的都是这些年来我个人积累的一些计算机编程方面的原理方面的知识,希望能够对程序员朋友们有所助益。另外,我有很多亲戚朋友,没有接触过编程,对于计算机的了解也仅限于日常使用。他们觉得计算机程序挺神秘的。我希望,这本书能够对于他们这些非计算机相关行业人员也能够有所帮助。
换句话说,我希望,这本书能够起到普及计算机知识、宣传计算机文化的作用。
本书遵循这样一个原则,文字类比尽量多,编程代码尽量少。这样做的目的有两个。
一是为了明晰易懂,即使没有编程经验的人也能够从本书受益。
二是为了延长本书的生命力。编程语言是有生命期限的,说不定什么时候就会过时,被扫入历史的垃圾堆。一门编程语言的风光时间一般也就是十年左右。而自然语言(即汉语、英语等语言)相对于人类的寿命来说,可以说是永不过时的。这本书的内容,都是我个人认为在几十年内都不会过时的重要编程模式。我不希望本书的生命力受到某种编程语言代码的生命周期影响。
这句话说得有点大了。所以,这里,我需要适时地惶恐一下。不,应该说是惶惑。
其实,早在几年前,我就想写这本书了。那时候,我花费偌大心力弄懂一些重要的编程概念或者编程模型,一种自得自满的心理油然而生:“原来是这么回事啊。以前看的那些书籍资料上写的根本就不对嘛,简直就是误导。我估计,那些作者可能自己都没有理解透彻,就半懂不懂地写出来了。若是我来写,我一定会写得更加清晰易懂。”
基本概念弄清楚之后,就等于打通了瓶颈。以前看不懂的那些专业论文之类的资料也大致能够看懂了,对于问题的理解也会随之加深。这时候,我才明白,我之前的自以为透彻的理解是多么粗浅和无知。与那些半通不通的书籍资料相比,我也只不过是五十步笑百步而已。我深受打击,不敢再动笔,生怕贻笑大方。
我总想着,再多积累一些知识,写得更有深度一些。但随着时间的推移,我发现,我接触到的未知领域越来越多,已经远远超出了我的智力限度。再这样下去,这本书可能永远也写不出来了。我甚至有了放弃这本书的想法。但是,我想写一本编程书籍的事情,早已为人所知(唉,那时候年少轻狂,嘴上没把门的)。一些亲戚朋友还关心地问我进度如何。每次都弄得我很尴尬。最后,我下定了决心,还是把这本书写出来算了,也算给自己一个交待。
可以说,这本书是我技术生涯的重要总结。书中内容都是我认为的“所有人都应该早知道,但很多人却不知道,或者说,不清楚的重要编程概念”。我不敢保证这本书有多么好。我只能保证,我写的东西,都是别人没写到的内容,或者说,没写到这种深度的。另外,我会竭尽所能,保证这本书的趣味性和生动性。
我现在还记得,我曾经读过的一些计算机教科书是多么的面目可憎,枯燥乏味。如果我写的书给读者这种感觉,那我还不如找一块豆腐,一头……不,一下扔到锅里煮了吃了算了。
人生苦短,及时行乐。寓教于乐,才是王道。
好了,以上就是序章部分。按理来说,序言写到这里也就结束了。但我不。关于“要是当年早知道”这个话题,我还有很多话要说。
要是当年早知道口语的重要性,我就每天早晨去大喊疯狂英语了。
要是当年早知道这些编程原理知识,我早就应该选定好方向,一个独创的软件作品说不定已经成型了。
要是当年早知道那些创业期公司会上市,我早就应该加入进去,现在都可以退休享受生活了。
要是当年早知道股票会疯涨,我借钱也要去买,现在不知道翻了几千倍了。
要是当年早知道房价会狂飙,我砸锅卖铁也要凑几套啊,现在也至少翻了几番了。
要是当年早知道彩票是那个号码……
要是当年早知道那年雪灾滑雪衫会热卖……
要是当年早知道……
每个人可能都会像我一样,因为错失了各种各样的大好良机,而满怀大大小小的遗憾。
为了弥补这种遗憾,网上悄然兴起一种“重生”文学。中心内容是,一个人突然回到了多年前,有了重活一次的机会,可以弥补当年的种种缺憾。
这类小说,引不起我的阅读兴趣,但却引发了我关于职业生涯的一些思考。如果人生真的可以重来的话,我还会选择程序员这个职业了吗?
这个问题,我思考了很久。最终答案是:会。因为那个时候,我别无选择。
我在网上看过一个在美国的中国留学生写的文章。在美国学校里,经常有些欧美同学很好奇地问那个中国留学生:“你们中国人为什么都喜欢学计算机呢?”那些欧美同学的专业各异,有哲学,有考古学,都是各人感兴趣的科目。
面对这个问题,那个中国留学生通常无言以对。他只能在心里呐喊:“你以为我想学计算机吗?我们中国人不学计算机,能找到工作吗?”
好找工作,是我当年求学报专业时的唯一考量。当然,计算机专业并非唯一的好找工作的专业。就在报志愿前,我遇到了一个智者。当然,那个智者也不过是农村里一个普通的中年体力劳动者,满面沧桑和风霜,生活的重担在他身上留下了深刻的印记,却并没有磨灭他乐观外向的性格。他喜欢闲谈吹牛,和我侃了好久。他建议我学医,因为医生是任何时代都少不了的职业,而且,医生是一种越有经验越值钱、越老越值钱的职业。
我当时还开了一个玩笑,说,医生这个职业还是要退休的。这个世界上,唯一没有退休年龄限制的职业只有两种,一种是总裁,一种是总统。我还讲了一个关于美国总统里根的笑话。
甲问:里根为什么年纪那么大了,还要去竞选总统。
乙答:以他的年龄,那是他唯一能够找到的工作了。
那人听了,哈哈一笑,谈兴更浓,又说起了几种保值的职业,即越有经验越值钱、越老越值钱的职业,比如,教师,技工,以及其他利于积累资格和经验的职业。
那番谈话给我留下了很深的印象。我也确实慎重考虑过他的建议。但是,出于急功近利的心理,我最终还是选择了有吃青春饭嫌疑的计算机专业。
现在看来,那真是一种短视的行为。幸亏我从这个职业中获得了智力上的乐趣,还不至于后悔当年的选择。
市面上曾经流行过一本书(也许现在还在流行?)——《穷爸爸,富爸爸》。
那是一本关于理财、创业、投资的书,同时还讲述了一些人生哲理和生活原则。
该书的中心思想是:不要为钱工作,要让钱为你工作。
这句话是废话,地球人都知道,只是做不到,我们不去理会它。
该书的另一个重要观点是鼓励人们创业开公司。因为开公司是先花钱,再根据剩下的钱交税。而拿工资是先交税,再花剩下的钱。
这条信息对我挺有用的。但是,对于很多人来说,可能只是简单的常识。我们也不去理会它。
我们来看该书表达的第三个观点:当你需要为一件事情长期投入时间和精力的时候,你最好想到几十年后你年老时的情景。
书中举了一个例子。作者年轻的时候,想在网球和高尔夫球这两项运动中选择一项,作为自己的主要业余运动。
这里说明一下,在地广人稀的国家,高尔夫球场并非稀缺资源,高尔夫球也不是多么贵族化的运动,而是一种比较常见、花费不高的平*动。我就见过,一些十几岁的小孩子,连高尔夫球车的钱都不愿意出,自己拖着高尔夫球袋,一杆一杆,在偌大的球场上长途跋涉。如果在寸土寸金的地方,这样的小孩子也许只有当球童,才有机会进入高尔夫球场吧。
作为一个年轻人,作者想选择对抗更激烈、运动量更大的网球。他的父亲劝他,“网球和高尔夫球都是需要投入大量时间训练才能取得技巧的运动。你选了一项,就势必要放弃另一项。你想一下,当你年老的时候,你就打不动网球了。那时候,如果你再学高尔夫球,那么获得的成就会很有限,你获得的快乐也会很有限。”
作者经过深思熟虑后,“明智”地选择了高尔夫球,而他的同龄朋友(似乎就是那个“穷爸爸”的儿子)择选择了网球。几十年后,作者证明了自己选择的正确:他的朋友打不动网球了,再学高尔夫球也错过了最佳年龄阶段,而作者已经是一个高尔夫球高手了。
这个例子对我的触动很大。我这么说,并非我认为高尔夫球就一定比网球明智——那个选择网球的同龄朋友很可能有自己的想法,比如,网球更受青春期女孩子的欢迎,更容易泡到妞,等等。这个理由对于青春期的男孩子来说,是压倒一切的。
这个例子之所以触动我,是其中所表现的一种原则——当你决定投入相当长、相当多的时间去做一件事情的时候,最好能够想到几十年后年老的情景。
也许,在你选择一项娱乐或者运动的时候,这个原则的重要性还不是那么明显。但是,当你选择一项职业的时候,这个原则的重要性就不言而喻了。
如果按照这个原则来看,小说《一块牛排》里描述的那个老拳击手显然选错了职业。所有的运动员行业都是吃青春饭的,尤其是高强度体力运动。选择这类职业,一定要提前选择好退路,要么功成身退,嫁入豪门,要么向教练转型。
俗话说,女怕嫁错郎,男怕入错行。正如婚姻对女人的重要性如同第二次投胎一样,职业对男人的重要性也如同第二次重生。
这话很俗,很糙,很不入耳,但是,这却是一条普遍适用于社会中大部分人的通行法则。只有少部分意志强大、能力出众的人才能够摆脱这条法则的影响。有能力的人,在哪一行都能干出个名堂来,干什么行业都能成为行业翘楚。
那些人可以很牛地说:没有不行的行业,只有不行的人!
但我不是那样的人。那样的人能够压倒一切,而我,只会被一切压倒。
所以,对大部分人都起作用的原则,对我也一定会起作用,而且很可能会特别起作用。
按照《穷爸爸,富爸爸》里面的原则来看,我显然是选错了行业。这让我感到很安慰:原来,我之所以没有“成功”,不是因为我懒,而是因为我傻。
雷锋说:有人说我傻,但是,革命需要这样的*,我甘愿做这样的*。
我说:各行各业,总得有人来做。就让我做这样的*吧。
最后,让我吐露一下心中的奢望。
我希望,本书能够为读者提供一套受益终生的思维体操方案。
我希望,本书能够帮助更多的人对程序员这个职业产生兴趣。
我希望,本书能够帮助程序员这个职业成为一种长期的、创造性的、充满乐趣和智力挑战的终身制职业。