每日一书丨还在沉迷刷 LeetCode ? 也许你更需要的是计算思维

近年来蓬勃发展的计算机行业如激流中的弄潮儿不断吸引着人们的目光,越来越多的人们想要在这样一个风险与机遇并存的行业中一试身手。

然而“算法”这一门计算机专业必修课却如大山一般横亘在人们面前,令人望而却步。算法问题就好像是升级版的智力游戏,令无数英雄折腰。

不知读者有没有面对一道算法题苦思冥想而不得其解的经历?有没有整日刷 LeetCode 却始终不得要领陷入瓶颈期痛苦回忆?如果存在这些症状,那么吴军博士的这本《计算之魂》也许是一剂良药。

每日一书丨还在沉迷刷 LeetCode ? 也许你更需要的是计算思维_第1张图片

吴军是谁?

如果你对计算机行业很感兴趣,却又没有听说过“吴军”这个名字,那我只能说你错过太多了。在我眼里,吴军博士也许是中文世界里最会写计算机科普的人物,没有之一

吴军博士兼具学者与投资人的身份,是人工智能,语音识别和互联网搜索专家,他先后从清华,约翰·霍普金斯大学毕业,长期活跃在谷歌,腾讯等各大科技公司,同时也是硅谷的风险投资人。

这样的履历带给吴军博士的是开阔的视野,统率全局,而又不失细节。从吴军的《浪潮之巅》到《数学之美》,再从《大学之路》到这本《计算之魂》,我算是老读者了。

吴军博士著作的一个显著特点就是善于高屋建瓴地归纳总结本质规律,这样一种思想贯穿全书,由此带来的阅读体验是阅读其他类似著作时所少见的。

每日一书丨还在沉迷刷 LeetCode ? 也许你更需要的是计算思维_第2张图片 吴军博士

此前阅读吴军博士著作的过程中,每每都为其开阔的视野与精辟的见解所折服。

如果是普通人,创办公司可能最在乎的就是从中大赚一笔就心满意足,

然而在《浪潮之巅》这本书中,吴军博士在论述各个科技公司兴衰史之时,却仅仅将利润作为一个考量标准,而将更多的笔墨放在企业发展的客观规律以及对与社会进步与发展的影响之上,这一点难能可贵;

如果是普通人,可能看到“数学”这两个字就开始头疼,更别说灵活运用,

然而在《数学之美》这本书中,吴军博士却仅仅用了非常简单的中学数学知识就向我们介绍了众多如人工智能等前沿技术的原理

如果是普通人,可能在选取大学时,仅仅是基于排名和地理位置等简单的标准,

然而在《大学之路》这本书中,吴军博士则一开始就介绍了旨在进行通识教育的纽曼式大学与旨在培养专才的洪堡式大学,告诉我们选择大学需要考量办学理念,适合自己的才是最好的

在《计算之魂》这本书中,吴军博士同样延续了这样的风格,在各类知识娓娓道来的同时,又不忘进行高屋建瓴地总结与归纳,为读者提供更高更加开阔的视角。

何为计算之魂?

在本书的一开始,吴军博士就仿照朗道划分物理学家等级的方法将计算机从业人员按水平划分为了七级,并给出了计算机发展史中一些著名的人物在这样一个标准下的等级。

有的读者可能会感到疑惑了:这不是一本讲解算法相关知识的书籍吗?为什么一开始就要给计算机从业者排资论辈呢?

这就是吴军博士的良苦用心了,吴军博士引入计算机从业者水平划分的目的,并非是为了在不同的计算机工程师之间分个高下,而是想要用这个标准来告诉我们:对于一个计算机从业者而言,最为重要的能力是什么

有了目标,我们才不会盲目前进。等级的具体划分标准在这里不再赘述,但是让我感到深有启发的是等级划分的思想。

吴军博士在书中指出,每两个等级之间在各个维度上水平差出十倍,这样的结果就解释了为何互联网企业在招聘时会花高薪来聘请高级人才:

因为互联网企业往往要服务大量的客户,这样的规模效应会放大人才之间的差距,不同等级的人才在对企业的收益的贡献上有着数量级的区别。因此对于互联网企业来说,花费高薪招聘一个高级人才其实是最省钱的办法。

在后续的章节中,吴军博士又结合自己的很多实际经历反复强调了这一点。

这就引出了吴军博士著作的另一个重要特点:吴军博士的每本书都非常有体系,他会在书的一开始提纲挈领地告诉读者这本书的中心议题,并且从后续章节中从各个角度反复探讨验证,整本书浑然一体。

在这本书中,吴军博士想要告诉我们的是:何为计算之魂。

计算之魂,按照吴军博士在书中的阐述,即是计算机科学的精髓,即计算思维。

该怎样理解计算思维呢?

这就要从计算机的发展历程开始讲起,这也就是引子的内容。

计算机的发展历程有几个关键的节点:巴贝奇和阿达首先提出了用程序控制计算机的思想;布尔通过将二进制将算术与数理逻辑统一了起来;

楚泽证明了布尔代数可以实现任何十进制的运算与复杂的控制逻辑;香农从理论上指出了任何逻辑控制和计算都和开关电路等价;图灵则划定了计算机的可计算的问题的边界并且提出了图灵机的概念。

每日一书丨还在沉迷刷 LeetCode ? 也许你更需要的是计算思维_第3张图片 图灵机

在第三章,吴军博士指出,计算思维就是按照计算机的方式思考问题的能力,计算思维的核心就是递归思想,并且列举了若干的例子来验证这一点。

人类惯常的思维方式是从简单到复杂,从具体到一般,自下向上,具体来说,就是递推的思想。

而计算机则恰恰相反,计算机的思维是递归,自顶向下,把大问题分解成若干个小问题,而这些小问题具有和大问题同样的结构和解决方法。

高级计算机从业者与低级从业者之间的最大差距就是体现在计算思维之上高级从业人员能够按照计算机的方式思考问题,因此能够编写出常人看来费解但是计算机运行效率很高程序。

在接下来的章节中吴军博士对这一点反复进行了论证,尤其值得称道的是吴军博士采用了众多顶尖互联网企业的面试题来对这些问题进行讲解。

每日一书丨还在沉迷刷 LeetCode ? 也许你更需要的是计算思维_第4张图片 递归的形象描述

生活中的计算思维

在本书中,吴军博士从多个维度讲解了计算机的思维和人的思维的差距以及具体应用。

通过这些例子,我们可以深刻地认识到:计算机的思维方式究竟和我们的思考方式有多大的差距,理解了计算思维,我们可以利用计算机的优势极大地便利自己的生活。

下面就来介绍一个对我而言印象特别深刻的例子。

生活中我们每次登陆自己的账号都离不开输入密码的操作。

那么,互联网企业是如何保证能够验证用户的密码正确性的同时又最大程度地保证用户密码不被泄露呢?我们来看看吴军博士的解读。

在本书的第十章,吴军博士首先简单介绍了信息指纹的概念:

即用一个随机数算法将一段二进制信息映射成随机数作为区别它与其它事物的标志,这个随机数就叫做信息指纹。之后吴军博士旋即提出了一个问题:“对于128位的随机数,产生了多少个以后,出现重复的可能性大于50%?”

在进行严格的数学分析之后,吴军博士得出结论,这样的方式产生的随机数每1800亿亿次才会重复一次。

这个结论也许会超乎读者的想象,但是事实确实如此。有了这样坚实的理论根基,我们就几乎可以说:使用128位二进制产生的信息指纹在很大程度上是独一无二的。理解了这一点,我们就可以回过头来看本节开头提出的问题。

互联网企业并不会真正保存用户的密码,相反,互联网企业会使用用户输入的密码生成一个信息指纹(当然也有部分企业是直接保存用户密码),企业数据库里所保存的也是信息指纹。

因此,即便企业数据库发生了泄露, 也可以保证用户密码不会泄露。而当用户输入密码时,程序只需要验证输入数据的信息指纹与数据库中保存的信息指纹相匹配即可。是不是很巧妙?

也许你应该现在就停止刷题

尽管刷题对于学习算法来说至关重要同时也必不可少,但是当对于各个算法及其实现已经足够熟悉时,刷题的边际效用也会大大降低,对于能力的提升会越来越小,我们就会陷入瓶颈期。

在这个时候,我们也许更应该做的是转换思路,更多地去关注并且培养顶层的计算思维,拓宽自己的思维广度,避免陷入定势思维。

按照吴军博士地话说,我们要培养计算机艺术的品味。从这个意义上来说,这本《计算之魂》,应该是每一个对计算机感兴趣的读者案头必备读物。至少在中文的读物里,很少有能够与之相匹敌的著作。

更不用说其中深入讲解了若干顶级互联网企业的面试题目,真正做到了实用性,科普性与趣味性并存。

本文经授权转自豆瓣书评(ID:Behemoth)

声明:本文转自“异步图书”公众号。

《新程序员003》正式上市,50余位技术专家共同创作,云原生和数字化的开发者们的一本技术精选图书。内容既有发展趋势及方法论结构,华为、阿字节跳动、网易、快手、微软、亚马逊、英特尔、西门子、施耐德等30多家知名公司云原生和数字化一手实战经验! 

每日一书丨还在沉迷刷 LeetCode ? 也许你更需要的是计算思维_第5张图片

 

 

你可能感兴趣的:(每日一书,leetcode,算法,职场和发展)