还在沉迷刷 LeetCode ? 也许你更需要的是计算思维

人邮异步社区 人邮异步社区 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

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

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

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

购买链接:https://item.jd.com/13515688.html

 

 1

吴军是谁?

 

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

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

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

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

 

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

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

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

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

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

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

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

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

 

 2

何为计算之魂?

 

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

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

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

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

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

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

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

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

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

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

该怎样理解计算思维呢?

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

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

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

 

▲图灵机

 

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

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

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

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

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

 

▲递归的形象描述

 

 3

生活中的计算思维

 

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

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

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

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

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

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

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

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

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

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

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

 

 4

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

 

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

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

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

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

 

 

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

 

...全文

相关推荐

leetCode-Js:记录自己用Js刷题的“心酸”历程!!!在线Gitbook地址

LeetCode题解Js版 题外话 LeetCode题解: 前端笔记: 项目背景 旨在提高自己对算法的理解,将题解总结成文章,有利于未来自查,也希望能对大家有所帮助。 如果该项目能对大家起到积极的作用,就算成功了,欢迎大家留言交流,接受批评和指正~ 通过传送门可以跳转至LeetCode题解的gitbook版本,方便大家快速浏览 本仓库暂时分为三个部分 第一个是按照题库顺序以及自己刷题的先后排列的LeetCode题解 第二个是每日一题相关的LeeTCode题解(带完善) 第三个以专题类型为区分的题解(待完善) 记录: 2020.04.22 — leetcode题解达到100 关于我 decs: 19年毕业的前端开发一枚,沉迷Js E-mail: 个人博客: GitHub: LeetCode题解传送门 下方对应是CSDN版本题解 题解在的和上都有记录,希望大佬们批评指正,一起提高(顺便star

西西里上尉

leetcode分类-codestack:我所有存储库的鸟瞰图-在这里您将找到我所有的数据科学工作,我已将其放入以便快速浏览。访问个人回购进行

leetcode 分类什么是代码栈? 在这里你会发现我沉迷于数据科学和机器学习的范围: ML/DL 项目 - 学术和个人 Leetcode 和 Hackerrank 解决了我随着时间练习的几个编码问题 网页抓取项目 Python 中的统计学习 - 在没有内置库的情况下在 Python 中从头实现 ML 模型的底层数学 我喜欢学习新事物,我的 GitHub 存储库将始终在进行中! 我打算继续我在数据科学、机器学习和商业智能领域的探索,同时也专注于可以从衍生见解中利用的业务应用程序。 我相信利用数据有以下三个原因: 让人类生活更美好 优化业务绩效 将数据机会商业化 一点关于我自己: 我是普渡大学的研究生,在克兰纳特管理学院攻读商业分析硕士学位(2020 届)。 最近,我在印度的 Wipro Limited 工作,担任数据科学家,为与 BFSI 行业相关的客户处理 ETL 和预测分析解决方案的大型数据集。 我的强项包括客户分析、电子商务分析、营销分析、财务分析和商业智能。 凭借 2 年以上的分析工作经验,以及我在普渡大学期间获得和磨练的技能,我正在组织中寻找数据驱动的角色,这些角色与我一样热

weixin_38655347

leetcode中国-stay-night:热血青年团●第一次圣杯战争

leetcode中国 热血青年团●第一次圣杯战争 缘起 上次去参见浙大校友会毅行的时候,看到这样一幅标语: 一个人或许能走得更快,但一群人能够走得更远 自己深以为然。 现在,自己准备刷leetcode,至于为什么要刷题可以参考这篇。 我希望能够找到几个朋友一起来刷leetcode。 刷leetcode也是一个长期的过程,现在题库里面一共有400多道题,免费的题也有三百多道。如果独自一人刷题,感觉有点无聊,而且很难坚持。因为工作和生活中总会有很多突如其来的事情,我们没有办法始终给刷题一个很高的优先级,因此我们很难保证长时间高效地刷题。而且一个人刷题,寂寞如雪,不可断绝。大家一起刷,还可以互相review代码,互相讨论,因为leetcode并不是刷一遍就可以了的,对leetcode里面的面试题,我们需要提高熟练度,达到面试手写代码给面试官讲解的程度。 成长并非一定是痛苦的,并非一定要板着脸、揪着心才能做好对自己有用的事。用有趣的方法做事能够达到更好的效果。前段时间,看完了,觉得挺有意思。借鉴其中圣杯战争的概念,设计了这个游戏。对,我们也可以视刷题为游戏。既然我们可以沉迷游戏,为什么不能沉迷

weixin_38606656

leetcode中国-leetcode:现在在leetcode上有80颗星

leetcode中国leetcode 现在在 leetcode 上有 50 颗星。 2018年16月12日到2019年2月2日,我在leetcode上解决了200道题,花了我一个半月的时间,很有帮助,我想把我的解决方案放在这里,仅供纪念。 在我的leetcode 200题计划之后,我应该完成MIT 6.824课程来学习分布式系统的问题,但是现在是农历新年,我已经休息了16天,我沉迷于dota2自走棋和一个有趣的科学fi 游戏称为stellaris。 假期该结束了,谁也不能永远休息。 顺便说一句,流浪地球是一部不错的电影,也是中国科幻电影史上的里程碑。 为自己做点事,成为自己想成为的人,杨无期。 2019 年 2 月 17 日。

weixin_38599545

fall-in-js:沉迷学习,日渐消瘦

fall-in-JS 沉迷JS无法自拔 leetcode 一杯水,一道题,一个思路想一天。

安幕
评论
收藏 已收藏
分享
返回顶部