本文主要是介绍在学生时代,要有选择性的读书,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当我在本科的时候,做毕设的时接触了一些论坛。基本上有一个共识,国内一般高校上的课,基本上是没办法满足工作需要的。如果想深入一个领域,得找一些经典书籍自学。
但是由于书的侧重点,潜在对象,年代不同,所以对经典图书也得有区别的对待。
首先,对于理论研究的书籍,先要搞清楚你想获得什么,你有多长时间。很多理论都是非常深奥的,理解、消化、运用起来会花很长时间。(有时一本两三百页的书你却半年都看不懂)。比如《数字通信》( John G.Proakis)的,难度实在太高了,我研一寒假的时候挣扎着看了一多半,感觉特别费劲,但它的确是通信原理类教材的最有深度的书籍。同理还有《检测、估计和调制理论》,写书的也是大牛中的大牛,但是整本鸿篇巨著是在太长了,而且由于时间跨度大,很多理论已经没有实际的作用了,相比之下清华的那本《信号检测与估计》就难度适中,非常适合我。冈萨雷斯的《数字图像处理》,也是名著,而且估计我以后要靠它混饭吃,就是再难,也得啃一遍。
其次,多看讲为什么的书,少看讲是什么的书。举一个我切身体会的例子。之前搞过一段LTE物理层算法。沈嘉博士的《3GPP长期演进(LTE)技术原理与系统设计》算是当时国内对LTE协议介绍的比较详尽的书籍了。但是看的我云里雾里,没啥感觉。后来看了《3G+Evolution+HSPA+and+LTE+for+Mobile+Broadband》,是一本比沈嘉的书成书还早的书,里面的有些内容已经不和协议相符了,但是看的我如沐春风,因为他解释了为什么协议要这样设计,而不是那样。让人对整个通信系统的设计有了直观的感觉。
再次,看讲程序设计(编程思想)的书,而不是编程经验的书。我在看完C++primer之后,就继续看了effective c++,感觉有些吃力。因为这种书是对编程经验的总结,假如自己的编程经验不足,那么就像是没有打通任督二脉而练乾坤大挪移一般,说不定要练上三五十年才能小有成就;但是如果自己已经跨过了初级程序员的门槛,再看这本书,估计就会恍然大悟,原来很多问题在这本书上就有解答。再比如《设计模式》,我在不同的场合多次听到过这种东西,有人甚至举了一些例子“为什么老板让你修改一下功能,高手半小时就搞定了,而你奋战了一下午还没搞定?为什么同样是写程序,有的人一个月挣10万而你一个月挣5000,而他只是写几个类,写几个接口”。但是我还是抵制住了诱惑,没有去看这本书。因为我知道,设计模式需要架构师一般的功力才能运用自如,而我只是菜鸟一枚。相比之下,杨力祥老师的《Windows程序设计》整个课程难度就比较适中,而且是的的确确讲设计的!
插一句嘴,在找工作时,很多笔试题大概分为两种(只针对程序,对于考智商、心理测试、理论知识的忽略)。一种是考编程思想的(比如一些简单的算法或者操作),一些是编程细节的(这些知识可能散布在编程经验书籍的角落),对与前者,你无从准备,只能踏踏实实的写程序(多写写数据结构很算法);对于后者可以参考《程序员面试宝典》之类的书籍,为了应付考试,临时抱一下佛脚吧。
最后,就是重视语言而不是库、框架,除非你确定将来要干什么。我也有一些学嵌入式的同学,非常想从事这方面的工作,于是在linux编程下花了很大的功夫,但是后来进去的单位却不是用linux,而是vxworks,他就觉得当时白下功夫了,不如夯实一下自己的基础。语言学的好,掌握框架其实并不难。但是作为一名学生,掌握基本的语言就够了。框架工作中需要了再补吧。相反,应该重视基本功。也就是数据结构和算法,以及解决问题所使用的数学、专业课知识。好的编程习惯可以慢慢培养,但是这些知识,估计不会有人再教你了。
我不是计算机出身,估计对于广大非计算机专业但是将来又想依靠写程序谋生的同学来说,我的观点还是有一定可借鉴性的。
这篇关于在学生时代,要有选择性的读书的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!