记-码农的“启蒙”之《程序设计语言-实践之路》和《面向对象分析和设计》两书
一些废话
眨眼间已工作走出校门个年头了,总觉得时间过的好快(一把无情的杀猪刀)。
好长时间木有写过博客了,有时候突然之间好多想说的,却又不知怎么下笔;总是这样,也许是不善于语言表达吧(人在不愿做某一件事的时候总是能找出一千个理由来说服自己)。
今天想谈谈阅读的一些体会。我是始终认为在刚开始工作的几年中是一个人进步最快的时间段,也是“部分决定”你以后发展方向的一个阶段。这个阶段中的进步来自于项目经验、自己的领悟、前辈的传授、阅读所得(博客、图书)等等。其中唯有自己主观可控的只有阅读所得以及自己的领悟(项目经历也好、阅读也好);因为项目经验+前辈传授这是外部环境决定的,这些都是外界不可控的因素。俗话说的好:靠山山会倒 靠人人会跑 只有自己最可靠。所以我平时愿意去花时间来用在我主观可控的项目上(也就是阅读啦)。买来不少认为有用的书,也确实吸收一些东西,无奈选择多了烦恼也就来了,陷在阅读的泥潭中不知那些有用那些无用、那些现阶段那些以后看。后来仔细分析回想一下,滤清一些脉络,脑子里面蹦出我认为对我影响最大的两本读物《程序设计语言-实践之路》和《面向对象分析和设计》;其实发现这也是对应我个人成长的两个阶段。
程序设计语言-实践之路
这本是在我刚毕业时候接触到的,当时的工作内容也就是写写代码,模式、架构也没感觉,就对语言有了兴趣,陷于语言的沼泽中,被一些语法层面的东西蒙蔽,困在其中,不得语言之要领。理不清楚为何js里面写个闭包这么自然,而在c#中却如此丑陋(还是个假闭包)。
期间也想过其他途径去解决这些疑惑,clr via c#、.net本质论、深入理解c++对象模型、javascript语言精粹等等;发现越来越不对劲,这类书都是讲细节本质的,陷到细节里面越来越深,越来越想不明白。后来的一本JAVASCRIPT语言精髓与编程实践突然“有点”茅塞顿开的感觉,读完觉得不过瘾,遂在它引用的书籍中发现这本《程序设计语言-实践之路》。并非是说其他的书无用或者不好,而是每本书的视角不同、关注点不同而已;在我当时的情况下正好是这本给了我一个以设计语言的视角来(抽象层面设计,而非实现层面)看待语言,正是当时所需。这种感觉用一句唐诗再合适不过了“不识庐山真面目,只缘身在此山中”;只因以前都未曾想过要跳出语言这座山来看语言,那可真是一个山头一个山头,偶尔还向山脚刨刨,不晕才怪。
这可以说是我所经历的第一个阶段,现在也不敢说我就理解了什么是语言,但是起码我不再受其困扰、也不去争论哪个语言好那个语言坏了,所以对我来说这本书才这么印象深刻。
有了这个基础后清晰多了,往深了去sicp、编译原理等想去了解也不会那么迷茫了,因为在我的认知体系中已经为它们划分出应在的分支中了。
面向对象分析与设计
这本是前段时间到手的(正在读),这段时间一个项目刚刚告一段落,而在期间遇见很多苦恼,设计项目框架的时候总觉得乱糟糟的、项目结构也觉得不清晰合理,导致我们开发过程中走了不少弯路(还是木有经验啊,哎)。还是以前的老方法,各种架构设计、模式方面的书弄回来啃,借用豆瓣上有人说的一句话(面向对象的范式就是一些正确的废话而已),这些模式、架构什么的对于我这个没有这方面经验的人来说来说也是一堆正确的废话而已,也许是太笨,读不出个所以然来。
这本书中现阶段我的理解是它描述一个怎样去利用OO去分析的过程,也就是在设计和架构项目的最前期阶段。或许是受那些设计模式、架构设计的书的影响,总是再不经意间就在项目一开始套上各种的模式、时髦的东西等等,最后实践也证明这种东西根本就不是项目真正所需。原来我的根源是根本没有进行切实的分析就上了各种模式、架构。而正好在这期间读到了它和另外一本重构与模式,才算是有所体会。
终于,这块知识结构也在我的认知体系同找到了应有的分支。
后话
最近打算把这两本书的读的心的体会写两个系列的文章,年底前完成。争取2周能出一篇吧,算是给自己点压力。
- 程序设计语言-实践之路系列
- 面向对象分析与设计系列
又是一个毕业季,回想自己走过的一些弯路,在这里也给一些新人一些建议,适用与否这就要看每个人的主观意愿了。
- 小心迷恋技术框架(这些东西短期内是可以让你有些许成就感,比如快速写出某某程序,但同时也会阻止你的了解技术本质的动力)
- 切忌语言崇拜(具体的语言是会影响你的思维方式的,一不小心就会被语言禁锢你的思想)
- 解决问题的前提是你要彻底的理解问题。
- 自己思考、要有质疑精神。
不知园友们有木有这种类似的感触,欢迎来交流探讨。