学新知识,最好是看教程,然后看实例。我知道的,但从来都不肯遵守,当然也付出了与之对应的惨痛代价。
我最开始学编程,跟大多数人一样,是在大学课堂里。那时候完全没有基础,除了看教程还能怎样?幸好我的性格和编程很和,入门很顺利,积极性得以完好保存,还小有增长。
一年之后的暑假,我决定挑战游戏编程。当时我学得最好的是java,就找了一本用java做游戏的教程学了下去。那时候每天上午在烈日下走一小时去图书馆看书抄代码,晚上回家把本子上的代码输入电脑编译调试。这过程虽然略显艰苦,但每天重复,也就习惯了。
每天看一点点书,晚上回家实践,这样慢慢推进,是我至今为止评价最高的入门方法。可惜现在会一点儿了,反而没法像原来那么安心了,总想找捷径,找最好的入门教材,最新的api,最受认可的示例,最佳的开发框架,结果大量的时间耗在寻找和分析上,入门本身反而被搁置了。这就叫,分析瘫痪吧。
除了“按部就班”和“分析瘫痪”,我还有第三种学习模式,就是先确定目标,然后为了实现这个目标而学习周边的知识。这也是一个效率比较高的学习方式,但作为入门方式来说有点太急躁了。我在这种模式下入门成功的例子有lua,shell命令。其中lua因为简单技巧就满足了我的目标,结果导致我至今没有掌握metatable等等lua精髓的用法,比较遗憾。shell命令我现在也是用到了现查,我觉得大家应该都是这么入门shell的吧(有人真的买一本shell入门,然后从头看到尾来入门吗?)。
在这个模式下入门失败的例子,或者说还没有顺利入门成功的例子有:cocos2dx,pomelo框架。cocos2dx连我自己都感觉到我太急了。因为我写了一辈子2D程序,也知道这个领域本身难点很少,所以是以一种非常自负的态度去学的。起点高当然要求也高一点,我要自己直接找到最能合理使用cocos2dx的开发模式,而不仅仅是实现功能。这下可好了,要最优就要充分理解,结果战线拖太长,热情受损严重,还没能保底“学会实现功能”。不过我也要讲讲我的借口,就是cocos2dx的接口变动频繁,没有完善的文档和入门教程。因为我追求最优,想直接学习最新的api,所以对仅有的一点点教程也很挑剔,文档又不全不新,跨平台和浏览器游戏编程又是我很陌生的全新领域,各种问题纷纷浮出水面,围攻我的学习热情,现在热情已经出现问题,不足以支撑我以高速学习状态前进了,可惜。
pomelo的入门虽然有点慢,但其实还算是顺利,之所以归类为“还没有顺利入门”,是因为还没有用pomelo作出什么作品来,不足以证明我“已经入门了”。cocos2dx和pomelo都是我下一个demo里需要用到的新知识,本来我想先学好cocos2dx做个小客户端,再学pomelo做服务器端的。照现在看来,可能命令行服务器端会先完成也说不定呢