由读书无用想到

 
前两天在一个论坛上看到一篇帖子,上面列举了很多经典书籍,推荐给大家。看了下面的回帖。有很多说看这么多书是没有用的,看几本就行了,看了这么多书也学不到别人的经验。
我惶恐了,自己非常喜欢看书,难道以前自己做的都是无用功。看了<<C++网络编程>>后面的参考书目列表,我释然了。Douglas C.Schmidt是个真正的专家,他看的书是我的N倍。
虽然只是看书的确很难完全学到作者的经验,但多读书的确是有好处的。
其一。那些好书有个勾划重点的作用,在实际中遇到问题,通常是解决了,就过去了。没有重视,下次还可能遇到同样的问题。而看书的时候他会给你反复强调,让你遇到问题时记忆犹新。
其二。有很多东西,很多经验是穷极你一生都无法总结出来的,很多作者在他们多年的经验上把那些有价值的东西提取出来。这些东西不是网上那样的一,两页的浅浅的谈一下的短文章。这种东西只有看书才能接触到。
其三。看书可以开阔眼界。有很多问题如果你只知道一个方案实现起来可能特别复杂,但如果你见多识广,那么可能可以用另一种方法实现简单得多。
当然只看书不实践,那么容易犯教条主义,不分情况的相信大师们的话。
 
还看到另外一个帖子,是那种所谓的月经贴。
“我学C++有一段时间了,现在想深入学习一下,想结合一个大一点的项目做,来学习,请前辈推荐一下做什么好”
然后下面是经典的回答“写个操作系统,或者写个编译器。”
我不知道这么回帖的人抱的是什么样的心态,也不知道这样回帖的人有几个真正去写过编译器和操作系统。一看问的人就是连语言都还没有掌握纯熟的初学者。让人家去写操作系统和编译器简直就是打击人家的积极性。好像这样说了可以提高自己身价是的,让人家以为你很牛,有能力写操作系统和编译器。的确 Donald E. Knuth 在大学时就写编译器卖,但人家没有上大学之前数学等学科就已经很牛了。难道能指望人人都和 Donald E. Knuth 一样。
在学校中也是这样,我们的《软件基础》的老师(教微机原理,数据结构,操作系统)。上课头一天就在那给我们说,如果你们学得好,可以教你们写个操作系统内核。拜托,她又不是第一次教这几们课了,我们是通信专业将来搞软件的没有几个,她能指望大家粗浅的学习了一下这么几们课后就写个操作系统内核出来。到期末了大家操作系统没有写出来,忙着怎么复习不挂科。或许她看了 << 自己动手写操作系统 >> ,就认为她可以教我们写个操作系统来。据她说她还看过 <<Linux 内核情景分析 >> 一书,但不时说出 操作系统提供的 API 都是用汇编写的 这样的话来。每天牛皮哄哄,但没有人深究,大家都以为她牛。在这样的气氛下大家都学会了牛皮哄哄,说话不负责任。
然后就引发了读书无用论,因为在读书这一点上大家都实在没有什么好牛皮的,水平都只能用一个臭字来形容。现实中也没有什么好吹的,那就只能吹将来。个个都牛皮哄哄的说将来自己要当高管,将来自己要创业。小时候老师问有什么理想的时候,如果你的答案的不是想当个老师或者科学家那么你就会觉的抬不起头。现在如果再这样问,如果你的答案不是想当企业家或者高管,那么你就被认为没有志气。然后读书无用论就被强化了。大家想到都不是读书,成绩好的人(偶不属于此列 :) )将来就注定是个被人剥削的技术工作者或者书呆子。然后大家要么沉迷于游戏 ( 想的是反正读书无用,何不游戏呢 ) ,要么就去看点政治和经济新闻,再看点评论的就可以牛皮哄哄的大谈国家建设和创业途径了。大家都以为现在要成功要的不是读多少书,而是在于你会不会牛皮,会不会马屁。
但大家没有看到那些创业成功的并非有什么过人的经济学知识(更何况我们连这个都不具备),而是在于他们的实干精神。大家看到他们现在在众人前的衣彩光鲜,没有看到创业时的艰难困苦。
现在学的知识就算真的没有用,但实干的精神还是重要的,自己的将来不是靠整天意淫得来的。
―――――――――――――――――――――――――――――――――――――――
最后转 蔡学镛在《 java 夜未眠》上的一篇文章,本来只是部分和我的内容有关,但这篇文章真的不错,所有把它全部转下来。
     学习,是一条漫长的道路
                               蔡学镛
我在Java 1.0正式问世前就开始学习Java,这么多年过去了,到现在我的Java学习历程还没有停过。我阅读原文书,研究原始码,撰写程序,自认为走得扎实,不奢望一步登天。像我这样老式的学习方式,显然和现在的快餐主义背道而驰。从许多读者的来信和学生的反应中,我发现大多数的人对于Java的学习历程都差不多是:因为公司需要使用Java来进行服务器的计画,所以急急忙忙地学习Java语言,然后就开始使用J2EE的API,开始写起程序来了。如此急就章的学习方式,程序员基础能力根本就不够,对于对象导向精髓不能掌握,对于Java语言内部的运作机制毫无所悉,对API的整体连贯性懵懵懂懂。

当然,我们也不好因此责怪程序员,毕竟软件技术变动得太快。公司不可能给程序员足够的训练之后才开始做计画。程序员一下子被指派使用A技术,还没弄懂A技术是怎么回事,又被指派使用B技术,而且都是缝缝补补的方式边学边用,每次都像是全新的开始,遑论技术能量的累积。

我很庆幸的是,我不太有这样的困扰。因为我是资讯工程系出身(而且我大学时上课一向很认真),所以理论基础稳固,学习新技术对我来说不是难事。我就读大学时,周遭许多同学都瞧不起数据结构、程序语言、操作系统这些所谓「学院派」的课程,以为这些课程一点都不实用。他们认为到了外面公司,这些信息科系所学的一切都派不上用场,「只要会Visual Basic和数据库就够了」。这种偏差的心态,恐怕会使得他们在知识经济时代吃足了苦头。

另外还有一派同学很瞧不起程序设计工作,他们告诉我,像我这样会写程序的人,未来进了社会「还不是被他们这些走管理的人踩在脚下」。所以,他们很轻忽理工课程的学习,甚至还有人相当热衷「成功学」,认为这是迈向成功的快捷方式,却因此把学校的课业弃之不顾。我不敢相信有人竟然如此地本末倒置。

前一类的人太过于短视近利,后一类的人太过于好高骛远。我一直很不能理解这些人的想法为什么会这样,或许是因为社会环境的风气使然。我很庆幸我到目前还没被社会的大染缸给玷污了(最好这辈子都不要)。我不认为我的学习方式是一种典范,但是一路走来,倒也颇有进展。许多读者来信问我的学习历程,虽然我个人的学习方式不见得适用于每个人,但或许还有一些参考价值(特别是对于那些有志进入信息行业的年轻学子),我想透过本文简短地叙述一下。


我一向是采用先深后广(也称为Bottom-Up,Deep-First)的学习方式。比方说,当我在学A技术的时候,学到一半发现需要B技术的基础,我会到书局找出一两本B技术的书,然后把A先搁着,开始看起B技术的书。甚至,我在技术书籍上看到不太熟悉的英文句构时,我会找出一本英文文法书详细读过。这种先深后广的学习方式,适合学生时代全面地自我能力提升,但不适合业界人士。试想,老板要你开发的ERP系统已经延迟了,你怎有空研究J2EE原文书中的英文文法。先深后广的好处是,学习很扎实;缺点是有时候会偏离主题太多。有一次我发现我原本是要学某软件技术,几次「先深后广」下来,我居然看起老子的道德经了。

在技术上,我一直都是一个喜新厌旧的人,很少有软件技术能让我持续研究半年以上,我几乎每隔几个月就要换一次领域。Java 能让我持续这么久,也正是因为Java的领域广。透过Java,我的技术视野变开阔了。这些年来,我换过的 Java 相关领域包括了:虚拟机器、数据库、企业运算、多媒体、2D/3D图学、网络.…..等。

我的学习完全是兴趣导向的,所以压力并不大。因为有兴趣,所以我会很想充分理解一切细节。又因为理解,所以许多原本片片断断的知识都可以渐渐互相融会贯通,累积技术能量,理论和实务之间的藩篱被打破了,学习效率倍增。

我多年来的学习触觉很敏锐,我常常会抢先一步学好有前瞻性的技术。比方说,Java还在beta时、UML还在0.8时、XML还在draft时,我都已经透过网络下载技术文件回来每天抱着猛读了。而在Java、UML、XML当红之后,我已经差不多把这些技术都摸熟了。

至于该学什么技术,我的判断方式是以技术的优劣来决定。优秀而有独到之处的技术是我的最爱,虽然这类的技术不见得会在市场上胜出,但学习这些技术所得到的启发,对于技术能量的累积与能力的提升会有相当大的助益。至于技术差,但市场需求甚殷者,我还是懒得碰。(好吧!我承认我曾因为市场需求的缘故而学过MFC。越清楚MFC的技术细节,越是讨厌它,这真是个不堪回首的经验。)

我通常只看英文技术资料,毕竟大部分第一手的技术信息都是以英文来传播。所以我很早就开始阅读英文技术资料。读英文技术资料的好处是,就算没有学到书中的专业知识,至少也累积培养了英文阅读能力,我一直都是抱着这样的态度。一开始是正襟危坐的看英文技术书籍,字典、翻译机随侍在侧;几年下来,现在是躺着看、趴着看、很随性地看英文技术书籍,因为看英文技术书籍变成一种习惯了。现在,我可以用很快的速度吸收英文技术书籍的知识(有人叫我「吃书的机器」,我把这称号当作是一种恭维)。
近年来,我花在写程序的时间不多,因为时间对我来说很宝贵,而写程序很浪费时间。对初学者来说,大量地写程序是必要的,但过了某个阶段之后,写程序所带来的技术能力成长已经到了极限,还不如多花一点时间看书,学新技术和新观念。
我从国小时期开始学习写程序,迄今已有近十八年的时间;采取上述的方式密集学习,迄今也有近十年的光景。迩来数年,我接触的领域越来越广,而且学习速度正在加快,我认为是以前那些努力植下的根苗开始成长了。看看现在的我,或许你会觉得羡慕,但回顾这段学习的岁月,何尝不是一条漫长的道路。
――――――――――――――――――――――――――――――――――――――――
 

你可能感兴趣的:(java,数据结构,读书,mfc,UML,编译器)