C语言内力修炼与软件工程


虽然如今很多人,特别是软件工程理解的比较好但是还没有达到满瓶子的那些人,他们很鄙视使用c语言重新来做,他们十分推崇c++等OO语言,认为可用的库比较多,从而可以使开发效率更高,可以使代码可读性更强,可以使代码维护成本更低,他们认为你使用c语言来实现一个c++库里的功能是在炫技巧,是学院派行为…然而这种说法是不正确的,打出去的一招一式目的有两个,一个是为了表演,另一个是为了打倒对手,这种招式一定要简单,漂亮,高效,“可读性强”,然而内力的修炼却是需要自己一丝不苟的孤独完成的,哥修炼的不是内功,是寂寞。修炼内力时万万不可玩软件工程,如果你不能简单无误写出快排代码,那就慎用qsort。
当你修炼完成,觉得自己已经很不错的时候,怎么办?直接投入软件工程项目么?差矣。如果你这么做了,你就会受到“鄙视”,你就会被认为在炫技巧,那么怎么办呢?
忘掉你修炼内功时的心法,如果你真的练成了神功,那么它早已和你合为一体,忘掉心法,完全忘掉心法,忘掉你的每招每式,内力逼出的代码而不是心法指导的代码才是最优美的代码。如果你没有忘掉那些心法,那么你会时刻想去使用它们,而它们早已被封装在神剑中了,你需要的是握紧这把神剑去PK,而不是重新铸造一把神剑。
c语言是一门语法超级简单,又不必去在语言本身去深究的语言,然而它却可以做出其它语言很难做到的超级复杂的系统,比如操作系统。倒不是说其它语言不能实现操作系统,而是那不是它们的舞台也不是它们的战场。简单就是美,任何一本c语言的书,都不会涉及很复杂的东西,然而内功深厚的大侠,他们却可以使用c语言,写出世界上最美的系统。张三丰最终给了周芷若一本《道德经》,说那就是他的秘诀,其中的以柔克刚完全是一种内力的体现,此谓上善若水(虽然我一直认为它下流至贱),整个《道德经》中没有什么心法,更别提在里面去找到如何对付乾坤大挪移了。
我想说一下一个现象,那就是为何我们很少能做出好的软件,其实原因很简单,那就是我们的软件开发人员,或者说程序员,被分成了两个隔绝的群体,一类是纯内力修炼者,另一类是纯软件工程者,这两类猛一看,都是高手,实际上却都残缺了另一半。如果你是内功修炼者,那么你会鄙视那些只会使用库堆积代码的人,你关注的是实现,他们关注的是接口,然而好的软件一个标准就是接口的设计,一个只会实现一些hack的人是永远做不出真正的软件的,他们能做的只是写出一个程序而已,只关注内力的程序员,他们可以写出一个很炫的算法,解决一个很多人都解决不了的问题,然而他们却不懂得如何组合这一切,不懂得如何包装自己的实现,更不在意这种技巧会有什么用;另一类人只关注软件工程,认为OO就是银弹,能不自己动手就不动手,实际上的结果就是研发滞后,他们只是在使用现成的库,他们只在乎业务逻辑,只在乎封装,却很少去关注实现,由于他们把自己和库实现者看做两类人,因此他们只是简单的拿来,他们可以做出一个很漂亮的系统,完成一款实用软件,赚到一笔钱,然而他们不在意自己站在谁的肩上。总结一下就是,第一类人关注机器,企图挖掘机器的所有特性,而第二类人关注人机接口,关注人如何使用机器。可悲的是,这两人一直都在互相内战,如果他们联合起来,我们的软件振兴指日可待。
…于是舍人相与谏曰:“臣所以去亲戚而事君者,徒慕君之高义也。今君与廉颇同列,廉君宣恶言而君畏匿之,恐惧殊甚,且庸人尚羞之,况于将相乎!臣等不肖,请辞去。”蔺相如固止之,曰:“公之视廉将军孰与王?”曰:“不若也。”相如曰:“夫以秦王之 威,而相如廷叱之,辱其群臣,相如虽驽,独畏廉将军哉?顾吾念之,强秦之所以不敢加兵于赵者,徒以吾两人在也。今两虎共斗,其势不俱生。吾所以为此者,以 先国家之急而后私仇也。”廉颇闻之,肉袒负荆,因宾客至蔺相如门谢罪。曰:“鄙贱之人,不知将军宽之至此也。”卒相与欢,为刎颈之交。


你可能感兴趣的:(C语言内力修炼与软件工程)