毕业这么多年了,也编程这么多年了,C++一直被我人为的避免使用中。大学学了C,还算有那么一点的动手编成内容,面向对象的课程印象中只有个Java,但老师是个信号处理专业的,上课的时候讲的最多的是Java的历史,怎么写代码,怎么编译,怎么运行一概没有提及(还是说我跷课太多?),总之我自己知道怎么写Java代码,怎么配环境来编译和运行Java代码,都到了2005年了。
所以我的代码开发思维到现在来说,还是处于传统的面向过程的方法,面向对象的思维还没能成为我身体的一部分。不过这些也确实和我的经历有关,大学就不说了,跷课多,动手少;工作后,C多C++少,第一次需要动手写C++是因为要用Qt来开发一个带界面的应用程序,没得选择啊,但说实在是,使用Qt的各个widget时候,是C++,但具体程序的逻辑实现,不好意思,还是C的,连C++的语法在这部分都没怎么出现过。我们当时的界面也比较简单,全部使用Qt自带的widget都够了,根本不用自己去创建一些个性化的UI控件,所以惭愧啊,这个项目做完,大概也只知道了C++有个namespace的东西,至于面向对象,抱歉了,至于继承,多态,封装这些经典性的精髓,毛都没碰到!至于那个时期另外的一些项目,就更跟C++没关了,跟C和汇编很密切的东西,离C++真的远了些。
再后来开始开发后台服务器程序了,由于是自己设计的,所以面向对象的概念依然没有加进去,虽然网络通讯这一块是使用ICE(ICE是C++的,提供的API也是C++的),依然是披着C++的皮,行着C的事,因为我真的不知道该怎么使用面向对象啊。不过这次比上次好的地方在于,知道了更多关于C++语法方面的内容,比如它的try-catch-exception,它的STL,C++里提供的一些高效易用的library,这些确实比C要方面的多,比如C++中的map,vector这些C所没有的东西,确实能带来极大的方便。不过在这里也差不多到头了。至于设计模式啊,软件工程啊,书是看了不少,但说实话,还真应用不到实际的那个项目中去。想想理论中那十几种设计模式,名字我都记不下来,更谈何实际应用呢?
再后来去做网游服务器了,这次纯粹是码农,不需要参与任何的架构设计工作,只是给一个功能列表,把这些功能给实现了,然后把接口写好,和别的服务器实现对接。由于要和别的服务器以及客户端之间进行对接,所以我能够得到相关的对接协议代码,因为也没人告诉你怎么和别人的服务器进行同学,所以只能自己看代码。这一看,爽了,面向对象的C++啊,但看了之后才发现,自己的C++是多么的欠缺,居然连人家的语法都看不懂,之前一直认为自己只是没有那个面向对象的概念而已,C++语法方法不至于那么差吧,但现实真TMD无情,通篇下来,居然连语法都没有看懂,这让人情何以堪!所以不得不恶补了一下C++的一些语法,当时最头痛的是C++的template,这东西以前没用过,C里也完全没这概念,后来由于交付日期的限制,我对template的研究也只到了能完成这个项目的要求,再后来,这个公司倒了……
这是我在工作中最后一次接触到C++,也好多年前的事情了,今天突然间心血来潮,觉得自己应该再看看C++的东西,因为我现在仍然是看到C++就会有点头痛,痛理念,痛语法。我这是尽量让自己多痛几次,也许多痛痛,就真的不怕了