不破不立,破而后立
又是一年,过去了,回望去年的“我的2013”征文活动还历历在目。如今又到时间给2014做个总结了。这一年,我深刻体会了,不破不立,破而后立的概念。拿技术来说,2013的时候,上半年我用的语言是C,在钻研数据结构和算法,下半年的时候,用的语言是Java,学习Android的app制作。2014开始的时候,我以为我以后就是个Java程序员了。但是世事无常,未来的发展,总是你我所不能预料的。
三月份的时候钻研了一段时间的Java性能优化,翻阅过许多这方面的书籍,浏览过国内外相关网站,谷歌了几篇论文。值得一提是,一篇论文里面的一个观点,我在测试的时候,发现并不能提高Java程序的运行效率,就用蹩脚的英文给论文作者的邮箱里发了封邮件。也没抱太大希望,结果没几天,竟然收到了回复。大意是说:“这个写的很早的一篇论文了(long long ago),这么长的时间Java的编译器,发生了很多变化,编译器本身可以做很多优化工作了,之前的程序代码上有一些优化方法,并不会带来性能提升了,因为编译器帮你做了。” 嗯,虽然没什么干货,但是我惊叹于国外程序员的敬业,如果是国人,十几年前的论文被翻出来,指责了一番,那么肯定不会鸟你,觉得你无理取闹。同样是二三月份,时值学期伊始,百废待兴,无聊就用Java给Android做了个打地鼠的小游戏,后来上线了百度手机助手。下载量很低,但是我自信心满满,然后还去图书馆接了几本游戏设计的书来读,四月份的时候,参加CSDN的一个活动得了奖,奖励一本技术图书,我选的就是《Cocos2D-X游戏开发技术精解》。这时我认为我以后会去做游戏了。
游戏热很快退烧,后来开始学习的就是Qt了,最早接触Qt是2014年春节期间,后来呢,在用Java的兴趣退潮以后,我开始拾起C++。Java这种语言,说实话没有C++复杂。但是我发现更喜欢C++,它给人一种强大的自由度,有人喜欢Java那样带垃圾回收,没有指针,类型安全等等便利特性的语言。但是C++,虽然麻烦一点,不过我觉得我能做得更多,指针的妙用,自己对内存全权把关,重载操作符,甚至自定义关键字(实际是宏,如Qt中Q_Object)。为了学好这门语言, 我决定学一门C++的框架。在boost、cocos2d-x、Qt、mfc中我最终选择了Qt。顺带一提,Qt的读音实际是发单词cute的音,而不是国人习惯上的读法:Q、T。cute就是可爱的意思,在学习之后,确实发现了它的可爱之处,不仅跨平台,而且它的架构设计的很美,相反的,我很不喜欢微软MFC的那套架构。Qt不仅充分利用了面向对象的思想,还涉及了很多软件工程的概念以及模式。此外我学习更多的就是C++这门语言本身了,我时常发出感叹:咦,C++还能这样啊。
要学好一本语言,单纯地看语法书是不行的,要多编程,多思考。所以最好是学习一下这门语言的一个框架。Java的Android、SSH,C++的Qt、boost,Python的Django等等都是很好的框架。光阴荏苒,由于我开始玩linux,暑假的时候带回去一本Linux C编程的书,当时只是对make和makefile比较好奇,这本书里有这个内容就从图书馆借出来了。
无心插柳。暑假的