《计算之魂》导读
《计算之魂》到底是本什么书?
对每一位《计算之魂》的潜在读者而言,需要问的第一个问题就是:到底是本什么书?然后才是,能从这本书学到什么。在该书的推荐序、前言,我们读到的是“讲解各种计算机理论和算法的灵魂”、“分享计算机科学精髓和灵魂的理解”,“讲解计算机科学艺术和精髓的例题”等等的表述,这些表述能解答以上疑问吗?有点勉强。
先用排除法,《计算之魂》这本书不是什么书?不是教材、不是专著、不是科普、不是论文集。看上去很难给它一个归类。所以,我斗胆下一个论断,这本书是作者针对十个计算机科学相关主题的杂谈文集(博客文集)。作者作为IT行业精英,围绕计算机科学相关的十个主题,利用面试题为载体,分享自己对计算机科学的理解与观点。
读者如何定位自己的阅读
一本不是教材、不是专著、不是科普、不是论文集的杂文集,无论对专业或者非专业人士,它都应该只是一本泛读读本。在此论断的基础上,读者需要为自己的阅读给出一个更明确的定位,而这种定位还需要建立在对这本书的特色的理解之上。
这本书的特色包括以下。第一、内容广、理论深(某些知识点颇深),因此导致,这本书的知识点并不完备,也就是说,很多知识点的理解必须依靠其他课程或者书籍。第二、主题展开依赖例题,要更好的理解需要的不仅仅是阅读,还需要动手、动脑、编程等等实践行为。第三、该书讲解面试题是重点内容,导致其主要的潜在读者是IT从业人员,也就是有一定基础的计算机专业毕业生。但是,这并不是说非专业的其他人士就不能对它进行阅读
所以,作为潜在读者,当你把它定位为泛读书目之一,理解该书的特色,根据自己实际情况,你就可以为自己做一个评估:阅读该书的主要目的是什么?我能从中收获什么?我需要花多少时间?或者我读这本书的时间安排如何?
我给大多数同学的建议就是,把这本书看为一扇窗户,借助他人的眼界来看看IT世界的模样。举个例子。比如,现在大一新生在学习《计算理论导引》这门课程。很多同学对图灵机非常不理解,感觉这玩意儿实在没多大用处。不知道这是应该科学家学呢还是工程师学呢,还是干脆这就是一种被淘汰的理论?《计算之魂》的第0.3节,专门有一节--图灵机:计算机的本质,有疑问的同学可以看看。再思考一下,作者吴军是什么人?科学家、工程师还是商人?为什么他在自己的著作中开篇就讲图灵机呢?相信,以上疑问有了答案,读者就会有自己的答案了。
再举个例子,很多课程提及算法的复杂度。很多同学其实对这种复杂度的理论并不感兴趣,甚至很多大学老师也对这种东西不感冒。《计算之魂》第一章针对于此,作者分享了自己的看法。同理,大家也可以思考一下,这么没有意义的东西为什么在一个讲面试的文集中出现?太理论了吧?大家不要以为我以上的观点过于偏颇。其实,我们大部分人对计算复杂度这种理论都极度缺乏,包括我都是如此。尤为可怕的是,很多学过数据结构的同学不知道插入排序的复杂度是O(n2)。不要说这是我编出来的,我最近才碰到过这样一位同学。
类似的例子还有很多很多。可以说,推荐《计算之魂》给大家,就是希望大家借助它打开自己的眼界。普通老师(比如我)说一万句可能都顶不上吴军说一句,是时候借助一下业界大佬的威力了!
阅读实例
我想通过一个阅读实例进行说明为什么《计算之魂》适宜大多数人阅读。比如,阅读第6.4章-从机器学习到深度学习:Google大脑。为了写这个导读,我花了十分钟非常认真地阅读完这一章的内容,有十页纸的内容。
首先,看到这章的标题,里面有“深度学习”、“机器学习”、Google大脑这些名词,如果你是一位大学新生,或者你是文科生,你感觉害怕吗?确实,应该感觉害怕。暂时克服一下这种负面心理暗示,阅读下去。其实,我认为,主要认字,都可以轻松地阅读完,并有所收获。所以,首要任务是克服心理障碍。
其次,这一章是归类在“分治法”之下,正如第6章标题所说,分治法就是把大问题分解为小问题,分而治之,从而获取效率上的提升。这个在我们日常生活中也是很常见的想法。在计算机专业新生的知识点中也频繁出现。只不过,现在这个分治法用在了AI。在这里,我多说一句。 在算法的学习中,同学们很可能会忽视分治法,感觉这思想太简单,看完这章内容,你们可能就会发现,其实没那么简单。
然后,这一章主要讲了机器学习的分治法、谷歌大脑(深度学习)的分治法。无非就是因为所需要计算的模型、数据实在太大,不可能存储在一个单独的服务器中,为此需要把数据或者模型分解成小的模块,放到不同的服务器去计算,从而获取更好的效率。书中除了简单解释了什么是机器学习、深度学习,重点讨论的是如何分解模型或者数据。
大家可以去尝试,如果阅读中有障碍可以提问,我感觉没什么问题。声明一下,我并不研究机器学习、深度学习。所以,看完这一章之后,我学到了什么呢?
- 分治法是计算机系统实现中常用的精髓思想;
- 分治法在具体系统实现中没有那么简单;
- 机器学习、深度学习依赖分布式计算;
总的来说,这十分钟给我的收获还是蛮大的。我的收获都写在这篇短文之中了,大家体会。
看到这里读者会问,啊...... 你看完这章书懂得Google大脑的原理吗?回答:没懂!啊......你懂得了深度学习的基本原理了吗?回答:似懂非懂,从浅层方面懂其中的思想,细节不懂。也就是说,很多很多的细节并不出现在书中,你阅读这章书,你的任务不是学懂深度学习、机器学习,是了解其中最核心的某些思想,而不能学到很多的技术、理论细节。我想,这个思路大致应用于大多数人的整个阅读过程。
这一章最后有一道习题,打了五颗星(显然作者认为非常重要并且很难):如果使用多台服务器进行大矩阵求逆。我也不会做。可能这一辈子也不会去研究它。但是,我并非想说这个问题不重要。我只是说,也许你并不需要对每一个问题都给出答案。因为,大多数人都是很菜的,不要难为自己。但是,如果你是一位大学生,矩阵如何求逆也忘记了,那么这就不仅仅是菜的问题了,是学习态度有问题。