单纯地“精通C++”之后的体验是:“听过了很多道理,却依然过不好这一生。”
由于很多程序员上来接触的就是编程语言,所以以为编程语言就是计算机全部。其实不是的,就好比对于作家最重要的不是词汇量和语法知识。对于律师来说,了解法律条文也只是基本要求。对于计算机科学来说,编程语言不过是一个来和计算机沟通的工具。你精通C++,所以这个工具用起来很顺手,指挥起计算机来得心应手,然后呢?背得过新华字典,就能写得出美丽的诗篇?错。计算机科学的知识不是一门编程语言能概括的,任何一门编程语言都不行。
个人觉得具体来讲:精通C++之后,根据学习目的的不同,可能有如下几种体验:
1、为了从事C++相关开发的。刚开始信心满满,但最后通常会悲惨地发现:“填不完老人挖的坑,扶不正新人砌的墙”。毕意精通C++的还是少数,而优美的代码只是一个现代童话。所以开始大声疾呼:大家要守规矩呀,不能用裸指针,不要重复造轮子,要遵从开闭原则,要有设计模式,要遵从查询命令分离原则,要注意可读性,要有单元测试,要充分利用类型系统,要尽可能地在编译期发现错误……结果是你成功地保证了公司代码的长治久安,或者你已被气死在半路上……根据统计数据显示,呵呵……
2、工作中用不上的。首先祝贺你。(咳咳,我真不是C++黑……)由于C++是一个多范式语言(C++11后连函数式都全了,bravo),所以我相信精通C++的人再看别的语言,那几乎都是C++的子集呀……但是所谓入乡随俗,你也一样要了解其它语言中通用的风俗,才能成为一个优秀的程序员,而且C++的好处是它就像一个有着透明外壳的精密仪器,你总是可以看到它最深处的秘密。但别的语言通常没有这么透明,会隐藏很多实现细节,要习惯一会儿。
3、有志于研究编程语言的。干嘛学C++?有研读C++标准文档的时间,还不如看看《范畴论》。C++不过是C上面打了一大坨补丁。精通C++之后的感受最可能是:我艹,这肯定不是先进生产力的发展方向,肯定不是最广大程序员的最根本利益……我还是瞅瞅Lisp之流是不是靠谱吧……
4、有志于研究计算机科学某个领域的。不错,又会了一门外语,以后可以看C++写的代码了,而且如有需要,也能写写C++代码了……但是时间花得真是不少呀,罪过罪过,赶紧继续我的本职研究去吧……
5、搞培训的。哈哈哈哈,妈妈再也不用担心我的饭碗了……《Effective C++》的作者在D语言大会上的一个讲座非常好,其中的一句话是:我最希望D语言社区将来不需要像我这样的人……我没有保存那个链接,但是这个讲座真的很不错,大家可以搜搜看看……
精通C++真不算多大点儿事儿,而且回报也不大,所以才没那么多人“精通”。如果单纯只精通C++的话,体验就是:“听过了很多道理,却依然过不好这一生。” C++虽然已经包含了无数的细节,无数的规则,无数的奇技淫巧,但现实世界却有更多的细节,更多的规则,更多的奇技淫巧……
作者:旺旺
编程语言是没有必要精通的,精通编程语言会提高你写程序的效率,但不会提高你写程序的能力,你用C++不知道如何解决的问题,换用JAVA一样不知如何解决。