学习C++真的要三年以上才能成为高手吗?
不知不觉,再过两个月做软件就有五年了,时间过得真快。快得想不起来自已已经是个30多岁的人了。 这五年来,工作中就是不断地使用C++,经常有人问我,使用C++五年了,肯定用得很熟了,肯定是一个高手了。我无语,没法回答。其实我心里面非常清楚,我就论C++的水平,我还是停留在第二个工作年的C++水平,接下来这四年几乎没有进步,我想,有小白看到这里,一定会鄙视我,哈哈。经常听到身边的同事谈论什么要成为C++高手,写三年代码都很难成为,我就很郁闷,相当的郁闷,我也不能去反对他们,免得触犯众怒。更有些同事老是整天吹嘘什么C++这个语法,那个语法多么强大,一副卖弄的样子,我就看不顺眼。实话实说吧,我根本就对什么语法不感兴趣,也很反感那些写变态语法还自以为很牛B的程序。C++算什么?无非就是一个编程的工具而已,有必要那么去吹嘘卖弄吗?一句话,语法这玩艺,够用则已,能用简单语法写的根本就没有必要用一些很偏的语法。以我的观点,C++语法这玩艺最多学一个月就够用了。我记得当时我学习谭浩强的那本C语言程序设计花了半个月的时间,学习那本红皮的C++的书也不过只花了3个星期而已,学习汇编也只是花了一个月不到的时间。之后再也没有看过其它的C++的书了。相反,花在WINDOWS 编程,MFC编程的时间则是以数月计,比花在学习语方上面的时间多了很多,根本不是一个数量级的概念。后来学习什么计算机图形学,效果,各种算法,优化方面的时间则是更多了,我也根本没有时间去学习什么C++语法了,不过工作中有时候要用到比较偏的语法,随便看看资料就能解决了,过不了多久又忘记了,如果找不到资料,就顺便问问旁边的同事,这都是小菜一碟的事情了。多年的工作经验,让我觉得懂得程序整体架构,熟悉各种算法才是软件的灵魂。对于写代码,我从来都是用最朴实的语法去实现的,当然,这么多年的工作经验,我当然也能使用各种奇怪的语法,但是我从来不这么做,目的就是不想让看我代码的人很难于理解,而且我的代码注释相当的清晰,代码也写得很工整,不是为了让我看得很清楚,主要目的是为了让阅读我的代码的人能看得很清楚。我见过有些程序的代码,连个函数名都命名不正确,而且还不用注释,或是明明可以用简单的语法去学现,偏偏喜欢用一些很少见的语法去实现,这不得不让我怀疑写作者的用心何在?这是技术保密吗?怕别人看懂他的代码吗?我认为只有能把自已的技术无私地传授给别人的程序,才能最大地提高自已的水平,因为技术水平都是要经过交流和相互学习才能提高的,而且,你把你学到的东西全授予别人,你想要保持在行业内的领先地位,只有再去提高能力了。 语法用得再熟,如果架构能力和算法不好的话,又有什么用呢?好比做一个大楼,整体架构都没有打好,基础都没有打好,就急于往上加东西,结果做到快到顶了才发现下面存在很大的问题,这个时候想要从头再来,已是不可能的事了,于是只有拼命地想用尽各种非常巧妙的办法把这个大楼支撑住。可是这有什么用呢,现在是没事了,哪一天起了台风,哪一天有了地震,这个大楼最终还是要倒下的。这样的软件有安全感可言吗?我的观点是:用最朴素易懂的语法,去实现最复杂的功能,以架构,算法取胜。提起架构,这个看起来很空洞的话题,很多人一定会认为我是在夸夸其谈了。我先不说我架构能力如何,我见过很多很多程序,应当来说至少是70%的程序,是没有架构能力可言的,连哪个函数放在哪个文件里面都不清楚,在这里加一句代码,在那里加一句几句代码,根本就没有封装性,整个给人的感觉就是一砣屎一样乱哄哄的。这样下去,估计软件大了后,连他自已都不知道这些代码在干什么了,出BUG肯定很难找到原因。C++是一个面像对像的语言,面像对像是C++的最核心最基本的功能,这也是C++得以存在的根本原因,连这个基本功能都不会,何谈会使用C++,这也难怪有些人说使用三年都难精,但这不是C++语言本身的问题,任何一个面象对像的语言都会存在这个问题,这应当来说,是属于设计思想方面的问题。但是这对于少数人来说,懂得面象对像的概念,只不过是喝一杯荼的时间(这也许有些夸张,但其实理解面象对像其实就是这么容易)。所以一边那些程序写的代码那么烂,根本没有架构能力可言,一边又在吹嘘用了什么什么高级语法,我就很郁闷,觉得这些牛人就像古时那些做不成大事的穷酸秀才一样老爱咬文嚼字,喜欢玩玩文字游戏.心里在想:老子要是去学什么语法,一个月的时间足够把所有的都学完.可是,这又有什么用呢? 哆嗦了这么多,总结一下,C++语法是没有什么好学的,能用一些常用的则已,碰到较偏的查查资料就行了。软件的灵魂是算法和架构,是解决问题的方法。再次重申我的观点:用最朴素的语法,写出最简单的单位功能模块,组合而成最复杂的功能,以算法,架构取胜。
|