首页 > 代码库 > 我的2014:迭代的岁月,重构的人生
我的2014:迭代的岁月,重构的人生
不破不立,破而后立
又是一年,过去了,回望去年的“我的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比较好奇,这本书里有这个内容就从图书馆借出来了。
无心插柳。暑假的时候,拿起这本书,开始学习Linux C 编程的其他概念。比如进程管理,fork、exec函数等等,文件管理,文件描述符,各种操作等等。由于上半年开了“操作系统”课,这时候,学起来,感觉在一点一滴地印证曾经学过的概念,心中暗爽,果然各种理论还是要作用于实践的。Linux系统相关的概念令人着迷,之前很多东西都是云里雾里的,现在开始慢慢探究一些本质的东西,当然了,C语言,在用的过程当中,蛋疼的地方也是不少的。少了C++面向对象的那层封装,暴露在眼前的是一大堆函数,思维理解记忆的复杂度都有很大提高,这还不包括C语言本身的trick。不过,我并不讨厌,也不抵触C语言了。我整个编程语言的学习之路是C -------- C++ --------Java。然后又是从Java -------- C++ -------- C 。自己想来着实好笑,从面向过程到面向对象,我开始讨厌面向过程的繁琐。然后我竟又从面向对象返回面向过程。这时我并不反感面向过程编程了,当然也没不厌倦面向对象,只是深刻理解了一个“物尽其用”的道理,但更像一个返璞归真的道理。如今是“看山还是山,看水还是水”
古人说:用人如器。是在讲用人的时候,要依据这个人自身的特点,安排到合适的岗位上去。其实 用编程语言又何尝不如器呢?每个语言都要自己合适的岗位,语言本身并无高低贵贱之分的,不过程序员对于不同的编程语言却有好恶之别。语言之争我很早就摆脱了,但我到底好哪个语言呢?这长久以来的探索,慢慢水落石出。曾经我认为是C++了,但其实应该是C/C++。C语言自有其长盛不衰的道理,这两门语言虽然很像,但应该区分开来,因为他们各自的职能是不同的。尽管C++在语法上是兼容C的,但你并不应该用C的思想来写C++,同样的C语言有些地方也是C++所不能取代的。
到了,2014年第二个学期开学的时候,我开始努力学习C了,除了用于Linux编程的POSIX API外,我还在学习C语法本身。呵呵,时常会这样想,如果当初我没有去经历Java,没有花功夫去学做Android的app,而是一门心思放在C上,或许现在一定略有小成了。不过呢,时间不能倒流,有些事只有经历过,才能懂。没有经历过,你总想去尝试,不尝试的话,就不知道自己喜不喜欢。所谓横看成岭侧成峰,远近高低各不同。每一种编程语言也是如此,要识得庐山真面,一定要亲自去攀登,去仰望,去俯瞰。
“千淘万漉虽辛苦,吹尽狂沙始到金”。年轻就是资本,年轻人什么没房,没车,没钱,没事业,但是有的是时间。年轻就要去尝试,勇于碰壁。曾经学过的Java,Android,包括Qt,现在都碰得不多了,想到当初也是花了大把时间的,但是人生就是如此,用于舍弃,有舍才有得,固步自封必将走投无路。不破不立,破而后立。要想获得大智慧,就要经得起大折腾。代码是需要重构的,人的思想、认知、生活也是要不停重构的。
开源照进生活
从去年11月份注册了github,但是真正开始使用github是2014年二三月份的样子,开始我也是一头雾水,在Windows上使用github的客户端,来管理代码,尽管是客户端,但是在配置的时候也是遇到了很多麻烦。原因是对于git的很多原理和理念不够清楚。后来慢慢熟练,直到后来,我开始平凡使用Ubuntu系统的时候,我开始了解了ssh协议,了解了git的各种命令。开始在终端使用git命令来管理代码。感觉和客户端比起来,一个字——酷。然后Linux使用的越来越多,陆续学到了很多命令,日常管理也没问题了。在github上,有一种很通用的文档编辑语言——markdown。开始我看到别人那些README.md的文件,我也是一头雾水,不知道怎么实现的那些效果,后来花了两天的时间,来恶补这门语言,在github上对于markdown语法各种测试。github上的markdown与一般的markdown是有区别的,github对其做了一些功能提升,比如复选框列表、代码高亮、表格等等,称之为github flavor markdown(简称GFM)。然后在csdn上发表了介绍markdown的博文,并且github上建了一个仓库,去演示效果。
六月底,学期末的时候,我在github上建立了一个组织,是我们学校的开源小组。我想聚集更多的人来一起交流Linux,交流开源理念,交流各种技术。暑假的时候我开始在贴吧发帖,在其他群里宣传,慢慢地聚集了一些人,当然我们并不是社团,我觉得开源小组就是一个互相学习,互相交流的地方,尽管我们没有线下活动,一些交流都是在线上。开始我选择IRC做交流工具,后来发现很多人都不习惯,所以还是建立了QQ群,来聚集大家。这个开源小组没什么动静,开学以后交流的少了很多,当然这是题外话了。
同样是在暑假,我开始学习使用Vim,很早就听说过它,编辑器之神,但是一直没有兴趣,因为用惯了VC那种一站式编程,编译的工具。现在由于敲命令敲的多了,就不想把手抬起来,去摸鼠标了。然后学习了Vim之后,几乎所有事情都在一个终端里完成了。感觉 perfect。github上有一个repo(仓库)是Vim的配置文件,直接wget下来他的安装脚本,再执行,就能用,非常easy,我也给他提交过几次PR(pull request),修复了一些.vimrc文件里的bug,增加了一些功能。此外呢,我还给CSDN的CODE翻译过开源有关的文章,后来发现Linux中国在github上的仓库,专门用于翻译各类文章的,先认领文章,然后翻译完成提交PR,合并后,过一段时间会发布到Linux.cn官网上,我的英语很蹩脚(囧),不过当时我也是乐此不疲的看自己翻译的文章被发布,被其他网站转载,不过下半年开学后,时间少了,参与度不高。。
热情过后的百味人生
十一月份的时候,由于在CSDN一位博主的博客里,了解到了电视剧《苏轼》,后来我就找到PPTV上的资源来看,画质很差,但是我还是坚持看完了。了解了苏轼的百味人生,在他的一生中,他所涉猎的领域十分广泛,并且在其他方面也开创了多个历史先河,值得一提的是,中国历史上的文字狱就是苏轼被卷入的“乌台诗案”开的先河。看这部剧呢,我也纠正了之前的一些错误认知,以前我知道苏轼是深陷以王安石与司马光为代表的新旧两党的争斗之中,并且被新党打压,卷入了乌台诗案。但是,当初打击他的并不是王安石,那时候,由于王安石用人不当,所有新党已经不能由其掌控了,王安石被罢相后,吕惠卿上台,是他搞出了乌台诗案。可笑的是,在旧党重新执政后,苏轼写的一篇贬吕惠卿的诏书(当时拟诏书,是苏轼职责所在)竟然变成了千古名篇,不仅在当时引得天下文人传抄,就连现在也薄有名气,使得吕惠卿当真落得个遗臭万年的下场。不过好景不长,苏轼对旧党也是正见颇多,所以又不容于旧党,因而一贬再贬,最后不仅过了大庾岭,甚至被贬到海南。当时的海南可以尚未开化的蛮夷之地(汉人蛮人杂处)。
《贞观之治》是在看完《苏轼》后,我接着看到一部历史正剧。很奇怪这些历史正剧网上的资源都不多,画质也很差。据说是广电对这类题材的电视剧,审查很严格,貌似《苏轼》曾被禁播三年。之所以看《贞观之治》而不是更有名的《贞观长歌》,是因为“长歌”更像一部风月剧,并且虚构地成分很大,对历史的考究也不精细,从网友的评价来看“之治”的口碑更好,布景,服饰都尽量还原唐朝风貌,“长歌”为了吸引现代人眼球而不够真实,当代许多古装剧,你不看剧情根本无从区分朝代,演得唐宋也穿明清的衣服。比如“之治”里面没有床,只有席子,没有椅子,当时他们坐的那个器具叫什么,我也不得而知了,很多时候,人们是席地而坐,或跪坐地上。因此如今日本民众的生活习惯,日常起居,我们就不会奇怪了,因为中国的唐朝大致也是这样的。还有一个多年以来的误解,也被这部电视剧给纠正了,那就是李世民的四弟是李元吉,而不是李元霸。很多隋唐的小说里描述李元吉是李家老三,这是不对的,而且历史上根本没有李元霸这种逆天的人存在,李世民的老三是李玄霸(可以认为是李元霸的原型),因为描写隋唐的小说(比如《隋唐演义》、《说唐》)都是成书于清代,所以要避康熙皇帝的讳(康熙名玄烨),因而改为了李元霸,但是历史上李玄霸也没有小说中这么吊炸天的,玄霸和元霸唯一的相同点是他们都死的早。唉,再看看近几年的电视剧《隋唐演义》还有拖沓剧本,不断续拍的《隋唐英雄》真是渣的可以,误导了多少观众,我认为这些历史翻拍的时候要注明真实的历史是什么样的,剧中哪些地方虚构了。可笑的是,《贞观之治》这类描写真实历史的电视剧被管制的很严格,播放量很低。像《隋唐英雄》这样完全娱乐大众的电视剧却大肆地充斥荧幕。
动漫方面,2014年最大的收获就是开司的“赌博系列”,包括《赌博默示录》、《赌博破戒录》、《赌博堕天录》以及《赌博堕天录 和也篇》。前两部动漫化了,并且电影化了,藤原龙也主演的(吐槽:藤原龙也演了好多动漫的真人版啊,其他的还有《死亡笔记》夜神月、《浪客剑心》志志雄真实)。虽然“赌博”系列的画风一般,或者说画风比较“有个性”,但不得不承认论剧情真的是神作。每一场赌博都跌宕起伏,扣人心弦。赌博过程比较烧脑,各种心理战和阴谋诡计。除此之外,也见识到了人性。普通人卖友求荣,有钱人的麻木凶残。比如铁骨桥上的人推人,皇帝牌(E Card)那局,用眼睛和耳朵做赌注,后来的面纸盒抽签一句,开司输了,就被砍掉了手指。漫画第三部中,开司在赌局当中,因为钱不够,就像兵藤和也借钱。和也猥琐一笑,拿出了一份人体器官价目表。以开司所借钱款的数额来看,所有的器官基本上都用上了,所幸的是开司赢了那一局。在“和也篇”开篇,开司要和和也赌一局,和也带开司来到一个地方。那里的场面令开司毛骨悚然,因为和也已经为开司准备好了坟墓已经墓碑。
年底了,把网络剧《毛骗》和室友又温习了一遍,不仅搞笑,而且见识到了各种骗人手法,惊叹与骗子门的头脑,对他们而言,骗人不仅是技术更是艺术,尤其是每集结尾渲染得和柯南一样,解开谜团。不过不得不吐槽的是,第二季第15集快一年了还不更新。。。
念念不忘,必有回响
我的2014:迭代的岁月,重构的人生