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 ‎超過六千通緊急電話無法接通 9 00:00:33,910 --> 00:00:35,453 ‎政府查出問題的來源 10 00:00:35,536 --> 00:00:38,706 ‎是一台位於科羅拉多州恩格爾伍德 ‎傳送電話中心的電腦 11 00:00:39,082 --> 00:00:41,250 ‎是一個簡單的程式編寫錯誤 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:10,488 ‎程式編寫是人們用來 ‎與電腦溝通的決策程序 22 00:01:10,571 --> 00:01:14,659 ‎這樣的能力伴隨著很多的道德責任 23 00:01:14,742 --> 00:01:15,910 ‎編寫程式無可比擬 24 00:01:15,993 --> 00:01:18,246 ‎沒有什麼可以取代它 25 00:01:18,329 --> 00:01:20,998 ‎就跟建造城市的建築工人 26 00:01:21,541 --> 00:01:23,751 ‎會決定你如何在城市中的生活一樣 27 00:01:23,835 --> 00:01:28,881 ‎我認為程式控制我們如何在網上生活 ‎這基本上就是我們生活的方式 28 00:01:29,507 --> 00:01:31,300 ‎不只是當我們上網 29 00:01:31,384 --> 00:01:33,594 ‎當我們聯絡緊急服務專線 30 00:01:34,554 --> 00:01:35,596 ‎或去看醫生 31 00:01:36,180 --> 00:01:37,807 ‎或上車 32 00:01:37,890 --> 00:01:40,643 ‎我們每天都離程式好近 33 00:01:41,602 --> 00:01:47,024 ‎但我們之中,只有0.033%的人 ‎知道怎麼編寫程式 34 00:01:47,233 --> 00:01:49,986 ‎對絕大數的人來說,程式是黑箱 35 00:01:50,695 --> 00:01:51,988 ‎但程式不需要是黑箱 36 00:01:52,446 --> 00:01:55,199 ‎那程式編寫到底如何運作? 37 00:01:55,658 --> 00:01:58,286 ‎我們又用程式編寫 ‎在建造什麼樣的新世界? 38 00:01:59,287 --> 00:02:01,122 ‎NETFLIX 原創紀錄片系列 39 00:02:01,205 --> 00:02:02,540 ‎電腦 40 00:02:03,082 --> 00:02:05,835 ‎巧妙的電子硬體組合 41 00:02:05,918 --> 00:02:07,879 ‎是由人類創造的 42 00:02:08,087 --> 00:02:11,382 ‎並不是我們沒有合適的機器 ‎可以解決我們的問題 43 00:02:11,465 --> 00:02:14,177 ‎而是我們缺乏如何解決 ‎問題的合適說明 44 00:02:14,260 --> 00:02:17,972 ‎當有人提到程式編寫 ‎你會覺得那十分困難 45 00:02:18,556 --> 00:02:22,685 ‎這是件很重要的事 ‎要記住所有你在電腦上使用的東西 46 00:02:22,768 --> 00:02:25,271 ‎都是由某個人類創造的 47 00:02:26,063 --> 00:02:27,648 ‎劇名:流行大百科,程式編寫 48 00:02:31,944 --> 00:02:34,947 ‎假如有個外星人來,然後說 ‎“好,程式的重要性是什麼? 49 00:02:35,031 --> 00:02:35,907 ‎是什麼?” 50 00:02:35,990 --> 00:02:37,450 ‎我會說:“這個嘛,你知道 51 00:02:37,533 --> 00:02:41,412 ‎我們住在這個物質地球上 ‎大概在50年前 52 00:02:41,495 --> 00:02:44,582 ‎一小群人開始建造另一個星球 53 00:02:44,665 --> 00:02:46,918 ‎但不是物質星球,是一個虛擬星球 54 00:02:47,001 --> 00:02:50,213 ‎看看街道四周 ‎你看到所有人走在街上 55 00:02:50,296 --> 00:02:52,548 ‎低著頭,盯著他們的電話嗎? 56 00:02:52,632 --> 00:02:54,300 ‎他們其實就是在那一個世界裡 57 00:02:54,383 --> 00:02:56,093 ‎所以,這就是程式 58 00:02:56,219 --> 00:02:58,054 ‎它是那個另一個世界的基礎材料 59 00:03:00,056 --> 00:03:04,393 ‎這架織布機是世界上 ‎所有電腦和智慧型手機的祖先 60 00:03:04,852 --> 00:03:06,854 ‎織布機在1804年被發明 61 00:03:06,938 --> 00:03:09,232 ‎最重要的創新發明是這些卡片 62 00:03:10,107 --> 00:03:13,194 ‎每張卡片上的洞只能讓某些針穿過 63 00:03:14,237 --> 00:03:16,405 ‎使用幾百張卡片上的幾千個洞 64 00:03:16,489 --> 00:03:19,492 ‎織布工能做出比之前更複雜的圖案 65 00:03:20,243 --> 00:03:22,620 ‎圖案複雜的披肩在歐洲風行一時 66 00:03:23,037 --> 00:03:26,666 ‎紡織出來的圖案可以做得非常精緻 ‎看起來就像圖畫 67 00:03:26,916 --> 00:03:29,168 ‎比如像這個織布機發明者的圖案 68 00:03:30,169 --> 00:03:33,464 ‎在這些織布機出現以前 ‎每一條線都必須用手挑選 69 00:03:33,547 --> 00:03:34,423 ‎由“提紗童”挑選 70 00:03:34,966 --> 00:03:36,801 ‎那時候也以人工計算數學 71 00:03:36,884 --> 00:03:38,886 ‎由所謂的“計算者”計算 72 00:03:39,095 --> 00:03:40,972 ‎最早的計算者是人類 73 00:03:41,681 --> 00:03:43,557 ‎那時能夠幫助我們的最好機器 74 00:03:43,641 --> 00:03:45,518 ‎只能解出一種數學問題 75 00:03:46,227 --> 00:03:48,229 ‎比如像算盤,能夠加減數字 76 00:03:49,480 --> 00:03:51,857 ‎英國數學家查爾斯巴貝奇 ‎想要一台機器 77 00:03:51,941 --> 00:03:54,610 ‎可以用來解出任何 ‎你選來要它做的數學問題 78 00:03:54,777 --> 00:03:57,029 ‎或更確切地說,是你設計要它做的 79 00:03:57,780 --> 00:04:00,908 ‎他提出一台他稱為“分析機”的機器 80 00:04:01,242 --> 00:04:04,662 ‎巴貝奇的構想會讓他在歷史上留名 81 00:04:05,037 --> 00:04:10,167 ‎電腦最初是由巴貝奇發明的 82 00:04:10,710 --> 00:04:13,963 ‎他是一位非常古怪的英國發明家 83 00:04:14,046 --> 00:04:16,590 ‎巴貝奇有個機器該怎麼運作的好主意 84 00:04:16,674 --> 00:04:19,593 ‎他將這張圖案的副本掛在自己家裡 85 00:04:20,219 --> 00:04:23,347 ‎巴貝奇的分析機就像雅卡爾的織布機 86 00:04:23,431 --> 00:04:25,391 ‎都有物質的部分,就是“硬體” 87 00:04:25,599 --> 00:04:27,101 ‎同樣也像織布機一樣 88 00:04:27,184 --> 00:04:31,272 ‎你能以打洞卡片的方式,給硬體指示 89 00:04:31,689 --> 00:04:33,065 ‎洞讓針穿過 90 00:04:33,149 --> 00:04:36,193 ‎沒有洞的地方就迫使針後退 91 00:04:36,652 --> 00:04:39,196 ‎開始一連串的機械計算 92 00:04:39,864 --> 00:04:41,324 ‎上面有不同洞的卡片 93 00:04:41,615 --> 00:04:42,825 ‎就是軟體 94 00:04:43,701 --> 00:04:46,203 ‎巴貝奇從沒完成分析機 95 00:04:46,579 --> 00:04:50,416 ‎但一個和他一起工作的年輕女子 ‎看到機器改變世界的潛力 96 00:04:50,666 --> 00:04:52,126 ‎不僅僅是改變數學 97 00:04:52,668 --> 00:04:55,671 ‎勒芙蕾絲伯爵夫人愛達拜倫寫下 98 00:04:56,005 --> 00:05:02,178 ‎“在應用卡片的想法出現後 ‎就讓算術沒有了邊界” 99 00:05:02,261 --> 00:05:04,263 ‎她看見雅卡爾看見的 100 00:05:04,347 --> 00:05:06,974 ‎這些洞不只可以代表數字 101 00:05:07,058 --> 00:05:08,309 ‎它們可以是圖案 102 00:05:08,392 --> 00:05:09,310 ‎音樂 103 00:05:10,644 --> 00:05:12,271 ‎或一整句話 104 00:05:12,772 --> 00:05:14,982 ‎你可以把它想成是摩斯密碼 105 00:05:15,274 --> 00:05:19,987 ‎在摩斯密碼中的每個字母都只由 ‎以兩種信號組合而成的代碼表達 106 00:05:20,071 --> 00:05:21,739 ‎這個信號或這個信號 107 00:05:21,906 --> 00:05:22,865 ‎是二進制 108 00:05:23,324 --> 00:05:26,452 ‎我們用那些嗶嗶聲就能表達任何事物 109 00:05:26,952 --> 00:05:30,790 ‎比如這封由鐵達尼號發出的求救訊號 110 00:05:31,457 --> 00:05:34,502 ‎“SOS”並不具有任何意義 111 00:05:34,710 --> 00:05:37,880 ‎只是非常容易用摩斯密碼傳送 112 00:05:38,089 --> 00:05:44,512 ‎你也可以這樣想,所有的字母都可以 ‎使用零和一的組合來表達 113 00:05:44,637 --> 00:05:45,930 ‎看起來眼熟嗎? 114 00:05:46,138 --> 00:05:47,640 ‎這是二進位碼 115 00:05:47,848 --> 00:05:51,769 ‎我們就是用二進位碼消除機器 ‎和人類語言之間的差異 116 00:05:51,894 --> 00:05:55,773 ‎每一個一或零都是一個二進位數字 ‎或稱為“位元” 117 00:05:55,940 --> 00:05:58,359 ‎這些是現代計算的原子 118 00:05:58,484 --> 00:06:00,236 ‎你可能知道它們的另一個名字 119 00:06:00,653 --> 00:06:02,696 ‎八位元是一個位元組 120 00:06:03,239 --> 00:06:07,576 ‎所以你電腦裡那張 ‎110萬位元組的圖片 121 00:06:08,160 --> 00:06:11,956 ‎就是由八百八十萬個一和零組成 122 00:06:12,373 --> 00:06:16,919 ‎就像摩斯密碼的點和劃 ‎只是一種寫這兩種信號的方式 123 00:06:17,002 --> 00:06:20,297 ‎二進位碼的一和零 ‎也只是我們用來寫下 124 00:06:20,423 --> 00:06:22,508 ‎在現在電腦中真正發生的事的方式 125 00:06:23,217 --> 00:06:24,802 ‎供電或不供電 126 00:06:25,511 --> 00:06:27,346 ‎這是一個簡單的電路 127 00:06:27,763 --> 00:06:30,599 ‎想像幾百萬的電路一起運作 128 00:06:31,016 --> 00:06:32,476 ‎那就是現在的電腦 129 00:06:33,018 --> 00:06:35,271 ‎在電路中,這是一個位元 130 00:06:35,604 --> 00:06:37,857 ‎燈泡關了?零 131 00:06:38,107 --> 00:06:39,692 ‎開了?一 132 00:06:39,775 --> 00:06:42,194 ‎電腦只了解電 133 00:06:42,278 --> 00:06:44,947 ‎所以所有編碼員對電腦做的事 134 00:06:45,489 --> 00:06:46,323 ‎最終 135 00:06:46,449 --> 00:06:49,368 ‎就只是一連串的開關電荷 136 00:06:49,702 --> 00:06:53,205 ‎能夠成功是因為 ‎用正確的方式放在一起 137 00:06:53,414 --> 00:06:56,041 ‎這些電荷能代表邏輯 138 00:06:56,625 --> 00:07:00,754 ‎基本上,邏輯是一系列事實或事件 139 00:07:01,255 --> 00:07:03,048 ‎比如關上這個開關 140 00:07:04,467 --> 00:07:07,136 ‎還有關上這個,讓鈴聲響起 141 00:07:09,054 --> 00:07:12,516 ‎事實上,電腦界的人稱此為 ‎“邏輯及電路” 142 00:07:13,476 --> 00:07:15,686 ‎或是“邏輯閘” 143 00:07:15,769 --> 00:07:18,439 ‎我看看能不能做得出來 ‎但不會在桌上燒一個洞 144 00:07:18,522 --> 00:07:21,567 ‎在及閘裡,兩個電路都需要被關上 145 00:07:21,650 --> 00:07:22,818 ‎燈才會亮 146 00:07:22,902 --> 00:07:24,695 ‎另外還有或閘 147 00:07:24,778 --> 00:07:28,199 ‎在或閘裡,只要關上一個電路 ‎燈就會亮 148 00:07:28,365 --> 00:07:29,700 ‎也可以用另一種方式說 149 00:07:29,909 --> 00:07:34,371 ‎如果關上其中一個電路,那就開燈 150 00:07:34,497 --> 00:07:36,916 ‎這種“如果,那就”的表達方式 151 00:07:36,999 --> 00:07:38,083 ‎就是演算法 152 00:07:38,292 --> 00:07:42,671 ‎在今日的大眾文化中 ‎演算法一詞十分讓人困惑 153 00:07:42,755 --> 00:07:45,925 ‎我們之前已經看過 ‎演算法變成一場混亂 154 00:07:46,008 --> 00:07:49,094 ‎演算法運作的方式 ‎對多數人來說是個謎 155 00:07:49,178 --> 00:07:51,889 ‎演算法到底是什個鬼東西? 156 00:07:51,972 --> 00:07:54,892 ‎但演算法其實只是一組指示 157 00:07:55,184 --> 00:07:56,644 ‎想像你要去店裡 158 00:07:56,894 --> 00:07:59,522 ‎你可以先左轉,再右轉 159 00:07:59,647 --> 00:08:02,525 ‎或你可以先右轉,然後左轉 160 00:08:02,900 --> 00:08:04,985 ‎或你也可以先左轉四次 161 00:08:05,069 --> 00:08:06,111 ‎在公園跑一圈 162 00:08:06,195 --> 00:08:07,029 ‎穿越高速公路 163 00:08:07,112 --> 00:08:09,031 ‎再右轉四次 164 00:08:09,365 --> 00:08:12,076 ‎就像可以使用很多不同的路線 ‎抵達同個地方 165 00:08:12,159 --> 00:08:14,578 ‎在程式編寫中 ‎也可以有很多不同的演算法 166 00:08:14,662 --> 00:08:15,996 ‎用來解決相同的問題 167 00:08:16,372 --> 00:08:20,042 ‎目標是找到最簡潔 ‎最有效率的那個方法 168 00:08:20,459 --> 00:08:22,795 ‎美麗的程式不會自我重複 169 00:08:22,920 --> 00:08:24,922 ‎非常簡潔、力量非常大 170 00:08:25,631 --> 00:08:28,926 ‎靠演算法運作的電腦 ‎只做我們叫它們做的事 171 00:08:29,134 --> 00:08:30,844 ‎但做得快多了 172 00:08:31,136 --> 00:08:33,764 ‎這也讓人們變得更有力量 173 00:08:34,223 --> 00:08:37,601 ‎科學家剛開始開發熔合彈時 174 00:08:38,018 --> 00:08:40,437 ‎他們主要使用人類計算者 175 00:08:40,896 --> 00:08:42,815 ‎但後來他們用了這個 176 00:08:43,315 --> 00:08:47,152 ‎電子數值積分計算機 ‎花了六個星期計算氫彈 177 00:08:47,903 --> 00:08:50,197 ‎計算出的結果直接促成 178 00:08:51,323 --> 00:08:53,701 ‎1952年首次成功測試一顆炸彈 179 00:08:53,784 --> 00:08:57,413 ‎這顆炸彈的威力 ‎比在第二次世界大戰中 180 00:08:57,496 --> 00:09:00,624 ‎於廣島和長崎投下的 ‎原子彈的威力強大幾百倍 181 00:09:01,500 --> 00:09:04,920 ‎程式編寫的力量加強了人們 182 00:09:05,421 --> 00:09:06,672 ‎做他們選擇做的事的能力 183 00:09:07,590 --> 00:09:11,135 ‎但是,在1940年代 ‎程式編寫還是很麻煩 184 00:09:11,468 --> 00:09:16,056 ‎用零和一寫程式很明顯 ‎無法大規模發展 185 00:09:16,223 --> 00:09:19,018 ‎人們想要更多程式編寫給予的力量 186 00:09:19,184 --> 00:09:21,520 ‎但他們想要更簡單的編寫程式的方法 187 00:09:22,438 --> 00:09:28,986 ‎從那時開始,程式編寫的故事就成為 ‎將程式變得越來越像人類語言的故事 188 00:09:29,403 --> 00:09:32,990 ‎發明今日所有編碼員都在使用的東西 189 00:09:33,115 --> 00:09:34,617 ‎程式語言 190 00:09:35,200 --> 00:09:38,996 ‎與一和零相比,這些語言很抽象 191 00:09:39,580 --> 00:09:41,707 ‎抽象化對人們來說是個很難懂的字 192 00:09:42,249 --> 00:09:45,669 ‎更多抽象的語言其實最終 ‎都是相同的一和零 193 00:09:45,794 --> 00:09:48,213 ‎我們只是找到更好的方式組織它們 194 00:09:48,881 --> 00:09:50,966 ‎你可以從生物學的角度來思考 195 00:09:51,550 --> 00:09:53,135 ‎人類極致複雜 196 00:09:53,218 --> 00:09:56,972 ‎但我們99%的身體 ‎都只由六個元素組成 197 00:09:57,348 --> 00:10:00,184 ‎你可以再往上一層,那就是大分子 198 00:10:00,267 --> 00:10:02,811 ‎在那一層的組織和 199 00:10:02,895 --> 00:10:04,730 ‎最原始生物的組織之間 200 00:10:04,813 --> 00:10:06,023 ‎中間其實有很大的差距 201 00:10:06,357 --> 00:10:07,608 ‎而且人類有腦 202 00:10:07,691 --> 00:10:09,568 ‎腦可以做很先進的事 203 00:10:09,652 --> 00:10:12,488 ‎很難相信它們是由同樣的東西所組成 204 00:10:12,946 --> 00:10:16,784 ‎電腦其實和這很相像,只是簡單許多 205 00:10:17,951 --> 00:10:18,952 ‎所以這是好消息 206 00:10:19,286 --> 00:10:22,915 ‎程式編寫的故事就是 ‎將這個方框往上移的故事 207 00:10:23,165 --> 00:10:25,250 ‎遠離二進制,給我們 208 00:10:25,334 --> 00:10:28,837 ‎更簡單、更快速 ‎力量更強大的編寫程式的方式 209 00:10:29,088 --> 00:10:32,049 ‎而不需要去應付 ‎或甚至真正需要去了解 210 00:10:32,466 --> 00:10:34,718 ‎底下的二進制和邏輯閘 211 00:10:35,344 --> 00:10:38,931 ‎就是這個讓編碼員能夠製造 ‎我們都熟悉不過的產品 212 00:10:39,014 --> 00:10:41,392 ‎達成目標的第一步是 213 00:10:41,850 --> 00:10:45,813 ‎“組合語言”,它更容易讀寫 214 00:10:46,188 --> 00:10:49,608 ‎我們不說01000111 215 00:10:49,858 --> 00:10:51,318 ‎而用英文的“加”,ADD 216 00:10:51,694 --> 00:10:58,200 ‎然後讓一個稱為組譯器的程式 ‎將那些字母 217 00:10:58,283 --> 00:11:03,455 ‎也就是A、D、D ‎翻譯成合適相應的零和一 218 00:11:03,580 --> 00:11:07,292 ‎在這個層面上 ‎二進制被組織成字母和數字 219 00:11:07,626 --> 00:11:10,379 ‎就像原子被組織成分子 220 00:11:10,921 --> 00:11:15,217 ‎但用組合語言編寫程式 ‎仍然不是那麼容易 221 00:11:15,843 --> 00:11:19,513 ‎因為所有這些電腦 ‎都使用不一樣的組合語言 222 00:11:20,097 --> 00:11:24,810 ‎如果你幫一台電腦寫程式 ‎這個程式在其他台電腦上都不能用 223 00:11:25,102 --> 00:11:27,187 ‎很快地,人們開始思考 224 00:11:27,271 --> 00:11:29,440 ‎我們真正想給電腦的是 225 00:11:29,523 --> 00:11:32,818 ‎我們其實天天在用的東西 226 00:11:33,193 --> 00:11:35,863 ‎你有程式語言 227 00:11:35,946 --> 00:11:39,825 ‎是我們使用組合語言而建構出來的 228 00:11:39,950 --> 00:11:42,911 ‎然後從那些程式語言之中 ‎我們又建構更多程式語言 229 00:11:43,370 --> 00:11:44,955 ‎你大概聽過這些程式語言的名字 230 00:11:45,038 --> 00:11:45,914 ‎-LISP ‎-BASIC 231 00:11:45,998 --> 00:11:47,207 ‎-Java ‎-C++ 232 00:11:47,291 --> 00:11:49,042 ‎-Python 3 ‎-HTML 5 233 00:11:49,126 --> 00:11:51,044 ‎Pearl、PHP和一點C 234 00:11:51,128 --> 00:11:56,717 ‎就如同各種口說語言是向其他人 ‎表達相同概念的不同方式 235 00:11:57,050 --> 00:12:01,972 ‎各種程式語言也只是向電腦 ‎表達相同概念的不同方式 236 00:12:02,347 --> 00:12:05,058 ‎我們有超過一種的高階語言 237 00:12:05,142 --> 00:12:07,936 ‎因為,第一,不同的語言 238 00:12:08,020 --> 00:12:10,105 ‎處理不同的需求 239 00:12:10,731 --> 00:12:12,024 ‎來看看這兩個 240 00:12:12,191 --> 00:12:15,944 ‎這一個是通用商業語言 ‎在1950年代後期被創 241 00:12:16,028 --> 00:12:18,906 ‎為了讓公司能更容易地使用程式 242 00:12:19,239 --> 00:12:23,410 ‎這看起來非常像英文 ‎除了英文的每句話 243 00:12:23,494 --> 00:12:25,579 ‎不會都以“停止執行”作結 244 00:12:26,497 --> 00:12:32,753 ‎這一個是組合程式設計語言 ‎於1960年代發明,包含更多科學計算 245 00:12:33,212 --> 00:12:35,297 ‎這就像生物演化 246 00:12:35,631 --> 00:12:38,425 ‎隨著生物體變得更複雜 ‎他們會發展出 247 00:12:38,509 --> 00:12:41,637 ‎讓他們更能適應自己特定環境的功能 248 00:12:42,012 --> 00:12:45,933 ‎坦白說,這也關乎品味 249 00:12:46,558 --> 00:12:50,521 ‎人們喜歡用不同的工具表達自己 250 00:12:50,604 --> 00:12:53,774 ‎以C++程式語言為例 251 00:12:53,857 --> 00:12:56,276 ‎伊隆馬斯克就不喜歡 252 00:12:56,360 --> 00:12:57,611 ‎你也可以寫一個程式 253 00:12:58,028 --> 00:13:02,533 ‎這是一個真實的高階程式語言 ‎完全由牛叫聲的英文拼音“moo”組成 254 00:13:02,950 --> 00:13:04,910 ‎是真的,這個程式就叫做牛 255 00:13:05,285 --> 00:13:08,956 ‎這一個是由阿諾史瓦辛格 ‎在電影中的經典名句所組成 256 00:13:09,164 --> 00:13:13,252 ‎每次當我想:“好,我們現在一定 ‎寫不出新的程式語言了” 257 00:13:13,335 --> 00:13:20,050 ‎某個人會寫出一個新的程式語言 ‎然後發展出一群愛好者 258 00:13:20,175 --> 00:13:24,888 ‎所以我看不見發明新程式語言的終點 259 00:13:25,472 --> 00:13:29,017 ‎而且,所有這些語言都仍根據邏輯 260 00:13:29,393 --> 00:13:32,312 ‎比如說 ‎一位在Netflix的編碼員可以說 261 00:13:32,396 --> 00:13:35,941 ‎“如果你已經看了超過兩個小時 262 00:13:36,024 --> 00:13:37,150 ‎那就顯示這個” 263 00:13:37,609 --> 00:13:40,195 ‎但若要讓程式影響多數人的生活 264 00:13:40,279 --> 00:13:42,531 ‎多數人就必須使用電腦 265 00:13:42,739 --> 00:13:44,700 ‎這就代表電腦必須更簡單 266 00:13:44,783 --> 00:13:46,076 ‎更好用 267 00:13:46,159 --> 00:13:48,370 ‎而這又需要很大的進步 268 00:13:48,912 --> 00:13:50,497 ‎就從這裡開始 269 00:13:50,747 --> 00:13:54,376 ‎在道格拉斯恩格爾巴特 ‎於1968年所做的示範中 270 00:13:54,459 --> 00:13:56,587 ‎我們馬上就會看到他在使用的螢幕 271 00:13:56,712 --> 00:13:58,547 ‎還有游標移動的方式 272 00:13:58,630 --> 00:14:01,425 ‎是和滑鼠移動的方式一致 273 00:14:02,050 --> 00:14:06,346 ‎大家現在設計程式時 ‎不會先在紙上寫一份說明 274 00:14:06,430 --> 00:14:11,476 ‎然後把紙交給某個人 ‎那個人再輸進電腦裡 275 00:14:11,560 --> 00:14:15,272 ‎你坐在螢幕前,你有圖形使用者介面 276 00:14:15,355 --> 00:14:17,566 ‎我們簡稱圖形使用者介面為GUI 277 00:14:18,025 --> 00:14:21,111 ‎有了GUI,人們完全不用打字 ‎就可以編寫程式 278 00:14:22,487 --> 00:14:24,907 ‎或者,他們可以更輕鬆地使用程式 279 00:14:25,240 --> 00:14:29,661 ‎你通常身處的程式設計環境 280 00:14:30,287 --> 00:14:34,958 ‎是艾倫和他的同事 281 00:14:35,042 --> 00:14:40,631 ‎在1970年代早期 ‎於全錄帕羅奧多研究中心精心創造的 282 00:14:40,714 --> 00:14:41,548 ‎他說的艾倫 283 00:14:41,715 --> 00:14:42,799 ‎就是這位艾倫 284 00:14:42,883 --> 00:14:46,053 ‎我認為他是個人計算之父 285 00:14:46,136 --> 00:14:50,265 ‎因為他是第一位真正 ‎清晰明確地表達這樣的願景的人 286 00:14:50,515 --> 00:14:54,353 ‎我必須要坦承 ‎那時候我以為這只是科幻小說 287 00:14:54,436 --> 00:14:56,605 ‎當大事真的被完成時 288 00:14:58,106 --> 00:14:59,733 ‎通常是一整個團隊的努力 289 00:14:59,816 --> 00:15:02,110 ‎我的天,研究中心的人可厲害了 290 00:15:02,653 --> 00:15:04,196 ‎就像魔法一樣 291 00:15:04,780 --> 00:15:08,450 ‎圖形使用者介面讓其他幾百萬人 292 00:15:08,533 --> 00:15:13,080 ‎能用對他們來說自然的方式 ‎使用電腦 293 00:15:13,580 --> 00:15:16,750 ‎當全錄在1979年首次宣傳GUI時 294 00:15:16,833 --> 00:15:20,170 ‎他們展示程式可以如何改變日常生活 295 00:15:20,462 --> 00:15:22,923 ‎你進辦公室,全錄電腦 296 00:15:23,006 --> 00:15:25,008 ‎在螢幕上為你顯示你早上收到的郵件 297 00:15:25,092 --> 00:15:27,344 ‎不久後,像這樣的全錄系統 298 00:15:27,427 --> 00:15:29,721 ‎就會幫助你管理你最寶貴的資源 299 00:15:30,472 --> 00:15:31,431 ‎也就是資訊 300 00:15:31,848 --> 00:15:36,603 ‎有很多像我一樣 ‎還有很多在這個研究界裡的人 301 00:15:36,687 --> 00:15:38,105 ‎想要讓世界變得更好 302 00:15:38,188 --> 00:15:43,068 ‎他們有一個和人類擴增 ‎息息相關的想法 303 00:15:43,610 --> 00:15:46,196 ‎一種會和我們互動的東西 304 00:15:46,697 --> 00:15:47,864 ‎和大眾互動 305 00:15:48,198 --> 00:15:50,784 ‎和一般人互動,讓我們能夠 306 00:15:50,867 --> 00:15:53,245 ‎做比之前更多的事 307 00:15:53,662 --> 00:15:56,248 ‎這也的確讓我們能夠做更多 308 00:15:56,331 --> 00:15:58,875 ‎GUI是這個層級表上的一大進步 309 00:15:59,501 --> 00:16:03,630 ‎接下來出現了下一個 ‎改變世界的創新發明 310 00:16:05,382 --> 00:16:09,177 ‎傳送所有我們可以使用程式 ‎製作的東西的新方法 311 00:16:10,137 --> 00:16:12,848 ‎在電視上,人們開始預測迅速 312 00:16:12,931 --> 00:16:14,433 ‎取得所有程式的意義為何 313 00:16:14,808 --> 00:16:17,519 ‎想像一下,你早上坐下喝咖啡 314 00:16:17,602 --> 00:16:20,439 ‎打開家裡的電腦,閱讀今天的報紙 315 00:16:20,522 --> 00:16:24,985 ‎想像這樣的一個世界 ‎所有曾寫下的字,所有畫作的圖片 316 00:16:25,068 --> 00:16:28,697 ‎所有拍攝過的電影 ‎你都可以在家即刻觀賞 317 00:16:28,780 --> 00:16:33,744 ‎我認為其實我們即將面臨一個 ‎令人振奮又令人恐懼的東西 318 00:16:33,827 --> 00:16:35,287 ‎但這只是一個工具吧? 319 00:16:35,370 --> 00:16:36,204 ‎不是 320 00:16:36,288 --> 00:16:40,667 ‎今日最具影響力的軟體產品 ‎利用所有的創新發明 321 00:16:40,751 --> 00:16:44,671 ‎一位大學生使用高階程式語言,PHP 322 00:16:44,755 --> 00:16:47,632 ‎製作在網路上分享的東西 323 00:16:47,716 --> 00:16:49,760 ‎使用GUI在電腦上操作 324 00:16:50,093 --> 00:16:53,680 ‎2004年,在自己生平第一次的訪問中 ‎他這麼描述 325 00:16:53,972 --> 00:16:56,433 ‎這是一個網路名錄 326 00:16:56,516 --> 00:16:59,478 ‎透過大學和他們在網上的社群網絡 ‎連結彼此 327 00:16:59,561 --> 00:17:02,731 ‎我們現在有十萬人加入 ‎誰知道我們下一步會往哪走 328 00:17:02,814 --> 00:17:08,361 ‎結果,每個月有超過20萬人用臉書 329 00:17:08,695 --> 00:17:11,656 ‎編碼員今天真的可以 ‎塑造幾十億人的生活 330 00:17:11,907 --> 00:17:15,869 ‎他們如何工作、購物 ‎飲食、約會和放鬆 331 00:17:16,203 --> 00:17:17,537 ‎你現在在做什麼? 332 00:17:17,621 --> 00:17:21,208 ‎你在Netflix的網頁瀏覽器上看我 333 00:17:23,376 --> 00:17:27,255 ‎所以Netflix本身就是一個程式 ‎在網頁瀏覽器中被執行 334 00:17:27,339 --> 00:17:28,423 ‎網頁瀏覽器也是程式 335 00:17:28,507 --> 00:17:33,970 ‎並在由程式設計的電腦上執行 336 00:17:34,054 --> 00:17:35,680 ‎這永不停止 337 00:17:37,599 --> 00:17:40,519 ‎好的程式就像一間博物館的建築師 338 00:17:41,311 --> 00:17:43,396 ‎一間幾百萬人每天想到 339 00:17:43,480 --> 00:17:45,857 ‎會走去參觀和使用的博物館 340 00:17:46,191 --> 00:17:49,569 ‎我認為編寫程式十分特別 ‎因為這感覺像純粹的創作 341 00:17:49,653 --> 00:17:51,863 ‎你有一個某樣東西 ‎應該如何運作的想法 342 00:17:52,364 --> 00:17:56,201 ‎然後你試著坐在一台電腦前 343 00:17:56,284 --> 00:17:58,078 ‎將想法變為現實 344 00:17:58,161 --> 00:18:01,081 ‎我認為這個角色肩負很多責任 345 00:18:01,164 --> 00:18:04,000 ‎給你一個速限 346 00:18:04,167 --> 00:18:05,669 ‎一小時不能超過96公里 347 00:18:06,545 --> 00:18:07,420 ‎好 348 00:18:07,712 --> 00:18:11,299 ‎但是,如果你有一輛車,然後電腦說 349 00:18:12,092 --> 00:18:15,053 ‎“這輛車的時速不會超過96公里”? 350 00:18:15,846 --> 00:18:17,973 ‎這是控制你行為不同的方式 351 00:18:18,056 --> 00:18:23,395 ‎通常靠控制我們的選擇 ‎我們生活中的程式行使 352 00:18:23,478 --> 00:18:27,941 ‎一種更加深遠的規範效力 ‎幾乎比法律能夠期望得要更加深遠 353 00:18:28,525 --> 00:18:30,819 ‎而這可能是件很棒的事 354 00:18:30,944 --> 00:18:35,198 ‎每年在美國發生大約六百萬件車禍 355 00:18:35,282 --> 00:18:39,494 ‎一項分析發現94%的車禍 ‎都由駕駛造成 356 00:18:40,370 --> 00:18:43,165 ‎程式編寫的發展 ‎可以拯救幾百萬條生命 357 00:18:43,665 --> 00:18:46,960 ‎但它們也可以用新的方式 ‎讓生命陷入危險之中 358 00:18:47,460 --> 00:18:50,922 ‎我有一種叫做肥厚性心肌症的病 359 00:18:51,006 --> 00:18:56,219 ‎就是說我心臟很大的醫學專有名詞 360 00:18:56,511 --> 00:18:58,096 ‎我的心臟真的很大 361 00:18:58,180 --> 00:19:00,932 ‎大概比一個正常人的心臟要大三倍 362 00:19:01,016 --> 00:19:05,937 ‎在我大約30歲時發現 ‎所以我在40歲前突然過世的風險 363 00:19:06,021 --> 00:19:07,355 ‎就非常高 364 00:19:07,439 --> 00:19:10,025 ‎電生理學家說:“那完全沒關係 365 00:19:10,108 --> 00:19:12,485 ‎因為妳可以裝一個心律調節電擊器” 366 00:19:13,028 --> 00:19:15,030 ‎這個裝置由程式執行 367 00:19:15,697 --> 00:19:20,243 ‎幾年前,在我懷孕時,我開始心悸 368 00:19:20,744 --> 00:19:24,748 ‎大約四分之一的女性都會心悸 ‎所以這非常正常 369 00:19:25,207 --> 00:19:28,418 ‎但我的裝置以為 ‎我不規律的心跳很危險 370 00:19:28,501 --> 00:19:29,586 ‎所以它電我 371 00:19:29,669 --> 00:19:34,132 ‎裝置製造商絕對不想讓孕婦被電 372 00:19:34,216 --> 00:19:36,551 ‎這真的是他們最不想要發生的事 373 00:19:36,635 --> 00:19:39,262 ‎他們只是從未考慮到這一點 374 00:19:39,346 --> 00:19:42,474 ‎有非常大量的決策需要被決定 375 00:19:43,141 --> 00:19:47,395 ‎而設計程式的人將會做出這些決定 376 00:19:48,188 --> 00:19:50,690 ‎不可避免地 377 00:19:51,066 --> 00:19:53,735 ‎一定會有一些情況的組合 378 00:19:53,818 --> 00:19:55,904 ‎是他們沒有預期到的 379 00:19:56,238 --> 00:20:01,910 ‎所以在我們教導設計程式的技術時 ‎我們嘗試教導他們的是 380 00:20:02,244 --> 00:20:04,496 ‎你如何考慮 381 00:20:04,621 --> 00:20:07,749 ‎所有這些不同的情況 382 00:20:07,832 --> 00:20:10,210 ‎你如何嘗試盡可能詳盡全面 383 00:20:10,293 --> 00:20:16,091 ‎卻不會因你可能需要 ‎考慮的事物的數量而不知所措 384 00:20:16,174 --> 00:20:20,011 ‎而這種情況只會更加真實 ‎因為我們開始 385 00:20:20,136 --> 00:20:21,721 ‎用全新的方式編寫程式 386 00:20:22,305 --> 00:20:25,517 ‎傳統的程式編寫,是你幫電腦寫指令 387 00:20:26,059 --> 00:20:28,895 ‎但我們現在能夠給電腦一組輸入 388 00:20:28,979 --> 00:20:30,230 ‎和一組輸出 389 00:20:30,313 --> 00:20:33,525 ‎讓它寫自己的指令 390 00:20:33,817 --> 00:20:37,404 ‎你要做的是,你給電腦 391 00:20:38,280 --> 00:20:39,739 ‎很多例子 392 00:20:40,073 --> 00:20:43,660 ‎然後你說:“這是一個派對” 393 00:20:43,785 --> 00:20:45,328 ‎你也會有其他的東西 394 00:20:45,412 --> 00:20:47,163 ‎一間牙醫辦公室,不是一個派對 395 00:20:47,330 --> 00:20:48,915 ‎一間教室,不是一個派對 396 00:20:49,374 --> 00:20:53,169 ‎所以電腦看著這些東西,嘗試建構 397 00:20:53,253 --> 00:20:55,005 ‎一個分類系統 398 00:20:55,255 --> 00:20:57,173 ‎這是機器學習 399 00:20:57,257 --> 00:21:00,051 ‎如果有人在當今提及人工智慧 400 00:21:00,468 --> 00:21:01,553 ‎他們就是在說這個 401 00:21:01,636 --> 00:21:05,390 ‎這是一種完全不同的抽象化 402 00:21:05,473 --> 00:21:06,641 ‎以及做事的方式 403 00:21:06,725 --> 00:21:11,438 ‎因為我們無法將這歸入 ‎我們分類程式編寫方式的層級表中 404 00:21:11,646 --> 00:21:15,442 ‎我們稱這為機器學習演算法 ‎因為電腦在創造 405 00:21:15,525 --> 00:21:17,736 ‎自己遵循的指示 406 00:21:18,069 --> 00:21:21,990 ‎但當然,這些指示最後也會被翻譯成 407 00:21:22,073 --> 00:21:24,451 ‎微小的指令 408 00:21:25,201 --> 00:21:27,912 ‎Google翻譯以前有 ‎超過一百萬條的程式 409 00:21:28,538 --> 00:21:32,792 ‎那是人類在編寫那一百條小指令 410 00:21:32,876 --> 00:21:38,256 ‎Google翻譯現在有大約五百條程式 411 00:21:38,465 --> 00:21:40,008 ‎都是要機器學習自己創造程式 412 00:21:40,091 --> 00:21:44,304 ‎假設因為疏忽 ‎所有你輸入的派對照片 413 00:21:44,387 --> 00:21:46,639 ‎都沒有包含黑人或西班牙人 414 00:21:47,140 --> 00:21:49,434 ‎電腦可能會決定派對的一項規則 415 00:21:49,517 --> 00:21:52,562 ‎就是只有白人和亞洲人會被邀請 416 00:21:52,812 --> 00:21:55,982 ‎我們有很多設計程式的白人和亞洲人 417 00:21:56,733 --> 00:22:01,321 ‎我們絕對應該拓展程式設計的空間 ‎包含更多不一樣的人 418 00:22:01,404 --> 00:22:02,447 ‎理由多到數不清 419 00:22:02,530 --> 00:22:05,325 ‎如果有更多生活經驗 ‎他們會問更好的問題 420 00:22:05,408 --> 00:22:09,037 ‎但最終 ‎如果你提供機器學習系統數據 421 00:22:09,120 --> 00:22:13,208 ‎比如說,裡面建有 ‎系統式種族主義數據的刑事司法系統 422 00:22:13,291 --> 00:22:15,668 ‎假設你的機器學習程式器 423 00:22:15,752 --> 00:22:17,170 ‎看起來像一個班尼頓廣告 424 00:22:17,253 --> 00:22:22,384 ‎有不同的種族、容貌 ‎不同的社會背景 425 00:22:22,634 --> 00:22:25,303 ‎那個機器學習系統 ‎還是會從那個數據學習 426 00:22:25,387 --> 00:22:28,139 ‎如果人類沒有積極改正 427 00:22:28,223 --> 00:22:31,726 ‎歷史數據會讓我們重複過去的錯誤 428 00:22:33,812 --> 00:22:36,481 ‎程式編寫的故事,是關於人類的野心 429 00:22:36,564 --> 00:22:38,483 ‎和創造力的故事 430 00:22:38,566 --> 00:22:41,528 ‎獵鷹九號運載火箭發射 431 00:22:41,611 --> 00:22:44,030 ‎我們目睹了 ‎我們以為不可能看見的東西 432 00:22:44,697 --> 00:22:45,740 ‎一個黑洞 433 00:22:46,366 --> 00:22:47,742 ‎我們在建造一個新世界 434 00:22:48,284 --> 00:22:52,122 ‎運用更多人能夠使用的 ‎更簡單好用的工具 435 00:22:52,664 --> 00:22:55,750 ‎來幫助確保那個世界變得更好 436 00:22:56,126 --> 00:23:00,755 ‎我們一直在讓電腦變得 ‎更容易為人類所用 437 00:23:00,839 --> 00:23:02,424 ‎讓電腦能被更多數的人類使用 438 00:23:02,507 --> 00:23:07,178 ‎在過去50年中 ‎我們看著這個演變在我們面前發生 439 00:23:07,262 --> 00:23:09,139 ‎所以活在當今世界中 ‎才那麼令人激動 440 00:23:09,973 --> 00:23:14,144 ‎這是件很重要的事 ‎要記住所有你在電腦上使用的東西 441 00:23:14,227 --> 00:23:16,187 ‎都是由某個人類創造的 442 00:23:17,147 --> 00:23:18,773 ‎你其實可以是其中之一 443 00:23:18,857 --> 00:23:21,317 ‎而你成為其中之一,也非常重要 444 00:23:21,401 --> 00:23:24,154 ‎你真的可以用一種 ‎很重要的方式改變世界 445 00:23:24,237 --> 00:23:28,616 ‎我們有一個將會依靠機器學習 446 00:23:28,741 --> 00:23:32,287 ‎數據和更多不同的傳統程式編寫 ‎來運作的世界 447 00:23:32,370 --> 00:23:35,123 ‎而身為社會的一分子 ‎我們必須做的是說 448 00:23:35,206 --> 00:23:37,584 ‎“好,我們有這個強大的新科技 449 00:23:38,251 --> 00:23:43,089 ‎在某些方面來說,它可以很棒 ‎但它不會靠自己就變得很棒”