纪录我的编程之路

今天恰好是我编程一年的纪念日,回想起去年这个时候对编程懵懂的我安装VS2012时的兴奋,到今日还算是入了编程的门(仅仅是自我感觉:P),心中还是有不小的成就感的。此刻闲来无事,就纪录下我这一年来编程的一点经过和感悟吧。

确切地说我第一次接触programming并不是在去年,相反我很小的时候就接触了Logo语言。单单是说名字的话可能很多人并没听过,但提到一只带着画笔的小海龟可以在你输入特定指令的情况下做出相应的回应,例如画个图形,可能很多我的同龄人都会恍然一悟的感觉吧。但是由于当时年龄太小,所以并没有从中学到什么,也没有感受到编程带来的快乐。

真正让我开始学习编程的应归功于我在学校选修的一门html的课程(但html实际上并不算是编程语言,因为没有图灵完备,可以归类于标记语言)。就像人类的极致乐趣在于毁灭和创造一样,从html我感受到了仅仅用头脑就可以创造一个我独有的世界的快感。但是当时学校教的内容太浅,无法满足我刚被撩起的强烈兴趣,因此我决定认真的选择一门语言开始编程的学习。

由于刚开始什么也不懂,粗略的在网上浏览了一下相关资料,我决定选择c++,这个在国内大学被普遍用于入门的语言。其实后来我才知道,在国外的话用java和python入门更加普遍。但是如果让我重新选择的话,我相信我是不会更改的。因为c++的难度系数比较高,虽然学习曲线更加陡峭,但后来学习其他语言的话是较为轻松的。例如java语法层面的掌握我仅仅用了3天左右。

对我来说迈出编程的第一步通常是最难的,找到开发工具,安装并设置工作环境,选择合适自己的教程,以及强迫自己适应c++的编程思想,都是需要努力克服的障碍。但是一旦第一步迈出之后,后面的学习就相对于比较轻松了。兴许是我对编程有一点talent :P,像对刚入门的初学者来说比较难理解的概率,例如指针,函数等,我都较快的上手了。在这里我冒昧的介绍一下我的学习方法:学完某一个概念后,一定要积极的实践,最好是能够创造条件给自己设计一个小项目。例如学完赋值和运算符后,可以做一个简易的四则计算器,学完函数后,可以做一个解二元一次方程组的program.

我做的第一个比较大的练手是控制台下的贪吃蛇。虽然当时并没有学到链表,但很神奇的,我解决蛇身一起移动的思路和链表非常相似,可以说就是链表。后来当我学到链表时,我才惊讶的发现这不就是当初我写的那个吗(笑)。解决了蛇身移动(包括控制等)后,我就没什么兴趣了。因为判断碰撞墙壁什么的对我来说很繁琐也并不能提高我什么,因此这个小项目就搁下了。但是很久以后我又用Qt做了一个带画面的完整版:P

大概2个月左右的话我就基本把c++的语法层面学完了(仅仅是语法和概念,毕竟life is too short to learn c++)。期间用控制台用完成了例如学生管理档案和俄罗斯方块等项目,包括我自己设计的控制台小游戏的半成品。这时也许自己已经厌烦了console的单调和枯燥,于是想寻找一个能绘制漂亮画面的开发框架。在众多c++GUI框架中我先选的是mfc,然而不知为何系统老是提醒我缺少这个那个dll.一怒之下我愤而选择了Qt,这个好安装多了,一路确定点到底,一个漂漂亮亮的IDE就出现在我眼前了。

也许人都有惰性,对新东西都有些抗拒。一开始我用Qt是很不习惯的,一是因为这是第一次接触正规的文档(没错,学好Qt的精髓就是阅读文档)而无从下手,二是我还不理解Qt的signals-slots机制,因此开始是非常吃力的。好在在我自我逼迫下,总算是渐渐上手了。Qt的文档写的是非常赞的,近乎完全的OOP机制也让我有时候都会有种写java的错觉。

学Qt的时候我写了一些项目。包括带有界面的学生档案管理系统和贪吃蛇。另外还有表达式计算器,这个的算法也是我自己琢磨出来的,比如就是先寻找"(" 和 ")" 然后寻找/和*最后寻找"+"和"-"等。后来我才知道还有好几种比这个优秀很多的算法,现在在看当时写的真是惨不忍睹 XD. 

后来就想找一些大型的Qt开源项目练手,于是就琢磨起了太阳神三国杀。当然太阳神三国杀是c++实现底层,上层逻辑是用的lua.没办法我只能先学起了lua。好在lua非常简单,几天就基本掌握了,在参照神杀的文档写了几个武将的lua后(想玩的可以找我要源码,感觉技能设计的还是很棒的),我就没什么兴趣了。刚巧这时候county的tennis season开始了,我又是学校网球队的成员,因此每天放学后都要训练几个小时,回到家里基本就躺床上了。因此有几乎3个月都没碰编程了。

比赛完之后我又花了几个星期捡起落下的c++,然后想到自己数据结构和算法的基本功都很差,于是开始学习算法导论这本书。然而断断续续的看了一段时间后由于自己毅力太差又放下了。这时候暑假已经开始了,我又参加了当地的community service,每天都要在图书馆帮忙做shelving。再然后就是回国一个月,这段时间也是没怎么碰c++的。哦,值得一提的是暑假我报了flvs的APCS,学的是java。然而感觉老师并不很好,学的进度也很慢,对我吸引力并不大。但是经过c++的打磨自我感觉对java的掌握是非常快的。

从国内回来我就开始接触CoCo2d-x引擎了,因为我从很早开始就有想要做出一款好游戏的梦想。最好是像limbo那样棒的独立游戏。现在虽然开学了,我的senior year也有很多AP课程导致比较忙,但是希望我能尽快学完c2x,从而能离自己的游戏梦更近一步。

你可能感兴趣的:(纪录我的编程之路)