【外文引述】技术书籍 vs. Google
昨天在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页就讲了这个方法。
希望你能认识到:与自学相比,有老师指导会让学习容易得多。而书就像是老师的讲稿,有了它,你就像有了老师,而且与请人相比,书便宜得多。
总结
书籍与网络是两个不同的知识来源,由于其各自的特性,它们能够解决的问题也不同:
书籍 | 网络 | |
价格 | 通常收费 | 通常免费 |
使用周期 | 长 | 短 |
信息质量 | 通常较高 | 参差不齐,内容较随机 |
解决问题 | 学习完整知识体系 | 解决明确问题 (通常是小问题) |
(全文完)