未来算法:下一个十年赢在计算思维
上QQ阅读APP看书,第一时间看更新

前言
操纵未来世界的算法

现代世界是计算机的世界。当今世界的每个人,几乎每时每刻都在跟计算机打交道。从早上出门打车用的打车软件、导航软件,上班用的电脑、文件和在线工具,点外卖咖啡的App(应用程序)和快递调度,到手机支付,孩子上的网课,在淘宝、京东购物,看微信,刷抖音,用语音助手,和机器人聊天,这些行为背后全是强大的计算机在操纵。

未来是人和机器一起仰望星空的时代。新兴的计算技术给世界带来了波澜壮阔的变革。从载人火箭的发射和回收,到无人驾驶,从高尖的AI(人工智能)、大数据、搜索,到人脸识别、基因检测、电子医疗、智慧城市规划,所有这些大型的工程项目,唯有我们和强大的计算技术携手才能做到。

2016年,谷歌旗下公司开发的AI计算机程序AlphaGo战胜了围棋世界冠军李世石。其实,早在1997年,计算机“深蓝”已经战胜了世界上最厉害的国际象棋选手加里·卡斯帕罗夫(Garry Kasparov),但是围棋的棋局变化众多,一直到最近,都还是人略胜计算机一筹的。AlphaGo 2016年之后的连续胜利,让所有人认同,AI在围棋方面已经超越人类职业围棋的顶尖水平。这个现象引发了社会上非常多的探讨:计算机的能力是否已经全面超过人类?在未来的计算世界里,我们的生存空间在哪儿?

计算机的发展始于20世纪初,20世纪四五十年代开始应用,80年代电脑进入家庭,90年代互联网兴起,21世纪初移动互联网和智能手机带来变革。半个多世纪以来,计算机科学家们发展出了一套方法来指导计算机,让计算机实现前面描述的这些变革性的应用。那些强大而精妙的、影响我们未来每一天的算法,就是本书要给大家介绍的未来算法,而这套思维方法也叫计算思维(computational thinking)。

算法是打开未来世界的钥匙,是计算思维的核心概念。计算思维,简单地说就是计算机怎么解决世界的问题。它包含几个部分:把复杂问题分解成简单问题,找出重复的模式,把物理世界的信息抽象表示成计算机能够理解的信息和很多约定俗成的算法。本书会用你能懂得的例子向你介绍这些概念。

未来算法教你像计算机一样思考。学会了计算思维,你可以看透互联网世界和AI是怎么运作的,你也就学会了一种解决大规模复杂问题的方法。计算机最强有力的地方在于以一抵万。它做的不是小事,是大事,是在10亿个网页里找出一条信息,统计识别全国人口的身份,同时处理上千万笔订单,或者给几亿名用户个性化推荐短视频这样的大事。计算机最强大的地方在于它的规模,学习计算思维会让你学会这种规模思考。

计算思维给你一套未来社会的交往语言——算法、数据、模型、迭代、AI等,这些都是现代人必须深入了解的概念。计算思维的方法,比如分解问题、资源优化,也成为我们处理问题的标准方法。看完这本书,你再见到这些概念的时候就不再感到陌生,不再是外行,你在交谈和决策时就会不惧不恐,不停留在空洞模糊的理解中。

计算思维会对你的每日生活和工作有帮助,你会发现生活中处处是算法,会从一个全新的角度看待日常的问题,比如如何找到去公司的最短路径,如何管理时间,如何用优化的方法找餐馆和找伴侣,如何加密你的信息,机场人流是怎么回事,骗子是怎么利用简单算法让很多人上当的。计算思维也能帮你了解日常应用是怎么工作的,比如为什么滴滴知道你要去哪里,朋友圈为什么可以一直刷。计算思维还会帮你做事,帮你更有效地利用这些强大的计算机应用。比如了解搜索引擎的原理后,当你要找一份工作,你就知道如何缩小范围去找到合适的结果。再比如你想提高自己淘宝店商品的排名,你如果了解其分类和排序的规则,你的商品就有可能排到前面。

计算思维也可以帮助你解决人生的复杂问题。计算思维是一套方法论,一套解决复杂问题的方法论,这套方法论可以迁移到生活当中,给你指导:如何做好一名CEO(首席执行官)?如何让孩子上好大学?如何在享受现在的生活和探索新的机会之间找到平衡?这些问题的本质是如何优化,如何做选择,如何做成一件大事。比如,你的焦虑感可能源于未能合理地分类,把可控和不可控的事情分开。我们都知道人生的难题不能用一个算法来解。计算思维会教你分解问题,找出规律,教给你直觉和框架。这对我们了解复杂的世界,做正确的人生决策有很大的帮助。

什么是未来算法和计算思维

现在,我们更进一步地来理解本书要介绍的算法和计算思维。你是否想过,为什么计算机科学对现有的几乎所有的领域都产生了巨大的影响?

现有的科学领域,比如说医学、物理学、生物学、教育学,都是很专业的领域,而计算机科学属于解决问题的科学领域。它的影响力在于,它的方法能够渗入并帮助其他各个领域,解决那些领域本身存在的问题。比如,计算机帮助医生在图像中寻找病人患癌症的可能性,帮助物理学家在千万张星空影像中找到新星,帮助生物学家快速排序病毒DNA(脱氧核糖核酸)并预测可能的变异,帮助教育专家了解每个孩子的不同并真正做到个性化教学。

大家知道,计算机是机器,机器是死板的。计算机能懂得的命令是非常简单的。就像一个一两岁的小孩一样,一台普通计算机能够懂得的命令只有非常少的几种,比如“加一”“减一”“判断两个数是否相等”。这些简单的命令可以合起来让计算机完成一些标准的任务,比如把一串数字按大小排序。

那计算机为什么能做到那些炫酷的、人类做不到或者比不上的事情呢?这是因为它的速度特别快。快到什么程度?任何一台现代的计算机都可以在一秒之内读完《莎士比亚全集》。它可以在人无法感知的毫秒内完成几百万甚至数千万次的计算。另外,计算机还有一个优点,就是它可以不厌其烦,不断地重复做一件事。比如,你让一个人把100本书按名字首字母顺序排列可能不算难。但是如果让他排1万本书,他就非常累了,可能要排好几天。计算机是不怕累的,它可以快速且不抱怨地重复劳动。别说有1万本书,哪怕是10万本、100万本、1亿本,它都可以正确地排出来。理解了既死板又强大的计算机,你就理解了它是怎么做事的。计算思维的核心方法,就是充分利用计算机这种快速、精确、规模化的能力,把这种能力用算法表示出来,让计算机来完成。

图a

目前业界公认,计算思维包含4个方面:分解问题、抽象、算法、模式识别(见图a)。其中,算法是直接用来解决问题的方法,而其他几个概念能帮助人们用算法来表示生活中的问题,从而让计算机来解决这些问题。下面我们再具体地解释一下上面提到的4个核心方面。

第一,拆解复杂问题,直到复杂问题成为可重复的简单问题(分解问题)

不同学科、不同时间段、不同的人都有不同的思维方式和认知世界的方式。做同一件事,比如说盖一栋房子,建筑师想到的是设计风格,材料工程师想到钢筋水泥,文学家想到写个故事,而计算机看到的是:窗户、门、墙、地板,一起有结构地搭成一栋完整的房子。在计算机看来,窗户尽管大小形状不一,但都是窗户,门可以有不同的材质,但都是门。对计算机来说,盖一栋房子,是用多少个组件和如何搭建起来的问题。

用计算思维解决问题,首先就要拆解。分解问题是把原问题分解成子问题,解子问题,再把子问题的解合成原问题的解。无论多么强大的计算机应用,背后都是把原问题分解成可以解的子问题,只是规模不同。

你可能会用抖音刷短视频看,那抖音的个性化推荐算法是怎么回事呢?它怎么知道你喜欢什么视频呢?在计算机看来,这个问题可以拆解成:(1)把所有的视频按内容分类和排序;(2)根据所有用户(包括你)以前各自的观看习惯,推导出喜好;(3)把视频内容和用户喜好进行匹配,按匹配程度排序,这个排序可以用我们第2章要讲的排序算法来做。也就是说,你用抖音刷视频对计算机来说分三大步,每一步都可以继续拆解,直到每一步都可以用算法来完成。

淘宝看上去是做完全不同的事,但是你能想到吗,它最终也是个排序的问题。淘宝是把你要找的商品做个排序,按照你的需求来排。这两个强有力的应用,最终解决的都是排序算法的问题。但是它们排的东西不一样,一个是视频,一个是商品。排的方法也不一样,一个要学习你的喜好,让你喜欢看,看的时间长;另一个要尽快有效地促成交易。

第二,把生活中的问题抽象化,用约定俗成的算法来解(抽象)

我们生活在一个物理世界里,计算机生活在一个数字世界里。计算机并不像人一样理解真实的事物,我们需要把真实的世界表达成它能理解的语言。然后在计算或操作后,它才能在真实世界中把结果展示出来。

比如,抖音需要用ID(身份标识号)或者名字把视频表示成计算机可以理解的形式,也要把视频内容表示成计算机可以理解的形式。同样,淘宝需要把商品的名字、内容、价格等表示成计算机可以理解的形式。被计算机排序后,这些物品需要转换回人能够看见的视频或者商品。这个把真实物理世界和计算机数字世界对应的过程就是抽象。

在进行抽象的时候,我们要忽略不必要的空间或时间细节,以集中解决关键的问题。比如,要计算机调度公交车,只需要对它表示车站和地理位置,而不需要表示路旁的商店和花草。再比如,在App里面找一首歌,只需要对它表示这首歌的名字和歌手,播放的时候,才需要音频文件。

一旦问题被抽象成计算机可以理解的形式,比如转化为上面提到的排序问题,那么,这个问题就有约定俗成的解法了。在本书的第2章,我会向大家介绍一些常用的排序算法,比如冒泡排序、插入排序等。这些算法是计算机科学家研究出来的正确而高效的算法,是放之四海而皆准的算法。我们不需要重新去发明它们,就好比造房子的时候有其他公司已经能做出世界一流的窗户,那我们只需要知道是哪家公司有这个能力,把尺寸要求给它,让它造窗户就行了。

第三,算法是流程化的、可调用的、逻辑清晰的(算法)

计算机的算法就是一系列的指令,而指令是计算机能理解的语言。

人类的语言本身是复杂的、模糊的、会意的,比如“空山鸟飞绝”这句诗,看到的人会“脑补”这个画面。而计算机语言像小孩的语言,你必须给它所有精确的信息,它才能懂。计算机需要数过每一棵树,不多也不少,才知道这是一片有几棵树的森林。计算机的指令需要清晰、流程化,就像做一杯咖啡的指令,不管谁拿到这个指令,都可以做出同样的咖啡。

清晰的语言表达是计算思维的要点。拆解使语言变得清晰。比如,计算机把物体从小到大做一个排序队列,它的办法是:(1)拿一个新的物体;(2)从队列第一个开始比较,直到找到这个物体合适的位置;(3)把这个物体插入这个位置。这3个步骤非常清晰,没有歧义,对任何数目的物体都会奏效。在第2章我们会看到,这个算法叫插入排序算法。抖音排视频可以用这个算法,淘宝排商品也可以用这个算法。无论是抖音需要每天推荐1亿个短视频,还是淘宝同时服务1 000万名用户,当它们做到最后一步,需要向用户展示一个排好序的清单的时候,它们用的都是我们会在第2章学到的排序算法。在本书中,我会介绍各种基本的算法,可以说,现代和未来的数字世界就搭建在这些算法之上。算法是约定俗成的好方法,一个算法可以解不同的问题,一个问题可以由不同的算法来解。我们需要知道各种算法的存在,懂得它们的原理,学会调用它们,让算法为我们服务。

第四,可重复性带来规模效应(模式识别)

计算机的算法不是用来解一个问题的,而是用来解一类问题的。这个解是可以重复的。比如,抖音不是给一个人推荐视频,它的算法可以给一亿人推荐视频,每个人看到的内容是不一样的,形式和方法却是一样的。再比如,一个人脸识别算法不是只能识别某个人,而是可以把每个人的身份证照片和实际的影像进行匹配。

可重复性带来规模效应,这是计算机强大的根本原因。所谓模式识别,就是识别出哪些问题有共性,可以用同一个方法(比如排序)来解,这样我们就可以把这些问题交给计算机算法,让它重复做,做成千上万遍。


说到计算思维,人们通常会提出两个最常见的问题。

第一个问题:计算思维和数学思维是一回事吗?

答案:不是。简单地说,数学寻求的是真理,数学问题会有一个答案或者一个证明,数学关心的是正确性。比如7+3=10。计算思维更关心怎样有效地把一件事做出来。对计算机来说,一个问题有解还是不够的,关键是怎么解,是否能在合适的时间内找到令人满意的答案。比如说,能否在1秒钟内给我推荐合适的视频,在10秒钟内找到去公司的最短路径,或者要在50亿个网页中找到和“火箭”相关的网页?怎么才能在合理的时间内把一件事做出来,是计算思维关心的问题。

103是不是个素数?这是个数学问题。写一个算法来判断任意数字是不是一个素数,这是个计算机的问题,计算机能解决所有判断素数的问题。再比如,300万和200万哪个大,是个数学问题。如何让300万人同时在线看球赛,是个计算机的问题。

第二个问题:计算思维和编程是一回事吗?

答案:不是一回事,但是有一定关系。计算思维可以说是学编程之前的基础技能,也可以说是贯穿编程过程的底层思维。没有计算思维就学不好编程,但是计算思维不受限于编程语言,比编程囊括得更广。用一种编程语言写出算法,交给计算机去运行,不论是用C语言、Python、Java,还是其他编程语言,这个过程都是编程。从计算机编程诞生以来,人们设计出的编程语言有100多种,而算法是不需要懂得任何编程语言就可以学会的。

用写文章做比喻,编程好比写汉字、写英语或者写日文,计算思维则类似于文章的构思、组织和内容。会编程只是掌握了和计算机直接交流的语言,而拥有计算思维才能写出正确的程序。我们都知道,人与人之间的交流可以通过非文字的方式,比如画画。和计算机交流也可以通过使用现成的App、图形化编辑软件等,不一定要通过编程。

本书是怎么组织的

为了便于非专业读者理解,也为了更有趣味性,我选择了一种由浅入深的方法来介绍未来算法和计算思维。

第一部分 基石

在简单介绍分解问题的第1章之后,我会从计算思维的基本组成单元——三类最常见的算法讲起:第2章讲排序算法,第3章讲分类算法,第4章讲搜索算法。这几种算法比较容易理解,也比较有趣,同时又很强大,计算机世界所有的应用都会用到它们,它们是计算思维的基础组件。在第5章中,我将介绍有趣的递归算法,一种精妙优雅的计算领域人人必懂的算法。

第二部分 架构

然后,我将用4章内容来讲述在懂得基础算法后,如何把它们组织在一起并做成强有力的大事。第6章我将介绍数据和数据结构,因为现代的算法全部和数据息息相关。第7章是模式识别,讲述计算机如何把做过一遍的事做成千上万遍,这也是计算机强大的最根本原因。第8章讲如何把物理世界的事情抽象到数字世界,从文字、图片到视频,再到正在兴起的VR(虚拟现实)、AR(增强现实)。第9章讲计算思维的最核心——优化。生活就是个优化问题,希望这一部分的内容,能帮助广大读者从全新的角度看待生活中的问题,提高工作和生活的效率。

第三部分 未来

计算技术的各个方面都在引领未来可能的发展,在各个技术领域当中,最吸引人的技术又是AI。在第10章,我会用你在本书中学到的概念和方法来解释AI。AI就是让机器像人一样思考,像人一样交流,像人一样做事。希望本书的读者在读了这章之后,不仅仅了解玄妙而强大的AI能干什么,而且在一定程度上知道它们是怎么做到的,原理是什么。这样,我们就可以在今后的工作和生活中,知道如何利用AI,和AI合作共舞了。

本书的各个章节如图b所示。这些章节之间虽然有一定的相关性,但没有强联系,所以读者可以直接读感兴趣的章节。本书所讲的算法和其他概念,基本可以覆盖计算机解决的80%的关键问题,当然难度是大大降低了的。

图b

谁可以读这本书

所有的人都可以读这本书。

你可以是不在计算机行业的成人,想了解算法是怎么回事,计算机是怎么工作的,AI是怎么学习的,掌握人人熟知的基本概念。这属于知识性的阅读。

你可以是中学生、大学生,这本书可以带你入门,以便你将来更好地学习和计算机相关的内容。这属于趣味性的阅读。

你可以是孩子的家长,不知道孩子是否该学编程,怎么算学懂,你可以带着孩子一起读。当然,掌握了计算机的方法论,你也可以解决自己遇到的实际问题,比如如何做复杂项目,使你的工作和生活更高效。

如果你已经是计算机专家,你可以看到,原来许多概念也可以由繁入简,原来可以用这样简单的例子去解释你已有的技能,你将耳目一新。

虽然这只是一本入门书,但我还是希望能带大家窥探一下计算世界的精美和巧妙,展示它如何用非常优美的、极其聪明的、超常简洁的办法去解决复杂的难题。比如一个不规则的大问题怎么变成多个规则的小问题,比如貌似非常不同的问题背后其实是同样的模式,比如AI其实就是预测,比如如何用简单的黑白二维码来表示繁多的信息,比如用自我嵌套的递归方法可以画出极其优美的图案和解答世界末日的谜题。

希望这本书会给你一个不同的看世界的视角。

关于作者

我受过两次完整的计算机教育。

第一次是本科,在清华大学计算机系,我学习了所有的计算机方面的基础课。当时,计算机是个新兴的学科,清华有非常优秀的专业老师,我学到了很多的计算机基础思维。我的本科专业是AI。当年清华计算机系每个年级6个班,入学的时候把每个班的专业分好,我所在的三班刚好是AI专业。所以在本科的时候,我们就接触了当时AI领域的许多前沿技术。

那时清华本科是5年制,正要开始教育改革,有少部分学生可以在四年级的时候开始接触研究生的一些活动,6年可以拿到硕士学位。我有幸成为被选中的几个学生之一,在本科四年级的时候,我进入了清华的AI实验室,师从于张钹老师,做一些简单的机械手方面的研究。从张老师和高年级的同学们那里,我学到不少当时国际先进的AI领域的知识,也对如何做研究有了初步了解。

当我到斯坦福大学计算机系读硕士和博士的时候,我却发现有很多和本科课程相同的课,他们教的方法是很不一样的。比如让学生学习编译器、操作系统,采用的都是项目式学习,让学生直接写一个编译器或者操作系统。所以,我在斯坦福又把所有的计算机课学了一遍。

好运的我刚好赶上了斯坦福计算机系的黄金时代。那时候,计算机界的很多大师还在,世界公认的AI鼻祖约翰·麦卡锡(John McCarthy)教授来参加讨论,高德纳(Donald Knuth)在做计算沉思(Computer Musing)系列演讲,写他的举世名作《计算机程序设计艺术》(The Art of Computer Programming)。我有幸跟从许多后来闻名世界的学者和老师直接学习,比如我上的计算机体系架构基础课的老师是约翰·汉尼斯(John Hennessy),他是后来的斯坦福大学校长、图灵奖获得者、MPIS(普美思科技)公司创始人。AI基础课教授是尼尔斯·尼尔森(Nils Nilsson)教授,他也是AI的学科创始人之一和世界级专家,写作了被广泛引用的经典之作《对AI的探索》(The Quest for Artificial Intelligence)。操作系统基础课老师是孟德尔·罗森布拉姆(Mendel Rosenblum),他后来成为威睿(VMware)创始人。那时,他刚刚从加州大学伯克利分校毕业,有一次给我们上课迟到了,因为他不知道去哪里领结婚证。当然,在数据库和大数据领域,著名的斯坦福大学信息实验室也在那个时候成立,我的三位博士生导师赫克托·加西亚-莫利纳(Hector Garcia-Molina)、杰弗里·厄尔曼(Jefrey Ullman)和珍尼弗·维多姆(Jennifer Widom)几乎书写了整个领域的教科书。杰弗里·厄尔曼刚刚获得2021年图灵奖。

当然,我们当时也不知道这里有即将在工业界产生世界级影响的小辈们,比如达芙妮·科勒(Daphne Koller),Coursera(大型公开在线课程项目)联合创始人,她当时快要读完博士,是我们为数不多的女生的小组长。年青一代的学生,隔壁楼的黄仁勋刚毕业就创立了英伟达,杨致远(Jerry Yang)和大卫·费罗(David Filo)在汉尼斯老师休假期间做出了世界万维网最流行的导图雅虎(Yahoo!)。和我坐在同一个隔间的同学是谷歌的联合创始人谢尔盖·布林等。在这里,我们共同见识了计算机技术领域的世界前沿。

毕业后,我在美国硅谷和中国北京工作,一直在技术行业,做过研究员、架构师、产品经理、创业公司CEO、技术高管。我曾在一家叫Hulu(视频网站)的美国公司做中国区总经理,团队使用AI和机器学习技术做视频内容的识别、推荐、搜索等。我还带领团队写了两本关于机器学习算法的畅销书《百面机器学习》和《百面深度学习》。

多年以后我才理解到,计算机这个学科教给我的分解问题、优化、模式识别的办法,其实在很多方面帮助了我,不仅在技术方面,也在战略、决策、公司管理、个人成长等方面。受过计算思维训练的人有一套结构性地看待问题的方法,永远不会害怕复杂的难题,会清楚地看到重要的点,把时间和精力花在关键问题上。

同时,我是两个孩子的妈妈,老大在剑桥大学读物理专业,老二在芝加哥大学。我写过一本关于他们两人成长的书《魔鬼老大,天使老二》,也运营家庭教育相关的微信公众号“东西方教育”,我的“得到”App课程《如何培养面向未来的孩子》有13万名付费用户。有趣的是,“东西方教育”上最受欢迎的文章叫《我的孩子要不要学计算机》。

几年前,我家二儿子骐骐十二三岁时,有一次说他在学校参加了一个“奇怪的比赛”。这个比赛叫“Bebras(百博思)国际计算思维挑战赛”,是一个有超前意识的比赛,由牛津大学和谷歌承办,目的是“让全世界的孩子为计算而兴奋”。比赛的内容是“计算机科学家们喜欢解决的问题”,也就是评测孩子的计算思维。世界各国的孩子不需要学统一的编程语言,也不需要说统一的语言,都可以参赛。

骐骐去牛津大学参加了决赛。他们有一整天的比赛和其他相关的活动,听了计算机科学家的演讲,看了有趣的先进AI展示。因为骐骐参加这个比赛,我仔细地看了所有的资料,跟踪了他的比赛过程。在这个过程中,我了解了“计算思维”这个还比较鲜为人知的概念,看到培养未来人才算法技能的重要性。

在我的教育理念和方法中,有一点比较独特,是其他教育工作者不曾提及的,那就是重视复杂技能的培养。人的基础技能是像数学、语文、英语、绘画等学校可以教的技能,而复杂技能是把这些基础技能组合在一起,做成一件大事的能力。比如说,做一个项目的领导,一家公司的CEO,一座桥梁的总工程师或者一个乐队的指挥。这些人需要具备这样的能力:把一个大项目清晰地分解成可执行的小项目,领导团队协作完成,并且掌控全局。教孩子们既能站得高,又能解决问题,这要靠计算思维。

作为一个计算机行业的从业者,作为一个培养过上千名技术人才和管理人才的领导者,在我头脑里,“计算”和“教育”这两条线交会在一起,我深深地理解了为什么计算思维能力很重要,它的精髓所在,它和其他数理能力的不同,以及它可以怎样一步步培养。

“计算”和“教育”这两条线的交会,让我决定写这本关于计算思维的科普书。我希望能用简单的形式把我这么多年领会到的计算思维的精髓教给更多的人,希望不了解计算机的读者能入门而不再望而生畏,希望已了解计算机的读者能更加清晰地思考和应用这些能力。

在写这本书的过程当中,我问过自己很多问题,尤其是关于“难度”的问题。写这本书最大的挑战是把握讲解的难度。计算机处理的是大规模的问题,它的方法和看问题的角度和我们熟知的常规不太一样。本书为了照顾大家不同的水平,最初的例子是尽可能简单的,中小学的孩子就可以理解。然后,我帮助大家举一反三,看到同样的思路可以解决几百、几万、几亿个同类问题。

本书不打算面面俱到,但是希望覆盖计算思维最经典的概念,比如什么是算法、递归,什么是分类树。本书也试图介绍计算机领域最经典的例子,比如汉诺塔、旅行中的推销员。另外,我也尝试着在尽可能简化的情况下,讲述计算思维怎么帮助我们理解日常生活中常用的强大应用,比如短视频、搜索、电商、电子扫地机器人、AI等。书中还有一些我本人学习计算思维的小故事和一些与计算思维相关的著名历史故事。当然,我主要是根据重要性和趣味性选择一些话题,希望能够带大家进门,引起大家的兴趣。

洞察力,是我最希望读者能够从本书中得到的。在我看来,那个被计算机和算法轻车熟路地操纵着的未来世界,我希望你也能看到!