新書推薦:
《
镶嵌之美:古希腊罗马的马赛克艺术
》
售價:HK$
305.8
《
后希腊化哲学:从斯多亚学派到奥利金的发展研究
》
售價:HK$
76.8
《
别纠结啦:不被情绪牵着走的通透生活指南(“当代一休”小池龙之介治愈新作!附赠精美书签!)
》
售價:HK$
64.9
《
第二人生:找到重新定义人生的智慧
》
售價:HK$
96.8
《
唐朝三百年
》
售價:HK$
107.8
《
反操纵心理学:夺回人生主导权 拒绝被操纵
》
售價:HK$
54.8
《
同工异曲:跨文化阅读的启示(修订版)
》
售價:HK$
43.8
《
牛津立法研究手册
》
售價:HK$
358.6
|
編輯推薦: |
1. 算法是未来的基石,思维是底层的架构。这本书用4大算法 4种思维,给你AI时代的制胜武器。讲述的是前沿趋势,教授的是底层思维,赋能的是职场人。
2. 学会了计算思维,具备了数据素养,你就可以看透互联网世界和AI是怎么运作的,也就掌握了一种解决大规模复杂问题的方法。这种方法将成为你在工作和生活中的有力助推。
3. 计算机科学家诸葛越新作!吴军作序,沈向洋、王小川、郝景芳诚意推荐。
4. 随书附赠“下一个十年赢在计算思维”超浓缩思维导图。
|
內容簡介: |
我们的未来,是人和机器一起仰望星空的时代。
这本书用通俗易懂的语言和生动活泼的例子,介绍了有关“未来算法”的新知识,重点拆解了排序、分类、搜索、递归几大基本的未来算法,轻松讲述了数据结构、模式识别、抽象、优化的定义和应用,并提出了“计算思维”的新概念。
计算思维,简单地说就是计算机怎么解决世界上的问题。
? 计算思维可以让你像计算机一样思考。学会了计算思维,你可以看透互联网世界和AI是怎么运作的,你也就学会了一种解决大规模复杂问题的方法。
? 计算思维会给你一套现代的交往语言。它是现代社会的思维方式,它所提供的一套语言,比如算法、数据、模型、迭代、AI 等是现代人交往的语言。
? 计算思维可以帮你优化每日的生活和工作,也可帮你解决人生的复杂问题,比如如何管理时间,如何分配资源,如何找工作或伴侣,如何理解和驾驭AI。
这本书会给你提供一种全新的看世界的视角,让你掌握现代信息运作的奥秘。作者认为,未来的十年是算法发展的黄金十年。在这样的时代背景下,如果能掌控计算思维,你就会在工作和成长中脱颖而出,赢在下一个十年。
|
關於作者: |
诸葛越
? 夸克星辰科技创始人兼CEO。
? 曾任Hulu公司全球研发副总裁,中国研发中心总经理;雅虎北京研发中心资深产品总监;微软北京研发中心项目总经理。
? 计算机科学家。美国斯坦福大学计算机系硕士与博士,纽约州立大学石溪分校硕士,曾就读于清华大学。
? 曾出版教育类图书《魔鬼老大,天使老二》,科技类图书《百面机器学习》《百面深度学习》。
? “得到”App《如何培养面向未来的孩子》专栏作者。
? 入选福布斯中国2020科技女性榜。
|
目錄:
|
推荐序 智能时代的通识教育 / 吴军
前言 操纵未来世界的算法
部分 基石
第 1 章?分解问题:从炒鸡蛋到无人驾驶
004 炒鸡蛋
007 短视频推荐
010 无人驾驶
013 办婚礼
014 分解问题和编程
第 2 章?排序算法:巴比伦的泥板
022 抓牌
023 开学典礼
029 算法的特性
032 1 万件衣服
035 积分送好礼
036 小明有限的脑空间
038 用排序思维来做时间管理
第 3 章?分类算法:全世界所有的东西
046 男孩女孩看电影
048 大孩子、小孩子
051 微博热搜
053 直到
055 再抓牌
057 全世界所有的东西
059 分类树
061 世界杯赌球骗局之二分法
063 无人驾驶交通标志的识别
065 人脸识别是个分类问题
068 人脸识别分类算法
071 分类算法的特性
073 用分类思维来解除焦虑
074 要事先行:四象限法则
第 4 章?搜索算法:找到牛津大学
083 怎么在书架上找到一本书
088 谁和你一样大
092 找到一家满意的餐馆
094 你的手机通信录
095 过滤
096 选购汽车
098 找到牛津大学
102 搜索引擎是怎么工作的
107 从搜索到推荐
108 用搜索思维来找工作
第 5 章?递归算法:洋葱、汉诺塔和昨天的你
114 报数
116 洋葱的面积
117 珍珠心
119 花菜
120 中国有多少人
123 短路径
127 世界末日的汉诺塔
132 斐波那契的兔子
135 昨天的你
第二部分 架构
第 6 章?数据结构:皇室家谱和继承
142 配对的袜子
145 队列
147 插队
148 恺恺的抽屉
150 摆渡车
152 歌单、菜单和名字
154 朋友圈
156 家谱
157 二叉树
159 爬树
162 皇室家谱和继承
163 人气网红
165 大数据与云计算
第 7 章?模式识别:会扫地的机器人
172 大城市、中城市、小城市
175 拿铁、卡布奇诺、馥芮白
178 机器人包包
179 红绿蓝紫灯
182 升级版包包
185 填满正方形
190 画圈的博博
193 电子老鼠走迷宫
195 扫地机器人
200 咳嗽声识别新冠
202 认清本质,识别规律,预测未来
第 8 章?抽象:10 根手指限制了我们的想象
210 公交车导航
211 社交网络
214 电梯的按钮
216 订单的一生
218 10 根手指限制了我们的想象
221 手机上的数字键盘
223 三种颜色的电视
225 简易二维码
229 加密和解密
231 为什么间谍要拿一本书
233 物理世界到数字世界的抽象
237 忽略细节,注重要素
第 9 章?优化:如何找到伴侣
242 找到伴侣
246 逃生算法
252 穷举是个笨办法
254 优化和
257 完成你的新年愿望清单
263 清理房间和清理大脑
267 旅行中的推销员
274 翻过山丘
279 计算复杂性
283 让随机带给我们惊喜
第三部分 未来
第 10 章?AI 和未来计算
293 孩子是如何学会区分苹果和香蕉的
296 AlphaGo 下围棋
298 AI 是怎么写唐诗、宋词和《红楼梦》的
300 神经网络
305 机器人约会
309 诊断癌症患者
313 嗅觉 AI
315 AI 时代刚刚开始
结语 计算思维是一种时代技能
后记
致谢
|
內容試閱:
|
前言?操纵未来世界的算法
现代世界是计算机的世界。当今世界的每个人,几乎每时每刻都在跟计算机打交道。从早上出门打车用的打车软件、导航软件,上班用的电脑、文件和在线工具,点外卖咖啡的App(应用程序)和快递调度,到手机支付,孩子上的网课,在淘宝、购物,看微信,刷抖音,用语音助手,和机器人聊天,这些行为背后全是强大的计算机在操纵。
未来是人和机器一起仰望星空的时代。新兴的计算技术给世界带来了波澜壮阔的变革。从载人火箭的发射和回收,到无人驾驶,从高尖的AI(人工智能)、大数据、搜索,到人脸识别、基因检测、电子医疗、智慧城市规划,所有这些大型的工程项目,唯有我们和强大的计算技术携手才能做到。
2016年,谷歌旗下公司开发的AI计算机程序AlphaGo战胜了围棋世界冠军李世石。其实,早在1997年,计算机“深蓝”已经战胜了世界上厉害的国际象棋选手加里?卡斯帕罗夫(Garry Kasparov),但是围棋的棋局变化众多,一直到近,都还是人略胜计算机一筹的。AlphaGo2016年之后的连续胜利,让所有人认同,AI在围棋方面已经超越人类职业围棋的水平。这个现象引发了社会上非常多的探讨:计算机的能力是否已经全面超过人类?在未来的计算世界里,我们的生存空间在哪儿?
计算机的发展始于20世纪初,20世纪四五十年代开始应用,80年代电脑进入家庭,90年代互联网兴起,21世纪初移动互联网和智能手机带来变革。半个多世纪以来,计算机科学家们发展出了一套方法来指导计算机,让计算机实现前面描述的这些变革性的应用。那些强大而精妙的、影响我们未来每一天的算法,就是本书要给大家介绍的未来算法,而这套思维方法也叫计算思维(computational thinking)。
算法是打开未来世界的钥匙,是计算思维的核心概念。计算思维,简单地说就是计算机怎么解决世界的问题。它包含几个部分:把复杂问题分解成简单问题,找出重复的模式,把物理世界的信息抽象表示成计算机能够理解的信息和很多约定俗成的算法。本书会用你能懂得的例子向你介绍这些概念。
未来算法教你像计算机一样思考。学会了计算思维,你可以看透互联网世界和AI是怎么运作的,你也就学会了一种解决大规模复杂问题的方法。计算机强有力的地方在于以一抵万。它做的不是小事,是大事,是在10亿个网页里找出一条信息,统计识别全国人口的身份,同时处理上千万笔订单,或者给几亿名用户个性化推荐短视频这样的大事。计算机强大的地方在于它的规模,学习计算思维会让你学会这种规模思考。
计算思维给你一套未来社会的交往语言——算法、数据、模型、迭代、AI等,这些都是现代人必须深入了解的概念。计算思维的方法,比如分解问题、资源优化,也成为我们处理问题的标准方法。看完这本书,你再见到这些概念的时候就不再感到陌生,不再是外行,你在交谈和决策时就会不惧不恐,不停留在空洞模糊的理解中。
计算思维会对你的每日生活和工作有帮助,你会发现生活中处处是算法,会从一个全新的角度看待日常的问题,比如如何找到去公司的短路径,如何管理时间,如何用优化的方法找餐馆和找伴侣,如何加密你的信息,机场人流是怎么回事,骗子是怎么利用简单算法让很多人上当的。计算思维也能帮你了解日常应用是怎么工作的,比如为什么滴滴知道你要去哪里,朋友圈为什么可以一直刷。计算思维还会帮你做事,帮你更有效地利用这些强大的计算机应用。比如了解搜索引擎的原理后,当你要找一份工作,你就知道如何缩小范围去找到合适的结果。再比如你想提高自己淘宝店商品的排名,你如果了解其分类和排序的规则,你的商品就有可能排到前面。
计算思维也可以帮助你解决人生的复杂问题。计算思维是一套方法论,一套解决复杂问题的方法论,这套方法论可以迁移到生活当中,给你指导:如何做好一名CEO(首席执行官)?如何让孩子上好大学?如何在享受现在的生活和探索新的机会之间找到平衡?这些问题的本质是如何优化,如何做选择,如何做成一件大事。比如,你的焦虑感可能源于未能合理地分类,把可控和不可控的事情分开。我们都知道人生的难题不能用一个算法来解。计算思维会教你分解问题,找出规律,教给你直觉和框架。这对我们了解复杂的世界,做正确的人生决策有很大的帮助。
什么是未来算法和计算思维
现在,我们更进一步地来理解本书要介绍的算法和计算思维。你是否想过,为什么计算机科学对现有的几乎所有的领域都产生了巨大的影响?
现有的科学领域,比如说医学、物理学、生物学、教育学,都是很专业的领域,而计算机科学属于解决问题的科学领域。它的影响力在于,它的方法能够渗入并帮助其他各个领域,解决那些领域本身存在的问题。比如,计算机帮助医生在图像中寻找病人患癌症的可能性,帮助物理学家在千万张星空影像中找到新星,帮助生物学家快速排序病毒DNA(脱氧核糖核酸)并预测可能的变异,帮助教育专家了解每个孩子的不同并真正做到个性化教学。
大家知道,计算机是机器,机器是死板的。计算机能懂得的命令是非常简单的。就像一个一两岁的小孩一样,一台普通计算机能够懂得的命令只有非常少的几种,比如“加一”“减一”“判断两个数是否相等”。这些简单的命令可以合起来让计算机完成一些标准的任务,比如把一串数字按大小排序。
那计算机为什么能做到那些炫酷的、人类做不到或者比不上的事情呢?这是因为它的速度特别快。快到什么程度?任何一台现代的计算机都可以在一秒之内读完《莎士比亚全集》。它可以在人无法感知的毫秒内完成几百万甚至数千万次的计算。另外,计算机还有一个优点,就是它可以不厌其烦,不断地重复做一件事。比如,你让一个人把100本书按名字首字母顺序排列可能不算难。但是如果让他排1万本书,他就非常累了,可能要排好几天。计算机是不怕累的,它可以快速且不抱怨地重复劳动。别说有1万本书,哪怕是10万本、100万本、1亿本,它都可以正确地排出来。理解了既死板又强大的计算机,你就理解了它是怎么做事的。计算思维的核心方法,就是充分利用计算机这种快速、精确、规模化的能力,把这种能力用算法表示出来,让计算机来完成。
目前业界公认,计算思维包含4个方面:分解问题、抽象、算法、模式识别。其中,算法是直接用来解决问题的方法,而其他几个概念能帮助人们用算法来表示生活中的问题,从而让计算机来解决这些问题。下面我们再具体地解释一下上面提到的4个核心方面。
,拆解复杂问题,直到复杂问题成为可重复的简单问题(分解问题)
不同学科、不同时间段、不同的人都有不同的思维方式和认知世界的方式。做同一件事,比如说盖一栋房子,建筑师想到的是设计风格,材料工程师想到钢筋水泥,文学家想到写个故事,而计算机看到的是:窗户、门、墙、地板,一起有结构地搭成一栋完整的房子。在计算机看来,窗户尽管大小形状不一,但都是窗户,门可以有不同的材质,但都是门。对计算机来说,盖一栋房子,是用多少个组件和如何搭建起来的问题。
用计算思维解决问题,首先就要拆解。分解问题是把原问题分解成子问题,解子问题,再把子问题的解合成原问题的解。无论多么强大的计算机应用,背后都是把原问题分解成可以解的子问题,只是规模不同。
你可能会用抖音刷短视频看,那抖音的个性化推荐算法是怎么回事呢?它怎么知道你喜欢什么视频呢?在计算机看来,这个问题可以拆解成:(1)把所有的视频按内容分类和排序;(2)根据所有用户(包括你)以前各自的观看习惯,推导出喜好;(3)把视频内容和用户喜好进行匹配,按匹配程度排序,这个排序可以用我们第2章要讲的排序算法来做。也就是说,你用抖音刷视频对计算机来说分三大步,每一步都可以继续拆解,直到每一步都可以用算法来完成。
淘宝看上去是做完全不同的事,但是你能想到吗,它终也是个排序的问题。淘宝是把你要找的商品做个排序,按照你的需求来排。这两个强有力的应用,终解决的都是排序算法的问题。但是它们排的东西不一样,一个是视频,一个是商品。排的方法也不一样,一个要学习你的喜好,让你喜欢看,看的时间长;另一个要尽快有效地促成交易。
第二,把生活中的问题抽象化,用约定俗成的算法来解(抽象)
我们生活在一个物理世界里,计算机生活在一个数字世界里。计算机并不像人一样理解真实的事物,我们需要把真实的世界表达成它能理解的语言。然后在计算或操作后,它才能在真实世界中把结果展示出来。
比如,抖音需要用ID(身份标识号)或者名字把视频表示成计算机可以理解的形式,也要把视频内容表示成计算机可以理解的形式。同样,淘宝需要把商品的名字、内容、价格等表示成计算机可以理解的形式。被计算机排序后,这些物品需要转换回人能够看见的视频或者商品。这个把真实物理世界和计算机数字世界对应的过程就是抽象。
在进行抽象的时候,我们要忽略不必要的空间或时间细节,以集中解决关键的问题。比如,要计算机调度公交车,只需要对它表示车站和地理位置,而不需要表示路旁的商店和花草。再比如,在App里面找一首歌,只需要对它表示这首歌的名字和歌手,播放的时候,才需要音频文件。
一旦问题被抽象成计算机可以理解的形式,比如转化为上面提到的排序问题,那么,这个问题就有约定俗成的解法了。在本书的第2章,我会向大家介绍一些常用的排序算法,比如冒泡排序、插入排序等。这些算法是计算机科学家研究出来的正确而高效的算法,是放之四海而皆准的算法。我们不需要重新去发明它们,就好比造房子的时候有其他公司已经能做出世界一流的窗户,那我们只需要知道是哪家公司有这个能力,把尺寸要求给它,让它造窗户就行了。
第三,算法是流程化的、可调用的、逻辑清晰的(算法)
计算机的算法就是一系列的指令,而指令是计算机能理解的语言。
人类的语言本身是复杂的、模糊的、会意的,比如“空山鸟飞绝”这句诗,看到的人会“脑补”这个画面。而计算机语言像小孩的语言,你必须给它所有精确的信息,它才能懂。计算机需要数过每一棵树,不多也不少,才知道这是一片有几棵树的森林。计算机的指令需要清晰、流程化,就像做一杯咖啡的指令,不管谁拿到这个指令,都可以做出同样的咖啡。
清晰的语言表达是计算思维的要点。拆解使语言变得清晰。比如,计算机把物体从小到大做一个排序队列,它的办法是:(1)拿一个新的物体;(2)从队列个开始比较,直到找到这个物体合适的位置;(3)把这个物体插入这个位置。这3个步骤非常清晰,没有歧义,对任何数目的物体都会奏效。在第2章我们会看到,这个算法叫插入排序算法。抖音排视频可以用这个算法,淘宝排商品也可以用这个算法。无论是抖音需要每天推荐1亿个短视频,还是淘宝同时服务1000万名用户,当它们做到后一步,需要向用户展示一个排好序的清单的时候,它们用的都是我们会在第2章学到的排序算法。在本书中,我会介绍各种基本的算法,可以说,现代和未来的数字世界就搭建在这些算法之上。算法是约定俗成的好方法,一个算法可以解不同的问题,一个问题可以由不同的算法来解。我们需要知道各种算法的存在,懂得它们的原理,学会调用它们,让算法为我们服务。
第四,可重复性带来规模效应(模式识别)
计算机的算法不是用来解一个问题的,而是用来解一类问题的。这个解是可以重复的。比如,抖音不是给一个人推荐视频,它的算法可以给一亿人推荐视频,每个人看到的内容是不一样的,形式和方法却是一样的。再比如,一个人脸识别算法不是只能识别某个人,而是可以把每个人的身份证照片和实际的影像进行匹配。
可重复性带来规模效应,这是计算机强大的根本原因。所谓模式识别,就是识别出哪些问题有共性,可以用同一个方法(比如排序)来解,这样我们就可以把这些问题交给计算机算法,让它重复做,做成千上万遍。
说到计算思维,人们通常会提出两个常见的问题。
个问题:计算思维和数学思维是一回事吗?
答案:不是。简单地说,数学寻求的是真理,数学问题会有一个答案或者一个证明,数学关心的是正确性。比如7 3=10。计算思维更关心怎样有效地把一件事做出来。对计算机来说,一个问题有解还是不够的,关键是怎么解,是否能在合适的时间内找到令人满意的答案。比如说,能否在1秒钟内给我推荐合适的视频,在10秒钟内找到去公司的短路径,或者要在50亿个网页中找到和“火箭”相关的网页?怎么才能在合理的时间内把一件事做出来,是计算思维关心的问题。
103是不是个素数?这是个数学问题。写一个算法来判断任意数字是不是一个素数,这是个计算机的问题,计算机能解决所有判断素数的问题。再比如,300万和200万哪个大,是个数学问题。如何让300万人同时在线看球赛,是个计算机的问题。
第二个问题:计算思维和编程是一回事吗?
答案:不是一回事,但是有一定关系。计算思维可以说是学编程之前的基础技能,也可以说是贯穿编程过程的底层思维。没有计算思维就学不好编程,但是计算思维不受限于编程语言,比编程囊括得更广。用一种编程语言写出算法,交给计算机去运行,不论是用C语言、Python、Java,还是其他编程语言,这个过程都是编程。从计算机编程诞生以来,人们设计出的编程语言有100多种,而算法是不需要懂得任何编程语言就可以学会的。
用写文章做比喻,编程好比写汉字、写英语或者写日文,计算思维则类似于文章的构思、组织和内容。会编程只是掌握了和计算机直接交流的语言,而拥有计算思维才能写出正确的程序。我们都知道,人与人之间的交流可以通过非文字的方式,比如画画。和计算机交流也可以通过使用现成的App、图形化编辑软件等,不一定要通过编程。
谁可以读这本书
所有的人都可以读这本书。
你可以是不在计算机行业的成人,想了解算法是怎么回事,计算机是怎么工作的,AI是怎么学习的,掌握人人熟知的基本概念。这属于知识性的阅读。
你可以是中学生、大学生,这本书可以带你入门,以便你将来更好地学习和计算机相关的内容。这属于趣味性的阅读。
你可以是孩子的家长,不知道孩子是否该学编程,怎么算学懂,你可以带着孩子一起读。当然,掌握了计算机的方法论,你也可以解决自己遇到的实际问题,比如如何做复杂项目,使你的工作和生活更高效。
如果你已经是计算机专家,你可以看到,原来许多概念也可以由繁入简,原来可以用这样简单的例子去解释你已有的技能,你将耳目一新。
虽然这只是一本入门书,但我还是希望能带大家窥探一下计算世界的精美和巧妙,展示它如何用非常优美的、极其聪明的、超常简洁的办法去解决复杂的难题。比如一个不规则的大问题怎么变成多个规则的小问题,比如貌似非常不同的问题背后其实是同样的模式,比如AI其实就是预测,比如如何用简单的黑白二维码来表示繁多的信息,比如用自我嵌套的递归方法可以画出极其优美的图案和解答世界末日的谜题。
希望这本书会给你一个不同的看世界的视角。
|
|