1 00:00:09,510 --> 00:00:10,762 ‎911 有什么紧急情况? 2 00:00:11,679 --> 00:00:13,389 ‎911 有什么紧急情况? 3 00:00:13,473 --> 00:00:14,932 ‎911 有什么紧急情况? 4 00:00:15,058 --> 00:00:16,392 ‎911 有什么… 5 00:00:19,854 --> 00:00:24,400 ‎2014年4月9日 ‎911报警电话突然中断 6 00:00:24,484 --> 00:00:27,111 ‎全美国有数百万人无法打进电话报警 7 00:00:27,779 --> 00:00:30,031 ‎崩溃持续了超过六个小时 8 00:00:30,364 --> 00:00:33,367 ‎超过6000通报警电话无法接通 9 00:00:33,910 --> 00:00:35,912 ‎政府将问题追查到了一台电脑上 10 00:00:35,995 --> 00:00:38,706 ‎科罗拉多州恩格尔伍德的 ‎一个电话路由设备 11 00:00:39,082 --> 00:00:41,209 ‎只是因为一个简单的编程错误 12 00:00:41,918 --> 00:00:43,961 ‎负责给那台电脑编程的人 13 00:00:44,045 --> 00:00:47,507 ‎选择给电脑能记录的电话数量 ‎设置了一个上线 14 00:00:47,840 --> 00:00:51,010 ‎这位程序员认为这是一个 ‎电脑永远不可能达到的数字 15 00:00:51,427 --> 00:00:54,222 ‎但2014年的那天晚上 ‎电话数量达到了这个数字 16 00:00:54,680 --> 00:00:56,933 ‎电脑完美执行了它的指令 17 00:00:57,016 --> 00:00:59,310 ‎达到了上限 就不再转接电话了 18 00:01:00,061 --> 00:01:01,979 ‎问题不是出在电脑上 19 00:01:02,105 --> 00:01:03,940 ‎也不是程序出了故障 20 00:01:04,482 --> 00:01:06,067 ‎而是程序本身 21 00:01:06,275 --> 00:01:09,362 ‎问题出在人们与电脑沟通的 22 00:01:09,445 --> 00:01:10,488 ‎决策过程中 23 00:01:10,571 --> 00:01:14,659 ‎这种能力也带来了巨大的伦理责任 24 00:01:14,742 --> 00:01:15,910 ‎没什么和做这件事一样 25 00:01:15,993 --> 00:01:18,204 ‎没有任何可以替代它的东西 26 00:01:18,329 --> 00:01:19,747 ‎其实非常类似 27 00:01:19,831 --> 00:01:21,415 ‎(蒂姆吴 《总开关》作者) 28 00:01:21,541 --> 00:01:23,751 ‎决定你在城市中的生活方式 29 00:01:23,835 --> 00:01:28,840 ‎我觉得代码控制着我们的网络生活 ‎方式 这基本等同于我们的生活方式 30 00:01:29,507 --> 00:01:31,300 ‎不仅是上网的时候 31 00:01:31,384 --> 00:01:33,594 ‎还有联系紧急服务的时候 32 00:01:34,554 --> 00:01:35,596 ‎去看医生的时候 33 00:01:36,180 --> 00:01:37,598 ‎上车的时候 34 00:01:37,890 --> 00:01:40,643 ‎我们每天的生活都和代码密切相关 35 00:01:41,602 --> 00:01:47,024 ‎然而 所有人之中 ‎只有大约0.33%的人懂的怎么写代码 36 00:01:47,233 --> 00:01:49,986 ‎对绝大多数人来说 这就是个黑匣子 37 00:01:50,695 --> 00:01:51,988 ‎但并不是非得如此 38 00:01:52,446 --> 00:01:55,199 ‎编程到底是什么原理呢? 39 00:01:55,658 --> 00:01:58,286 ‎我们又在用它 ‎搭建着什么样的新世界呢? 40 00:01:59,287 --> 00:02:01,122 ‎NETFLIX 原创纪录片系列 41 00:02:01,205 --> 00:02:02,540 ‎计算机 42 00:02:03,082 --> 00:02:05,835 ‎是由人类创造出来的精巧的 43 00:02:05,918 --> 00:02:07,879 ‎电子硬件合集 44 00:02:08,087 --> 00:02:11,382 ‎我们并不是 ‎缺乏合适的机器去解决问题 45 00:02:11,465 --> 00:02:14,177 ‎而是缺乏合适的解决问题的描述 46 00:02:14,260 --> 00:02:17,972 ‎别人提到编程的时候 ‎你会觉得真的很难 47 00:02:18,556 --> 00:02:22,685 ‎必须要记住非常重要的一点 ‎那就是你在计算机上所使用的一切 48 00:02:22,768 --> 00:02:25,271 ‎都是由某些人类创造出来的 49 00:02:26,230 --> 00:02:27,648 ‎剧名:编程 50 00:02:31,944 --> 00:02:34,947 ‎比方说有外星人来了 你会想: ‎“好吧 程序有什么重要之处? 51 00:02:35,031 --> 00:02:35,907 ‎到底是什么?” 52 00:02:35,990 --> 00:02:37,283 ‎我会说:“你知道吗? 53 00:02:37,533 --> 00:02:41,412 ‎我们住在这个实体星球上 ‎大约50年前 54 00:02:41,495 --> 00:02:44,582 ‎有一小群人开始建造另一个星球 55 00:02:44,665 --> 00:02:46,876 ‎不是实体的星球 一个虚拟星球 56 00:02:47,001 --> 00:02:50,213 ‎在街上四处看看 ‎很多人在街上一边走 57 00:02:50,296 --> 00:02:52,548 ‎一边低着头盯着手机看? 58 00:02:52,632 --> 00:02:54,091 ‎他们事实上就在另一个世界 59 00:02:54,383 --> 00:02:56,093 ‎这就是程序 60 00:02:56,219 --> 00:02:58,054 ‎是另一个世界的构成要素” 61 00:03:00,056 --> 00:03:03,476 ‎这台织布机是全世界所有计算机 62 00:03:03,559 --> 00:03:04,393 ‎和手机的祖先 63 00:03:04,852 --> 00:03:06,854 ‎它发明于1804年 64 00:03:06,938 --> 00:03:09,232 ‎最大的创新在于这些卡片 65 00:03:10,107 --> 00:03:13,194 ‎每张卡片上的洞只允许某些针穿过 66 00:03:14,237 --> 00:03:16,405 ‎几百张卡片上有几千个洞 67 00:03:16,489 --> 00:03:19,492 ‎纺织工人们就能编织出 ‎比以往更为复杂的图案 68 00:03:20,243 --> 00:03:22,620 ‎图案复杂的披巾在欧洲盛行 69 00:03:23,037 --> 00:03:26,666 ‎编制图案可以变得非常错综复杂 ‎像是图画一般 70 00:03:26,916 --> 00:03:29,168 ‎比如这幅描绘纺织机发明者的 71 00:03:30,169 --> 00:03:33,422 ‎在这些纺织机出现之前 ‎每一根线都要人工挑选 72 00:03:33,547 --> 00:03:34,674 ‎由这些“图画男孩”负责 73 00:03:34,966 --> 00:03:36,801 ‎以前的数学也要人工来做 74 00:03:36,884 --> 00:03:38,886 ‎这些人就是所谓的“计算机” 75 00:03:39,095 --> 00:03:40,972 ‎所以第一批计算机是人 76 00:03:41,681 --> 00:03:43,557 ‎而当时可以帮助我们的最好的机器 77 00:03:43,641 --> 00:03:45,518 ‎只能解决一种数学问题 78 00:03:46,227 --> 00:03:48,229 ‎比如我们用来做加减法的算盘 79 00:03:49,480 --> 00:03:51,857 ‎英国数学家查尔斯巴贝奇 ‎想要一个机器 80 00:03:51,941 --> 00:03:54,610 ‎能帮他计算 ‎他想要解决的任何数学问题 81 00:03:54,777 --> 00:03:57,029 ‎或者说是编制了程式 ‎让它解决的问题 82 00:03:57,780 --> 00:04:00,908 ‎他构思了一种机器 ‎并将其称为“分析机” 83 00:04:01,242 --> 00:04:04,662 ‎巴贝奇的想法将让他青史留名 84 00:04:05,037 --> 00:04:10,167 ‎计算机最初是由巴贝奇发明的 85 00:04:10,710 --> 00:04:13,879 ‎他是一位非常古怪的英国发明家 86 00:04:14,046 --> 00:04:16,382 ‎巴贝奇获得了让机器运行的灵感 87 00:04:16,966 --> 00:04:19,593 ‎他一直在家里挂着一张 ‎这张图片的复制品 88 00:04:20,219 --> 00:04:23,347 ‎巴贝奇的分析机 ‎和雅卡尔织布机类似 89 00:04:23,431 --> 00:04:25,391 ‎都有实体部件 称为“硬件” 90 00:04:25,599 --> 00:04:27,101 ‎和织布机一样 91 00:04:27,184 --> 00:04:31,272 ‎可以给这些硬件下达指令 ‎通过打孔卡片的形式 92 00:04:31,689 --> 00:04:33,065 ‎小孔允许针通过 93 00:04:33,149 --> 00:04:36,193 ‎而没有小孔则会让针退回去 94 00:04:36,652 --> 00:04:38,988 ‎这样就激发了一系列机械计算 95 00:04:39,864 --> 00:04:41,324 ‎这些打着不同小孔的卡片 96 00:04:41,615 --> 00:04:42,825 ‎就是软件 97 00:04:43,701 --> 00:04:46,203 ‎巴贝奇没有完成他设想的分析机 98 00:04:46,579 --> 00:04:50,416 ‎但和他一起工作的一位年轻女性 ‎看到了远超数学范畴的 99 00:04:50,666 --> 00:04:52,126 ‎能改变世界的潜力 100 00:04:52,668 --> 00:04:55,671 ‎挨达拜伦 ‎也就是洛夫莱斯伯爵夫人写道: 101 00:04:56,005 --> 00:04:59,675 ‎“使用这些卡片的想法诞生的瞬间 102 00:04:59,759 --> 00:05:02,011 ‎就已经越过了数学的界限” 103 00:05:02,261 --> 00:05:04,221 ‎她看到了雅卡尔看到的东西: 104 00:05:04,347 --> 00:05:06,891 ‎小洞能代表的不仅仅是数字 105 00:05:07,058 --> 00:05:08,267 ‎也可以代表图案 106 00:05:08,392 --> 00:05:09,310 ‎音乐 107 00:05:10,644 --> 00:05:12,271 ‎或完整的句子 108 00:05:12,772 --> 00:05:14,982 ‎你可以将其想象成是类似摩尔斯电码 109 00:05:15,274 --> 00:05:19,987 ‎字母表中的每个字母在摩尔斯电码中 ‎都是由两种信号组成的 110 00:05:20,071 --> 00:05:21,739 ‎点或划 111 00:05:21,906 --> 00:05:22,865 ‎是二进制的 112 00:05:23,324 --> 00:05:26,452 ‎用这些哔哔声 我们就能表达一切 113 00:05:26,952 --> 00:05:30,790 ‎比如1912年泰坦尼克号发出的 ‎这个求救信号 114 00:05:31,457 --> 00:05:34,502 ‎SOS没有任何含义 115 00:05:34,710 --> 00:05:37,880 ‎只是用摩尔斯电码发特别容易而已 116 00:05:38,089 --> 00:05:42,885 ‎你也可以将每个字母用一系列 ‎零和一的组合 117 00:05:42,968 --> 00:05:44,512 ‎来表达 118 00:05:44,637 --> 00:05:45,930 ‎眼熟吗? 119 00:05:46,138 --> 00:05:47,640 ‎这就是二进制代码 120 00:05:47,848 --> 00:05:51,769 ‎我们就是由此缩小机器 ‎和人类语言之间的差距的 121 00:05:51,894 --> 00:05:55,773 ‎每个零或一是二进制中的一位 ‎或者一“比特” 122 00:05:55,940 --> 00:05:58,359 ‎这些是现代计算技术的原子 123 00:05:58,484 --> 00:06:00,236 ‎你也许熟悉它的另一个名字: 124 00:06:00,653 --> 00:06:02,613 ‎八个比特就是一个字节 125 00:06:03,239 --> 00:06:07,576 ‎你计算机上有张照片 ‎显示大小是1.1兆字节 对吗? 126 00:06:08,160 --> 00:06:11,956 ‎这里面就包含了880多万个一和零 127 00:06:12,373 --> 00:06:16,919 ‎正如摩尔斯电码的点和划 ‎是用来写下不同长度的哔声的 128 00:06:17,002 --> 00:06:20,297 ‎二进制代码中的一和零 ‎只是我们用来写下 129 00:06:20,423 --> 00:06:22,508 ‎在现代计算机中 ‎究竟发生了什么的东西 130 00:06:23,217 --> 00:06:24,802 ‎带电还是不带电 131 00:06:25,511 --> 00:06:27,346 ‎这是个简单的电路 132 00:06:27,763 --> 00:06:30,599 ‎想象一下 ‎几百万个这样的东西一起运作 133 00:06:31,016 --> 00:06:32,476 ‎这就是今天的电脑 134 00:06:33,018 --> 00:06:35,271 ‎在一个电路上 这是一个比特 135 00:06:35,604 --> 00:06:37,857 ‎电灯泡不亮吗?那就是零 136 00:06:38,107 --> 00:06:39,567 ‎亮了?那就是一 137 00:06:40,067 --> 00:06:42,069 ‎计算机只能理解电力 138 00:06:42,278 --> 00:06:44,947 ‎所以程序员能对计算机做的一切 139 00:06:45,489 --> 00:06:46,323 ‎说到底 140 00:06:46,449 --> 00:06:49,368 ‎就是一系列打开或关闭电荷 141 00:06:49,702 --> 00:06:53,205 ‎这些能成功的原因是 ‎以正确的方式组装在一起 142 00:06:53,414 --> 00:06:56,041 ‎这些电荷能代表逻辑 143 00:06:56,625 --> 00:07:00,754 ‎基本上说 ‎逻辑是可预测的一系列事实或事件 144 00:07:01,255 --> 00:07:03,048 ‎比如关上这个开关 145 00:07:04,467 --> 00:07:07,052 ‎还有这个 146 00:07:09,054 --> 00:07:12,516 ‎事实上 计算机从业人员 ‎将其称之为“逻辑和电路” 147 00:07:13,476 --> 00:07:15,644 ‎或称为“逻辑门” 148 00:07:15,769 --> 00:07:18,439 ‎让我试试能不能 ‎在不把桌子烧出一个洞的情况下做到 149 00:07:18,522 --> 00:07:21,567 ‎在“与”门中 两个电路都要合上 150 00:07:21,650 --> 00:07:22,818 ‎灯泡才会亮 151 00:07:23,235 --> 00:07:24,695 ‎在“或”门中 152 00:07:24,778 --> 00:07:28,199 ‎只要有一个电路合上 灯就会亮 153 00:07:28,365 --> 00:07:29,700 ‎你也可以这么说 154 00:07:29,909 --> 00:07:34,371 ‎如果其中一个电路合上了 ‎那么就会点亮电灯 155 00:07:34,497 --> 00:07:36,916 ‎这种“如果 那么”的描述 156 00:07:36,999 --> 00:07:38,083 ‎就是一种算法 157 00:07:38,292 --> 00:07:42,505 ‎在当今流行文化中 ‎“算法”这个词会导致很多混淆 158 00:07:42,755 --> 00:07:45,925 ‎我们之前见过这种情况 ‎算法失去了控制! 159 00:07:46,008 --> 00:07:49,094 ‎算法运作的方式 ‎对大部分人来说是挺神秘的 160 00:07:49,178 --> 00:07:51,847 ‎算法到底是个什么东西? 161 00:07:51,972 --> 00:07:54,892 ‎但是算法其实只是一系列指令 162 00:07:55,184 --> 00:07:56,644 ‎假设你要走去商店 163 00:07:56,894 --> 00:07:59,522 ‎可以先左转 再右转 164 00:07:59,647 --> 00:08:02,525 ‎或者你也可以先右转 再左转 165 00:08:02,900 --> 00:08:04,985 ‎或者你可以左转四次 166 00:08:05,069 --> 00:08:06,111 ‎绕着公园跑一圈 167 00:08:06,195 --> 00:08:07,029 ‎穿过高速公路 168 00:08:07,112 --> 00:08:09,031 ‎然后再右转四次 169 00:08:09,365 --> 00:08:12,076 ‎就像走到同一个地方有不同方向一样 170 00:08:12,159 --> 00:08:14,578 ‎在编程中 要解决同一个问题 171 00:08:14,662 --> 00:08:15,996 ‎也可以有很多不同算法 172 00:08:16,372 --> 00:08:20,042 ‎目标就是找到最优雅、最高效的那个 173 00:08:20,459 --> 00:08:22,795 ‎美丽的代码是不会自我重复的 174 00:08:22,920 --> 00:08:24,922 ‎非常优雅 非常强大 175 00:08:25,631 --> 00:08:28,926 ‎搭载了算法的计算机 ‎做的也是我们要求的事 176 00:08:29,134 --> 00:08:30,844 ‎但快得多 177 00:08:31,136 --> 00:08:33,764 ‎这也让人们变得强大得多 178 00:08:34,223 --> 00:08:37,601 ‎科学家一开始研发氢弹的时候 179 00:08:38,018 --> 00:08:40,437 ‎主要使用的是人脑计算机 180 00:08:40,896 --> 00:08:42,815 ‎但之后 他们开始使用这个 181 00:08:43,315 --> 00:08:47,152 ‎埃尼亚克计算机 ‎运行了六周的热核计算 182 00:08:47,903 --> 00:08:50,197 ‎结果直接导致了这个 183 00:08:51,323 --> 00:08:53,659 ‎1952年第一次成功试射 184 00:08:54,076 --> 00:08:57,580 ‎一枚比二战时 ‎在广岛和长崎投下的原子弹 185 00:08:57,663 --> 00:09:00,708 ‎强劲几百倍的炸弹 186 00:09:01,500 --> 00:09:04,920 ‎编程的能力放大了人们 187 00:09:05,421 --> 00:09:06,672 ‎做自己想做的事的能力 188 00:09:07,590 --> 00:09:11,135 ‎但在20世纪40年代 ‎还是需要耗费很大功夫 189 00:09:11,468 --> 00:09:16,056 ‎用零和一来编程 ‎显然是无法规模化操作的 190 00:09:16,223 --> 00:09:19,018 ‎人们想要更多编程给予的能量 191 00:09:19,310 --> 00:09:21,520 ‎但他们想要更容易的编程方式 192 00:09:22,438 --> 00:09:27,776 ‎从那时起 程序就一直在努力 ‎越来越接近 193 00:09:27,860 --> 00:09:29,028 ‎人类的语言 194 00:09:29,403 --> 00:09:32,990 ‎发明了现在 ‎几乎所有程序员都会使用的东西: 195 00:09:33,115 --> 00:09:34,617 ‎编程语言 196 00:09:35,200 --> 00:09:38,996 ‎与零和一相比 这些语言相当抽象 197 00:09:39,580 --> 00:09:41,457 ‎抽象化对人们来说是个难词 198 00:09:42,249 --> 00:09:45,669 ‎更抽象的语言 ‎仍然是由同样的零和一构成的 199 00:09:45,794 --> 00:09:48,213 ‎我们只是找到了更好的方式 ‎来组织它们 200 00:09:48,881 --> 00:09:50,966 ‎可以从生物学角度来思考 201 00:09:51,550 --> 00:09:53,135 ‎人类是非常复杂的 202 00:09:53,218 --> 00:09:56,972 ‎但我们身体的99% ‎都是由区区6种元素构成的 203 00:09:57,348 --> 00:10:00,184 ‎你可以慢慢往大一些的分子发展 204 00:10:00,267 --> 00:10:02,811 ‎在这一层的组织以及 205 00:10:02,895 --> 00:10:04,730 ‎最简单的生物之间 206 00:10:04,813 --> 00:10:06,023 ‎其实有挺大的隔阂 207 00:10:06,357 --> 00:10:07,608 ‎人类还有大脑 208 00:10:07,691 --> 00:10:09,568 ‎大脑做的工作特别先进 209 00:10:09,652 --> 00:10:12,488 ‎很难相信 ‎它们仍是由同样的东西构成的 210 00:10:12,946 --> 00:10:16,784 ‎计算机其实挺像的 但是简单得多 211 00:10:17,951 --> 00:10:18,952 ‎这是好消息 212 00:10:19,578 --> 00:10:22,915 ‎编程就是将这个方框往上移的故事 213 00:10:23,165 --> 00:10:25,250 ‎越来越远离二进制 让我们拥有 214 00:10:25,334 --> 00:10:28,837 ‎更简单、更快捷、更强大的编程方法 215 00:10:29,088 --> 00:10:32,049 ‎而不用处理 甚至不用理解 216 00:10:32,466 --> 00:10:34,718 ‎最下层的二进制和逻辑门 217 00:10:35,344 --> 00:10:38,889 ‎这就是程序员得以编制出 ‎我们都熟悉的东西的方式 218 00:10:39,306 --> 00:10:41,308 ‎要做到这一点 第一步就是… 219 00:10:41,850 --> 00:10:45,813 ‎“汇编语言” 这种语言更容易读写 220 00:10:46,188 --> 00:10:49,608 ‎不用再写0、1、0、0、0、1、1、1 221 00:10:49,858 --> 00:10:51,318 ‎而是可以将其称为ADD 222 00:10:51,694 --> 00:10:58,200 ‎然后通过一个汇编程序 ‎将这些字母翻译过来 223 00:10:58,283 --> 00:11:03,455 ‎把一个个字母与一和零的组合对应 224 00:11:03,580 --> 00:11:07,292 ‎在这个层次 ‎二进制就被组织成了字母和数字 225 00:11:07,626 --> 00:11:10,379 ‎就像原子被组织成分子一样 226 00:11:10,921 --> 00:11:15,217 ‎但用汇编语言编程仍然不能算容易 227 00:11:15,843 --> 00:11:19,513 ‎因为所有这些计算机 ‎都会使用不同的汇编语言 228 00:11:20,097 --> 00:11:24,810 ‎给一台计算机写的程序 ‎在另一台计算机上就用不了 229 00:11:25,102 --> 00:11:27,187 ‎很快 人们开始思考 230 00:11:27,271 --> 00:11:29,440 ‎我们真正想要给计算机的 231 00:11:29,523 --> 00:11:32,818 ‎是我们每天都会用的词汇 232 00:11:33,193 --> 00:11:35,863 ‎有用汇编语言 233 00:11:35,946 --> 00:11:39,825 ‎构建的编程语言 234 00:11:39,950 --> 00:11:42,953 ‎然后再用这些编程语言 ‎构建出更多的编程语言 235 00:11:43,370 --> 00:11:44,955 ‎你八成听说过它们的名字 236 00:11:45,038 --> 00:11:45,914 ‎-LISP… ‎-BASIC 237 00:11:45,998 --> 00:11:47,207 ‎-Java ‎-C++ 238 00:11:47,291 --> 00:11:49,042 ‎-Python 3 ‎-HTML 5 239 00:11:49,126 --> 00:11:51,044 ‎PEARL PHP 还有一点C语言… 240 00:11:51,128 --> 00:11:53,756 ‎就像不同的口头语言是向其他人 241 00:11:53,839 --> 00:11:56,717 ‎表达同一个想法的不同方式一样 242 00:11:57,050 --> 00:12:00,012 ‎编程语言只是向不同的电脑 243 00:12:00,137 --> 00:12:01,972 ‎表达同一个想法的不同方式 244 00:12:02,347 --> 00:12:05,058 ‎高级别的语言不止一种 245 00:12:05,142 --> 00:12:07,936 ‎因为首先 不同的语言 246 00:12:08,020 --> 00:12:10,105 ‎主要解决的是不同的需求 247 00:12:10,731 --> 00:12:12,024 ‎看看这两个语言吧 248 00:12:12,191 --> 00:12:15,944 ‎这一个 COBOL ‎是在20世纪50年代晚期开发的 249 00:12:16,028 --> 00:12:18,906 ‎目的是为了让企业能更方便地编程 250 00:12:19,239 --> 00:12:23,410 ‎看起来很像英语 但是每句话最后 251 00:12:23,494 --> 00:12:25,579 ‎都会以“结束运行”结尾 252 00:12:26,497 --> 00:12:32,753 ‎CPL这种语言是在20世纪60年代 ‎开发的 包含更多科学计算的内容 253 00:12:33,212 --> 00:12:35,297 ‎就像是生物进化 254 00:12:35,631 --> 00:12:38,425 ‎随着生物体变得越来越复杂 ‎它们也会进化出 255 00:12:38,509 --> 00:12:41,637 ‎让它们能更好地适应特定环境的特征 256 00:12:42,012 --> 00:12:45,933 ‎老实说 这也取决于个人喜好 257 00:12:46,558 --> 00:12:50,521 ‎人们喜欢用不同的工具 ‎来作自我表达 258 00:12:50,604 --> 00:12:53,774 ‎比方说C++这门语言 259 00:12:53,857 --> 00:12:56,068 ‎伊隆马斯克就不喜欢 260 00:12:56,360 --> 00:12:57,611 ‎你也可以开发一种语言 261 00:12:58,028 --> 00:13:02,533 ‎这是一个真正的高级语言 ‎完全由“哞”这个词组成 262 00:13:02,950 --> 00:13:04,910 ‎真的 这门语言叫做奶牛 263 00:13:05,285 --> 00:13:08,956 ‎这门语言则是完全由 ‎阿诺德施瓦辛格的电影台词组成的 264 00:13:09,164 --> 00:13:13,252 ‎我每次心想:“好了 ‎这下应该没了吧” 265 00:13:13,335 --> 00:13:20,050 ‎就会有人又想出一种新的语言 ‎然后发展出一个爱好者团体 266 00:13:20,175 --> 00:13:24,888 ‎所以 我觉得开发新语言 ‎目前还看不到结束的那一天 267 00:13:25,472 --> 00:13:29,017 ‎所有这些语言都是基于逻辑的 268 00:13:29,393 --> 00:13:32,312 ‎比方说 NETFLIX 的一位程序员会写 269 00:13:32,396 --> 00:13:35,899 ‎“如果你收看的时间超过两小时 270 00:13:36,024 --> 00:13:37,150 ‎就会显示这条信息” 271 00:13:37,609 --> 00:13:40,195 ‎但要想让程序影响大部分人的生活 272 00:13:40,279 --> 00:13:42,531 ‎大部分人就都需要使用计算机 273 00:13:42,739 --> 00:13:44,658 ‎这就意味着计算机必须要更易于使用 274 00:13:44,783 --> 00:13:46,076 ‎更友好 275 00:13:46,159 --> 00:13:48,370 ‎这就需要另一个巨大的跨越 276 00:13:48,912 --> 00:13:50,497 ‎这个跨越从这里开始 277 00:13:50,747 --> 00:13:54,334 ‎在道格拉斯恩格尔巴特 ‎于1968年发表的一个演示中 278 00:13:54,459 --> 00:13:56,587 ‎我们马上就会看到他在工作的屏幕 279 00:13:56,712 --> 00:13:58,547 ‎以及这个跟踪光点 280 00:13:58,630 --> 00:14:01,425 ‎是如何与鼠标一起活动的 281 00:14:02,050 --> 00:14:06,346 ‎现在的人们编程时 ‎不需要在一张纸上 282 00:14:06,430 --> 00:14:10,309 ‎写下陈述 然后交给别人 283 00:14:10,392 --> 00:14:11,476 ‎去输入 284 00:14:11,560 --> 00:14:15,105 ‎你可以坐下来 对着屏幕 ‎使用图形用户界面 285 00:14:15,355 --> 00:14:17,566 ‎现如今 我们将其称之为GUI 286 00:14:18,025 --> 00:14:21,111 ‎有了GUI 人们不需要打字就能编程 287 00:14:22,487 --> 00:14:24,907 ‎或者可以更简便地编程 288 00:14:25,240 --> 00:14:29,661 ‎通常来说 现在工作的编程环境 289 00:14:30,287 --> 00:14:34,958 ‎就是艾伦和他的伙伴们创造的 290 00:14:35,042 --> 00:14:36,501 ‎非常漂亮的环境 291 00:14:36,585 --> 00:14:40,464 ‎是他们在20世纪70年代早期 ‎在施乐的帕罗奥图研发中心创造的 292 00:14:40,714 --> 00:14:41,548 ‎艾伦 293 00:14:41,715 --> 00:14:42,633 ‎就是这位 294 00:14:42,883 --> 00:14:46,053 ‎我将他视作个人编程之父 295 00:14:46,136 --> 00:14:50,265 ‎因为他是第一个清晰表达出 ‎这个愿景的人 296 00:14:50,515 --> 00:14:54,353 ‎我必须要坦白 ‎当时 我还觉得这是科幻作品 297 00:14:54,436 --> 00:14:56,605 ‎大的事情真的完成的时候 298 00:14:58,106 --> 00:14:59,608 ‎背后通常是有一整个社区的 299 00:14:59,816 --> 00:15:02,110 ‎老天 帕克真的做得超级好 300 00:15:02,653 --> 00:15:04,196 ‎就像魔法一样 301 00:15:04,780 --> 00:15:08,450 ‎图形用户界面让几百万人 302 00:15:08,533 --> 00:15:12,871 ‎能够以他们认为自然的方式 ‎使用计算机 303 00:15:13,580 --> 00:15:16,750 ‎施乐在1979年第一次发布GUI广告时 304 00:15:16,833 --> 00:15:20,170 ‎他们展示出了程序 ‎如何能够改变日常生活 305 00:15:20,462 --> 00:15:22,923 ‎早上走进办公室 一台施乐机器 306 00:15:23,006 --> 00:15:25,008 ‎会在屏幕上显示出你早上的信件 307 00:15:25,092 --> 00:15:27,344 ‎很快 像这样的施乐系统 308 00:15:27,427 --> 00:15:29,721 ‎将能帮助你管理你最珍贵的资源: 309 00:15:30,472 --> 00:15:31,431 ‎信息 310 00:15:31,848 --> 00:15:34,893 ‎有很多像我这样的人 以及其他人 311 00:15:34,977 --> 00:15:36,603 ‎处在这个研发社区中 312 00:15:36,687 --> 00:15:38,105 ‎想要让世界变得更好 313 00:15:38,188 --> 00:15:41,733 ‎他们有一个与人类增强 314 00:15:41,858 --> 00:15:43,026 ‎紧密相关的想法 315 00:15:43,610 --> 00:15:46,196 ‎一个能与我们互动 316 00:15:46,697 --> 00:15:47,864 ‎与公众互动 317 00:15:48,198 --> 00:15:50,784 ‎与普通人互动的东西 让我们能做到 318 00:15:50,867 --> 00:15:53,245 ‎以前做不到的事情 319 00:15:53,662 --> 00:15:56,039 ‎它的确使我们能做到更多 320 00:15:56,331 --> 00:15:58,875 ‎GUI是这个范围中的一大跳跃 321 00:15:59,501 --> 00:16:03,630 ‎然后 下一个改变世界的创新出现了 322 00:16:05,382 --> 00:16:07,467 ‎一种新的方式 能传播 323 00:16:07,551 --> 00:16:09,177 ‎我们能用程序创造出的一切 324 00:16:10,137 --> 00:16:12,848 ‎在电视上 人们开始预测 ‎突然能获取所有程序 325 00:16:12,931 --> 00:16:14,433 ‎意味着什么 326 00:16:14,808 --> 00:16:17,519 ‎想象一下吧 坐下来 享用早上的咖啡 327 00:16:17,602 --> 00:16:20,439 ‎打开家庭计算机 ‎就能阅读今天的报纸 328 00:16:20,522 --> 00:16:24,985 ‎想象一下这样的一个世界 ‎写下的每个字 每张画的每张图片 329 00:16:25,068 --> 00:16:28,697 ‎每一部电影都能立刻在家中看到 330 00:16:28,780 --> 00:16:33,744 ‎我觉得即将进入令人兴奋 ‎同时也令人惧怕的世界 331 00:16:33,827 --> 00:16:35,287 ‎但这只是一个工具 不是吗? 332 00:16:35,370 --> 00:16:36,204 ‎不 不是的 333 00:16:36,288 --> 00:16:40,667 ‎现在影响力最大的软件产品 ‎利用了所有这些创新 334 00:16:40,751 --> 00:16:44,671 ‎一位大学生 ‎使用了一种高级别编程语言PHP 335 00:16:44,755 --> 00:16:47,632 ‎制造出在整个网络分享的东西 336 00:16:47,716 --> 00:16:49,760 ‎可以用装有GUI的计算机使用 337 00:16:50,093 --> 00:16:53,680 ‎他在2004年的第一次电视采访中 ‎是这么描述的 338 00:16:53,972 --> 00:16:56,433 ‎这是一个网上目录 通过大学 339 00:16:56,516 --> 00:16:57,976 ‎将人们连接在一起 340 00:16:58,060 --> 00:16:59,478 ‎通过他们学校中的社交网络 341 00:16:59,561 --> 00:17:02,731 ‎现在我们已有10万用户 ‎所以谁知道之后会发展到什么样 342 00:17:02,814 --> 00:17:07,027 ‎发展到了每个月 有超过20亿人 343 00:17:07,152 --> 00:17:08,361 ‎使用Facebook 344 00:17:08,695 --> 00:17:11,656 ‎现如今 程序员几乎塑造着 ‎几十亿人的生活 345 00:17:11,907 --> 00:17:15,869 ‎影响着他们工作、吃饭、约会 ‎以及娱乐休闲的方式 346 00:17:16,203 --> 00:17:17,537 ‎你现在在干什么? 347 00:17:17,621 --> 00:17:21,208 ‎你正通过NETFLIX 网页浏览器在看我 348 00:17:23,376 --> 00:17:27,255 ‎NETFLIX 本身就是由代码组成的 ‎在网页浏览器上运行 349 00:17:27,339 --> 00:17:28,215 ‎这也是代码 350 00:17:28,507 --> 00:17:33,804 ‎在计算机上运行 ‎计算机也是由代码设计出来的 351 00:17:34,054 --> 00:17:35,680 ‎可以这样永无止境地说下去 352 00:17:37,599 --> 00:17:40,519 ‎伟大的程序就像一个博物馆的建筑 353 00:17:41,311 --> 00:17:43,355 ‎数百万人会想着这个博物馆 354 00:17:43,480 --> 00:17:45,857 ‎每天都会去参观、闲逛、使用 355 00:17:46,191 --> 00:17:49,569 ‎我觉得编程是独一无二的体验 ‎因为这就像是纯粹的创造 356 00:17:49,653 --> 00:17:51,863 ‎你有个想法 某样东西应该能这么做 357 00:17:52,364 --> 00:17:56,201 ‎然后你试着坐在一台计算机前 358 00:17:56,284 --> 00:17:58,078 ‎将其变成现实 359 00:17:58,161 --> 00:18:01,039 ‎我觉得这个角色意味着很大的责任 360 00:18:01,164 --> 00:18:04,000 ‎有个限速 361 00:18:04,167 --> 00:18:05,669 ‎时速不能超过97公里 362 00:18:06,545 --> 00:18:07,420 ‎行吧 363 00:18:07,712 --> 00:18:11,299 ‎但如果有辆车 计算机说: 364 00:18:12,092 --> 00:18:15,053 ‎“这辆车的时速不能超过97公里” 365 00:18:15,846 --> 00:18:17,848 ‎这就是完全不同的控制行为的方式 366 00:18:18,056 --> 00:18:23,395 ‎通过控制我们的选择 ‎我们生活中的程序通常 367 00:18:23,478 --> 00:18:27,941 ‎会比法律希望施加的监管效果 ‎要更加深入 368 00:18:28,525 --> 00:18:30,819 ‎这可能是件很好的事 369 00:18:30,944 --> 00:18:35,198 ‎美国每年会发生约600万起车祸 370 00:18:35,282 --> 00:18:39,494 ‎一项分析发现 94%的车祸 ‎是由司机导致的 371 00:18:40,370 --> 00:18:43,165 ‎编程的进步 ‎可能会拯救数以百万的生命 372 00:18:43,665 --> 00:18:46,960 ‎但也可能以全新的方式 ‎让人的生命出现风险 373 00:18:47,460 --> 00:18:50,922 ‎我患有肥大型心肌病 374 00:18:51,006 --> 00:18:56,219 ‎这个医学词汇的意思是 ‎我有一颗特别大的心脏 375 00:18:56,511 --> 00:18:58,096 ‎我的心脏特别大 376 00:18:58,180 --> 00:19:00,932 ‎大约是普通人心脏的三倍大 377 00:19:01,016 --> 00:19:05,937 ‎我大约是在30岁时发现的 ‎我在40岁之前猝死的风险 378 00:19:06,021 --> 00:19:07,147 ‎非常大 379 00:19:07,439 --> 00:19:10,025 ‎电生理学家说:“这完全不是问题 380 00:19:10,108 --> 00:19:12,485 ‎因为你可以装一个起搏器除颤器” 381 00:19:13,028 --> 00:19:15,030 ‎这个设备是由程序控制的 382 00:19:15,697 --> 00:19:20,243 ‎几年前 我怀孕了 然后我发生了心悸 383 00:19:20,744 --> 00:19:24,748 ‎大约有四分之一的女性会出现心悸 ‎是非常正常的现象 384 00:19:25,207 --> 00:19:28,418 ‎但我体内的设备 ‎以为我心跳的节奏很危险 385 00:19:28,501 --> 00:19:29,586 ‎就电击了我 386 00:19:29,669 --> 00:19:34,132 ‎设备制造商 ‎电击怀孕妇女是没有任何好处的 387 00:19:34,216 --> 00:19:36,426 ‎这是他们最不想做的事 388 00:19:36,635 --> 00:19:39,262 ‎他们只是没考虑到这一点 389 00:19:39,346 --> 00:19:42,474 ‎有非常多的决定要做 390 00:19:43,141 --> 00:19:47,395 ‎而程序员会负责做这些决定 391 00:19:48,188 --> 00:19:50,690 ‎不可避免的 392 00:19:51,066 --> 00:19:53,735 ‎会出现一些情况的组合 393 00:19:53,818 --> 00:19:55,904 ‎是他们没有预想到的 394 00:19:56,238 --> 00:19:58,198 ‎所以我们在教编程的时候 395 00:19:58,281 --> 00:20:00,450 ‎会试图教授 396 00:20:00,533 --> 00:20:01,910 ‎学生们 397 00:20:02,244 --> 00:20:04,496 ‎如何考虑 398 00:20:04,621 --> 00:20:07,540 ‎所有这些不同的情况 399 00:20:07,832 --> 00:20:10,168 ‎如何试图面面俱到 400 00:20:10,293 --> 00:20:14,673 ‎而不会因为需要考虑的事情之多 401 00:20:14,756 --> 00:20:16,091 ‎而没了力气 402 00:20:16,174 --> 00:20:20,011 ‎这只会变得越来越接近现实 ‎因为我们已经开始以全新的方式 403 00:20:20,136 --> 00:20:21,721 ‎进行编程 404 00:20:22,305 --> 00:20:25,517 ‎在传统编程中 你会给计算机写指示 405 00:20:26,059 --> 00:20:28,895 ‎但现在 我们能给计算机一系列输入 406 00:20:28,979 --> 00:20:30,230 ‎和一系列输出 407 00:20:30,313 --> 00:20:33,525 ‎让计算机自行编写指示 408 00:20:33,817 --> 00:20:37,404 ‎你需要做的就是给计算机 409 00:20:38,280 --> 00:20:39,739 ‎很多例子 410 00:20:40,073 --> 00:20:43,660 ‎然后说:“这是个派对” 411 00:20:43,785 --> 00:20:45,328 ‎然后还有其他这些 412 00:20:45,412 --> 00:20:47,163 ‎牙医办公室:不是派对 413 00:20:47,330 --> 00:20:48,915 ‎课堂:不是派对 414 00:20:49,374 --> 00:20:53,169 ‎这样 计算机看了这些 就会试图搭建 415 00:20:53,253 --> 00:20:55,005 ‎一个分类系统 416 00:20:55,255 --> 00:20:57,173 ‎这就是机器学习 417 00:20:57,257 --> 00:20:59,968 ‎现在 如果有人提到人工智能 418 00:21:00,552 --> 00:21:01,469 ‎指的就是这个 419 00:21:01,636 --> 00:21:05,390 ‎这是另一种完全不同的抽象化方式 420 00:21:05,473 --> 00:21:06,641 ‎和做事情的方法 421 00:21:06,725 --> 00:21:11,438 ‎因为它并不符合 ‎我们之前堆叠的那些 422 00:21:11,646 --> 00:21:15,442 ‎我们管它叫机器学习算法 ‎因为计算机在创造的 423 00:21:15,525 --> 00:21:17,736 ‎是提供给自己遵守的指令 424 00:21:18,069 --> 00:21:21,990 ‎但是当然 到最后 它们都会被翻译成 425 00:21:22,073 --> 00:21:24,451 ‎很小的指令 426 00:21:25,201 --> 00:21:27,912 ‎谷歌翻译曾经有超过一百万行代码 427 00:21:28,538 --> 00:21:32,751 ‎是人工编写的一百万条小指令 428 00:21:32,876 --> 00:21:38,256 ‎而现在 ‎谷歌翻译大约只有五百行代码 429 00:21:38,465 --> 00:21:40,008 ‎这就是利用了机器学习 430 00:21:40,091 --> 00:21:44,304 ‎假如说 因为疏忽 ‎你输入的所有这些派对的照片中 431 00:21:44,387 --> 00:21:46,639 ‎没有任何黑人或西班牙裔 432 00:21:47,140 --> 00:21:49,434 ‎电脑就会决定派对的一条规则 433 00:21:49,517 --> 00:21:52,562 ‎就是只有白人和亚裔会被邀请 434 00:21:52,812 --> 00:21:55,982 ‎有很多白人和亚裔程序员 435 00:21:56,733 --> 00:22:01,321 ‎我们绝对应该扩展 ‎被邀请进入设计室的人 436 00:22:01,404 --> 00:22:02,447 ‎有无数原因 437 00:22:02,530 --> 00:22:05,325 ‎如果有更多的生活经历 ‎他们就会问出更好的问题 438 00:22:05,408 --> 00:22:09,037 ‎但是最终 ‎如果给机器学习系统输入数据 439 00:22:09,120 --> 00:22:13,208 ‎比如数据内置了结构性种族歧视的 ‎刑事司法系统 440 00:22:13,291 --> 00:22:15,668 ‎比如说你的机器学习程序员 441 00:22:15,752 --> 00:22:17,170 ‎是非常多样化的人群 442 00:22:17,253 --> 00:22:22,384 ‎不同种族、不同长相、不同社会背景 443 00:22:22,634 --> 00:22:25,303 ‎那机器学习系统 ‎仍然会从那一批数据中进行学习 444 00:22:25,387 --> 00:22:28,139 ‎如果人们不主动去修正这一点 445 00:22:28,223 --> 00:22:31,726 ‎历史数据会让我们重复过去的错误 446 00:22:33,812 --> 00:22:36,481 ‎编程的故事充满了人类的雄心 447 00:22:36,564 --> 00:22:38,358 ‎和创造力 448 00:22:38,566 --> 00:22:41,528 ‎猎鹰9号运载火箭的升空 449 00:22:41,611 --> 00:22:44,030 ‎让我们看到了从未想过能见到的东西 450 00:22:44,697 --> 00:22:45,740 ‎一个黑洞 451 00:22:46,366 --> 00:22:47,742 ‎我们在建造一个新的世界 452 00:22:48,284 --> 00:22:49,953 ‎有越来越多直观性的工具 453 00:22:50,286 --> 00:22:52,122 ‎有更多的人可以使用 454 00:22:52,664 --> 00:22:55,750 ‎来帮助确保那个世界变得更美好 455 00:22:56,126 --> 00:22:59,546 ‎我们已踏上一段旅程 ‎让计算机更容易接近 456 00:22:59,629 --> 00:23:02,382 ‎让更多的人能接近它 457 00:23:02,507 --> 00:23:07,053 ‎在过去50年间 我们亲眼见到了 ‎这场革命的发展 458 00:23:07,262 --> 00:23:09,139 ‎所以活在这个时代才如此激动人心 459 00:23:09,973 --> 00:23:13,935 ‎务必要记住 ‎你在计算机上使用的一切 460 00:23:14,227 --> 00:23:16,146 ‎都是由人类创造的 461 00:23:17,147 --> 00:23:19,816 ‎其实 你可以成为其中一员 ‎而且成为其中一员 462 00:23:19,899 --> 00:23:21,317 ‎是非常重要的 463 00:23:21,401 --> 00:23:24,154 ‎你可以从根本上真正改变这个世界 464 00:23:24,571 --> 00:23:28,616 ‎这个世界将在越来越多方面 ‎通过机器学习 465 00:23:28,741 --> 00:23:32,162 ‎数据和传统编程运作 466 00:23:32,662 --> 00:23:35,123 ‎生活在这个社会的我们 ‎能做的就是说: 467 00:23:35,206 --> 00:23:37,584 ‎“好的!我们拥有这项强大的新技术 468 00:23:38,251 --> 00:23:43,089 ‎它会以某种方式变得伟大 ‎但它不会自行伟大起来” 469 00:24:08,990 --> 00:24:10,992 ‎字幕翻译:严欣