很长很长时间以来,我都有一种心理或者说思想:我希望在某一方面成为一
个有分量的人,或者说充当一个重要的角色,起码不被人轻视,不比别人差。也
许我代表了一个人群。我只感觉这种心理会让人患上强迫症,与别人的差距,或
自己 的不满意都会触及到内心,并产生前进和完善的动力。所以,它会让人变得
执着、坚毅,但也会让我被所谓的“完美”所累,生活于疲惫之中。
不知道您对于“完美”是怎样看的,可能你觉得完美主义者是令人敬佩的,
追求完美意味着责任心。这与其它很多事情都是一个道理,涉及一个度的问题。
我经常举一个例子:有A、B两个人作同种产品,A很追求完美,B认为产品差不多
就可以了。他们同时开始研发,A一遍遍的实验,为了达到最好的效果;B作出了
一个雏形,加以一定的完善,就直接推向市场。虽然说可能会有问题,但总归还
可以让用户接受。用户首先看到的是B的产品,并开始大量订购,迅速占领了市场
。与此同时,A仍然在不断深化和优化,而不推向市场,他总认为自己感觉不够完
善的产品提供给用户是不负责的。B此时占领了市场的很大份额,并不断对用户
手中的产品进行后续的升级完善,从而获得较好的口碑和信誉。当最终A觉得产品
完美的时候,他会发现市场上留给他的空间和机会已经很小,他主动去向用户 推
销,但用户对他说:“你的产品确实功能多,性能好,但我们已经买了并已经习
惯B的产品,我们不会再买你的产品了!”结果就是,B的产品虽然很优异,但他
的销售量远不敌A。上面说的这个例子,或许有夸张的成份,但它也足以说明一个
问题:“过于完美,不知变通的追求完美,会阻碍自身的发展。”所以,一个非
常追求完美的人,如果管理一个公司,可能会使这个公司大难临头!
当然,不追求完美也是不可取的,如果上面例子中B作的产品根本就是垃圾,
那么他非但占领不了市场,反而会砸了自己的招牌,把市场拱手让给A,成为A的
反面典型。
这一切,都是一个度的问题,如何把握好它在于我们的思想,我们的思想正
确,这将使我们在成功的路上越走越远,越走月宽。
学习这种事情,我认为一定要达到忘我的地步才能够精通。以前看过一部电视剧《陈景润》,讲述的是陈景润如何从一个名不见经传的小子辈成为一代数学
大师的奋斗历程。他的学习历程,可谓是极度忘我。听政治讲座看数学公式;去图书馆看
书入迷到被锁其中;吃饭时看书以至于根本不知道自己吃的是什么......我总有一
种感觉,他的前生也是一位数学大师,在他离世之时,后悔一生中浪费了很多的
时间,他发誓如果有来生一定要加倍抓紧时间,把全部精力放到事业和探求中去
。于是,转生今世,他就一直孜孜不倦,忘我地工作。我们可能并不搞数学,但
道理是一样的。不论学习或研究什么,都要有忘我的精神,把每一天都当作是生
命的最后一天。
一个人技术好,学识广博,伴随着他的,通常都有稳重、坚毅、平和等品质
,在我们打算去学习某样东西之前,我们要问问自己是否具备或有条件具备这些
品质。 我见过很多的人,想要学习知识和技能,但我知道他们学不好,或至少学
不到太好,因为他们过于浮躁,我称之为“月光族”,此“月光族“的意义是他们
的学习热情会在1个月内消耗殆尽。
一方面的专长,是精力和时间的积累,是需要下苦功夫的。很多人知道我编
程能力比较强,去并不知道我在编程上下的功夫。我认为学编程就像是学习语言
一样,当我们把编程熟练到母语一样的地步,就真正是学到家了,才算真正的精
通。在我们向计算机表达自己意思,让它去实现某一功能的时候,你能不能流利
的与机器对话呢?如果你还纠缠于语法、格式这些基础的东西,那么它标志着你
还没有摆脱初学者的行列。
七年前,当我来到哈尔滨,刚开始上大学的时候,我同样对C编程、电子等一
无所知。我是对编程有浓厚的兴趣,从初中就是如此,但在大学以前用的都是
BASIC,经常会用它写一些小软件或小游戏。对C语言的学习是在大学时候才开始
的。当时虽然学校开设了课程,但是我基本还是自学的。我的学习比老师程序进
度要快的多。后来,我开始看英文原版的C教程,最有用的一本就是K&R的《C
language and pointer》,让我受益很大,使我恍然大悟,C不光是用于算法描述
的,它与硬件是紧密相关的。为什么有那么多人无法理解指针,谈指针则色变,
主要还是因为他们脑子里还没有硬件层面上的模型。忘我的精神此时为我打下了
坚实的基础。我知道我们很多人在大学里都会包宿上网打游戏的经历,我也不例
外。记得当时我们寝室一共是8个人,每当大考后的晚上,我们就会集体去包宿,
可能我对网游或者其他人喜欢并热衷的一些东西生来不感兴趣,但我坐在电脑前
并非无所事事。我和其他人一样也很忙,他们很纳闷我没有加入到他们的游戏中,
我在忙什么?有人过来打探,顿吃一惊,因为我在写程序,他们会说“C语言都考
完了,你还学它干什么?”我要说在我眼里,编程就是最有意思的游戏,比你们
玩的那些好玩多了。所以,到现在为止,我还连一款网游都不会玩,从某个方面
来说也是一种遗憾吧!
我学编程起初并没有想着去作硬件,而只是想以后作纯软件。所以在学习C的 同时,我还学习了很多其它的编程语言和网络语言,比如pascal、ada、JSP、ASP 、PHP等等,记得当时还抱着一本PHP的函数手册不停的啃。在网络编程方面 ,我 是懂一些的,不过都是皮毛。现在,其实也忘得差不多了。其实下功夫最大的就 是VC。每当放假,都要从图书馆借很多VC的书,回家研究,慢慢练习。起初写的 都是一些功能单一的小软件。比如修改注册表、文件操作、菜单的编程等等。但 是这些最为基础的内容也为以后打下了良好的基础。
其实我搞这些东西,既不是学校的要求,也不是项目的需求,完全是自己感 兴趣。当时,在我身边的同学可能还没有开始接触这些。他们也许知道作软件要 用VC,写网站用PHP,但大多都没有真正的去学习,很多人是在大三、大四,尤其 是作毕业设计的时候,才开始去有意的学习这些。
有人会问,你一个作软件的又是怎样涉足硬件的呢?确实是这样,计算机专 业的学生大多还是以软件为主,尤其是对于本科生来说。像单片机、DSP、ARM等 等,还是信通专业或自动化专业接触的比较多。在我学了很长时间的软件后,一 件事情让我思想上产生了转变。
在我们学校每年的五月都有一个校内的科技作品竞赛,各系的学生将自己制 作的科技作品拿到赛场上去展出接受大家和评委的评审,最终评出不同的等级, 并给以荣誉与物质奖励。学校就是通过这样的方式来激励大家投身科研,勇于创 新。
平时比较要好的一个朋友,他本身是黑龙江省唯一的一个特长特招生。他参 加过这个比赛,获得二等奖。我问他:“为什么不是一等奖,以你的水平轻松搞 定”。他却说:“一等奖都是属于那些电子类、机械类的作品的,因为它们都有 实物,更能够吸引评委和观众。他们对纯计算机软件似乎并不太感兴趣,顶多得 个二等奖。咱们系近几年来很少出硬件的作品,所以一直与一等奖无缘。”这番 话对我的触动很大,我只感觉自己制定的方向错了。
由此,我萌发了转向硬件的念头!
大家也许也有过这样的经历,我们看到了自己的不足,前进方向的错误,并
希望对其进行改进和修改。但发现并不容易,实现的过程充满了迷茫和荆棘。在
内因与外因的共同作用下,最终丧失了斗志,因此仍然保持现状。我想,如果我
们都能坚定不移地将自己所能看到的不足真正的加以改进,我们每一个人都能成
为伟人!
我在学习软件编程的时候,其实就对硬件也有一些兴趣。但一直没有真正的
去学习,当然动手实验更不用说了。说实话,那个时候,连电烙铁都没有拿过。
还记得第一次焊电路板,要去电子市场买一把烙铁,但我当时连烙铁叫什么都不
知道,只感觉它就是一把能够熔融焊锡的“枪”。于是,我就问人家:“老板,
有焊枪吗?”老板先是一愣然后说:“焊枪?应该是电烙铁吧?!”我只好陪笑
,忙道:“对对,是电烙铁!”当时感觉很丢人,但现在想想其实我们都要经历
这个阶段。
学习一门知识,其实最难的是入门。入门之后,我们就可以知道它是怎么回
事,有了继续深入的基础,进而会激发起极大的兴趣和热情,甚至忘我。所以,
我们前面所说的忘我的境界不是随便可以达到的,它是要有技术和知识储备的,
还要有明确而宏远的目标。再引用前面的例子,陈景润之所以投入数学而无法自
拔,是因为他看得懂,知识水平达到了那种高度,并且坚信他的研究,能够解开
世界性难题“1+1”!
接触硬件必然要学习单片机,并且在以后很长的时间内都会研究它,学习它
,应用它,为它疯狂,为它忘我!有人问,你学硬件,一开始对硬件不了解,你
怎么知道就要学单片机呢?确实是这样。刚开始根本就没有听过“单片机”这个
词,计算机系也没有这方面的课程。知晓“单片机”完全得益于一次说话中同学
的只言片语!
在哈工程的这几年,对我起影响作用的人有几位,首先要说的是XX,无论在当时还是现在,我都觉得他是一个具有传奇色彩的人,或者 可以说是个挺不着调的人。其实也很难说,这个人不好描述。我总在说学习和研究需要“忘我”的精神,这个人到后来我感觉已经有点“弃我”的意味了,甚至颓废。但无论如何,他对于我的启蒙起了很大作用。
有人不禁会问:“这样的人,你是怎么认识的?”正如前文所说,都是得益于“只言片语”。XX在学校是小有名气的,主要是因为他的蛇形机器人获过“挑战杯”二等奖,以及因此而得到了央视《小崔说事》节目的邀请和专访,还有各种媒体对他的报道。其实公众看重的并不是他得什么奖,而是他研究过程中的“忘我”精神和艰苦经历。
一次谈话中,谈及他,同学说:“XX的蛇形机器人,很牛的!单片机用了很多片。”他也许只是无意之间抒发感慨,我却记在心里了。心想:“这个人我一定要找到,跟他学单片机!”
后来,我得知我那个朋友(前面提到的因软件才华而特招的那个人)与XX早就认识,并且正在协助他研发蛇形机器人第二代(第二代据说是使用了多台计算机进行无线控制,并有视频上的监控和处理,因此有很多软件方面的需求)。通过他的介绍,我来到了XX的实验室。因为在机器人方面的成绩,学校专门在41号楼给他批了一个实验室。说是实验室其实条件还是比较恶劣的,几台破电脑,椅子也是很旧的木头椅子。当时是1月份,哈尔滨的1月即使是在层里也是滴水成冰,加之暖气是坏的,进入实验室顿时寒气逼人。
“想学电子,行,那你在这干点什么吧……会Protel吗?”XX问。
“不会,现在就会一些软件编程,也不是很精!”我说。
“行啊,慢慢学吧!”说完又开始自己的了。
“那我在你这随便看看行吗?”
“行”。
我环顾四周,看看有没有什么感兴趣的东西。在一张桌子上看到了很多的芯片,整齐的插在一块大泡沫上,我问:“这是什么?”
他答道:“哦,这是五夭子,就是51单片机啊,从一代上拆下来的,留着以后继续用。”
我很纳闷:“要用这么多单片机吗?”
“蛇形机器人一共11节,每一节都要用两三片,你算算要用多少片?”
“这么复杂,怎么作啊?”
“主要还是把多机通信作好。你学单片机,你先焊个最小系统吧,这东西高手都不一定一次焊成功,看看你焊得怎么样吧”
“怎么焊呢?”
“唉,你还是拿个现成的最小系统去学吧”,说着,递过来一个小板。
这块最小系统板也许能算是我启蒙的开发板了!
拿到了最小系统板后,我就开始写我的第一个程序了--流水灯。流水灯估计每个人都知道,就是将发
光二极管依次点亮。在编程方面我是有基础的,毕竟学过很长时间的C语言了。单片机然也是用C,但
它贴近于硬件,所以对标准C进行了扩充。比如增加了可以用于定义寄存器的关键字;用于实现中断处理
的中断函数,等等。学习单片机,就要去了解这些与硬件紧密相联的内容,让我们的思想到达更为底层而基础的水平。
经常有人问我这样一个问题:“学单片机,汇编和C我要学哪个?哪个 更好?“。我的回答是:”它们并
无好坏之分,因地制宜!“ 众所周之,汇编比C语言效率更高,的确是这样!以我实际的经验来看,汇编可以使单片机达到无与伦比的运行效率。有时候我需要产生一个较为精细的时序,比如一个脉冲信号宽
度要达到20ns这样的量级,如果用C语言,就算优化再优化,可能只能达到50ns。这是为什么?主要就是因为,在编译的时候,一条C语句被分解为了若干条汇编语句。在某些对运行效率非常敏感的应用中,换句话说,就是运行慢几个ns就可能导致结果的错误,C语言自然就突显期短了。
这个时候,可能又有人会问:”哪有那么多应用要求这么高?除非是那些工业或军事的应用吧!“有一些应用我不说大家可能很难能想到和体会到的。拿我自己的一个实验来举个例子。有这样一个函数,它负责一切的数据通信。很多其它的函数都要调用到它,也就是说,它是调用次数最多、频率最高的函数。那么,这个函数的运行效率在整个实验中就非常重要了。如果它被调用10000次,每调用1次慢100us,那么,最终一共差了1s。一个对通信速率要求较高的系统,1s足以决定其成败。因此,我花了三天的时候来作实验,而用了1个星期的时间,来对这个用于通信的核心函数进行优化,让它达到最高的运行效率。最终解决方法就是用汇编对此函数进行实现,并将其嵌入到整个工程中去。用汇编确实真正让单片机飞奔起来,迫出了它最大的潜能。
|