学习思路
昨天因为网速不好,所以晚上我开始看某本叫做Think Python的书。那本书有免费的电子版,但是也已经被O’ Reilly出版了.如果在亚马逊上买,需要接近20美金。为什么明明不用钱就能看电子版的书要给钱呢?其实在看这本书之前,我已经见过非常多O’ Reilly的书了。我感觉他们出的书都是某个体系里面的大头,不是一般的有名,但是好不好学又是另外一回事。我还记得大四的时候,晚上我要在实验室里独自通宵度过生死时速33,那时我带了一本O’ Reilly的犀牛过去看(学校图书馆借的)。那本是JavaScript的书是中文版的,但看得我太郁闷了,因为翻译的简直牛头不对马嘴,感觉根本不是人肉翻译的。又过了好多年我才看到评论叫大家千万不要买那本犀牛!JavaScript这个东西可以这么说,我完全没学好。甚至可以说不知道自己学了些什么。之所以大四的时候要学习JavaScript,是因为我想做某些网页特效。一般的网页用HTML跟CSS就可以了,但是一些炫酷的东西就必须掌握JavaScript,这包括一些动画效果。现在大不一样了,绝大多数浏览器都已经兼容了HTML5,所以一些对从前来说需要一大段话的东西现在两句话就搞定了。以前我总在BlogBus的网页里放不少JavaScript,有可能是网站统计的,也有可能是某些特效的,但当我开始用WordPress以后,我很少用那个东西了,我尽量地让网页上的JavaScript瘦身到极点,但是还是会有些东西是我控制不了的。比如说WordPress自带的,虽然我没有写上去,但是后台会在生成我的网页的时候加不少东西,我一点办法都没有。除非我的后台不用WordPress,我才能做到我想要的那种纯净,但显然现在我没有那么强大。或许某一天我把整个网站静态下来了,我就可以这么干了。
回到Think Python这本书。第一章的一开头,他们就说到了计算机科学家。之前我好像没听说过这种说法。他们是这样给计算机科学家定义的:
计算机科学家像数学家一样,使用规范的语言来阐述思想(尤其是一些计算);像工程师一样设计、组装系统,并且在多重选择中寻找最优解;像自然科学家一样观察复杂系统的行为模式,建立猜想,测试预估的结果。计算机科学家唯一最重要的技能就是『解决问题』。解决问题意味着要有能力把问题进行方程化,创造性地考虑解决思路,并且清晰又精确地表达出解决方案。
所以他们必备清晰的思路。以及非常有条理的逻辑。把大问题拆分为小问题,然后逐个击破。我已经活了34年多,看到计算机科学家这个定义以后,我才发现原来自己就是这种人。还记得从前大学的时候,专业课老师给我们解释过科学与技术到底是什么东西。科学就是研究一些比较抽象的概念。而技术是解决一些实际的问题。我属于那种二者兼有之的类型,一方面我对未知的世界充满好奇心,但另一方面,在解决具体问题的时候我会非常带劲。工作了10年有余以后,我觉得其实科学与技术这两种东西并不是从前老师定义上的那么黑白分明。科学你要深入进去,你就必须用技术探索,而技术之所以存在,就是为了要解决一些人类未知,但又很想知道的东西。
我不知道其他人学习编程是为了什么,但我知道,我学习编程是因为我想实现一些我想做到的事。此刻,我只是想做到一些我想做到的,或许在以后,我会把这变成是别人很希望我能帮他们做到的。