昨天在StackExchange上看到了一个很有趣的帖子:《为什么人们要使用编程技术书籍?(Why do people use programming books?)》。

今天发布出来与大家分享,大家有什么观点尽情回复,我期待与大家分享心得,开展讨论。

在我写这篇文章的时候,这个帖子在StackExchange站群的热门问题中排名第二。楼主的问题是这么说的:

我发现当有人问如何编程的时候,别人通常会提供给他/她一个书单。

但我不认为所有人都是通过看书学会编程的。有的人只是遇到问题,学习编程,然后将编程作为工具解决问题。

拿我来说,我当时编程是因为想给自己玩的游戏搞一个服务器。那时我google一下找到了关于那个服务器的支持文档搞定了这件事。现在我已经是一个软件工程师,而我的能力完全没有倚赖书籍,全都来源于那时用C#给游戏服务器端写程序时学到的技术。

所以我的问题是:一般来说,通过书学习编程技术是否更容易?就我个人来说,读书枯燥无味,难以坚持。

沙发给出的答案要点鲜明,因此得到了最高的投票。

他的核心思想是:书的内容有序,能够培养完整的知识体系;而Google只能解决能够用明确的关键字描述的“How to”式问题,且网络上的内容充斥着垃圾。

以下是作者原话:

Google适合解答“How to”一类的问题,但你不能通过Google了解你欠缺哪些知识。举个例子,你可以通过搜索“C# 托管”一类的内容解决你在C#托管方面的一些问题;但试想一下,如果你压根不知道C#中有托管机制呢?如果此时恰好你面临的问题可以用托管机制解决,你还能够用Google解决你的问题吗?

而且网上充斥着各种垃圾,如果你有足够的知识分辨哪些有用,哪些没用的话还好;如果没有,各种各样的“噪声”只会让你更加头大而已。

作者还谈了一下他自己怎么读书:

1. 买书
2. 概览一遍(不必一页页读过,但要知道每个知识点的位置)
3. 找个小项目实践
4. 将书作为参考,从实践中获得经验
5. 书解答不了的问题,Google之

(有时候3最先发生)

这个读书法也很有参考意义,如果你觉得看书枯燥无味,难以坚持的话,不妨试试。

这个答案引起了诸多网友的共鸣,其中一个回复说道:

答得好。我学ASP.NET那时候就用Google,开始学的时候我已经有了几年C#编程经验,所以我觉得我能搞定。每次遇到问题我就Google,不过随着时间越来越长,我发现我只是储备了一大堆“小技巧(Tips)”,而这些小技巧每个都只能解决很特定情况下的小问题。这样下去我永远也无法真正掌握ASP.NET,这就好似ASP.NET是一座大冰山,而你每次都只瞧见冰山一角,这样下去冰山长什么样你永远也不知道。而书籍能提供系统的知识,就像一幅冰山全景图一样。所以看书吧。哦,对了,还要说一声,别看那些《X天速成XXX》之类的,像什么《深入理解XX》、《XX高级编程》之类的书才是好书。

这位网友其实补充了很重要的一点:那些具有完整知识体系的书才能真正让你获得网上得不到的知识。这知识就是完整的知识体系,有了它,你就知道ASP.NET能做什么,不能做什么,而不是在每次遇到问题时都只能无助地Google.

除了知识体系上的优势,书籍的另一个优势是书籍包含了作者的丰富经验。一位网友讲了身边的一个例子:

我的一些同学学Java了,他们不看书。经过了几年的Java开发,他们在拷贝数据的时候依然反复生成byte[]然后为数组元素循环赋值。而事实是System.arrayCopy可以更好、更快地完成这个任务,《Java in a Nutshell》中155页就讲了这个方法。

希望你能认识到:与自学相比,有老师指导会让学习容易得多。而书就像是老师的讲稿,有了它,你就像有了老师,而且与请人相比,书便宜得多。

总结

书籍与网络是两个不同的知识来源,由于其各自的特性,它们能够解决的问题也不同:

书籍 网络
价格 通常收费 通常免费
使用周期
信息质量 通常较高 参差不齐,内容较随机 
解决问题 学习完整知识体系 解决明确问题 (通常是小问题) 

(全文完)

作者: mdyang 发表于 2011-07-29 16:40 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"