‎911，緊急情況？
‎911，您碰到什麼緊急情況？
‎911，您…
‎2014年4月9日 ‎911專線突然無法使用
‎美國國內幾百萬人均無法使用
‎壞了六個小時
‎超過六千通緊急電話無法接通
‎政府查出問題的來源
‎是一台位於科羅拉多州恩格爾伍德 ‎傳送電話中心的電腦
‎是一個簡單的程式編寫錯誤
‎負責為那台電腦編寫程式的人
‎選擇使用電腦能紀錄的 ‎電話數量上限編寫程式
‎一個編碼員以為 ‎電腦絕對不可能達到的上限
‎但2014年的那個晚上 ‎電腦達到了上限
‎電腦準確地遵照指示
‎它達到上限，然後就不再傳送電話
‎問題不在於電腦
‎也不是程式中有錯誤
‎而是程式編寫出了錯
‎程式編寫是人們用來 ‎與電腦溝通的決策程序
‎這樣的能力伴隨著很多的道德責任
‎編寫程式無可比擬
‎沒有什麼可以取代它
‎就跟建造城市的建築工人
‎會決定你如何在城市中的生活一樣
‎我認為程式控制我們如何在網上生活 ‎這基本上就是我們生活的方式
‎不只是當我們上網
‎當我們聯絡緊急服務專線
‎或去看醫生
‎或上車
‎我們每天都離程式好近
‎但我們之中，只有0.033%的人 ‎知道怎麼編寫程式
‎對絕大數的人來說，程式是黑箱
‎但程式不需要是黑箱
‎那程式編寫到底如何運作？
‎我們又用程式編寫 ‎在建造什麼樣的新世界？
‎NETFLIX 原創紀錄片系列
‎電腦
‎巧妙的電子硬體組合
‎是由人類創造的
‎並不是我們沒有合適的機器 ‎可以解決我們的問題
‎而是我們缺乏如何解決 ‎問題的合適說明
‎當有人提到程式編寫 ‎你會覺得那十分困難
‎這是件很重要的事 ‎要記住所有你在電腦上使用的東西
‎都是由某個人類創造的
‎劇名：流行大百科，程式編寫
‎假如有個外星人來，然後說 ‎“好，程式的重要性是什麼？
‎是什麼？”
‎我會說：“這個嘛，你知道
‎我們住在這個物質地球上 ‎大概在50年前
‎一小群人開始建造另一個星球
‎但不是物質星球，是一個虛擬星球
‎看看街道四周 ‎你看到所有人走在街上
‎低著頭，盯著他們的電話嗎？
‎他們其實就是在那一個世界裡
‎所以，這就是程式
‎它是那個另一個世界的基礎材料
‎這架織布機是世界上 ‎所有電腦和智慧型手機的祖先
‎織布機在1804年被發明
‎最重要的創新發明是這些卡片
‎每張卡片上的洞只能讓某些針穿過
‎使用幾百張卡片上的幾千個洞
‎織布工能做出比之前更複雜的圖案
‎圖案複雜的披肩在歐洲風行一時
‎紡織出來的圖案可以做得非常精緻 ‎看起來就像圖畫
‎比如像這個織布機發明者的圖案
‎在這些織布機出現以前 ‎每一條線都必須用手挑選
‎由“提紗童”挑選
‎那時候也以人工計算數學
‎由所謂的“計算者”計算
‎最早的計算者是人類
‎那時能夠幫助我們的最好機器
‎只能解出一種數學問題
‎比如像算盤，能夠加減數字
‎英國數學家查爾斯巴貝奇 ‎想要一台機器
‎可以用來解出任何 ‎你選來要它做的數學問題
‎或更確切地說，是你設計要它做的
‎他提出一台他稱為“分析機”的機器
‎巴貝奇的構想會讓他在歷史上留名
‎電腦最初是由巴貝奇發明的
‎他是一位非常古怪的英國發明家
‎巴貝奇有個機器該怎麼運作的好主意
‎他將這張圖案的副本掛在自己家裡
‎巴貝奇的分析機就像雅卡爾的織布機
‎都有物質的部分，就是“硬體”
‎同樣也像織布機一樣
‎你能以打洞卡片的方式，給硬體指示
‎洞讓針穿過
‎沒有洞的地方就迫使針後退
‎開始一連串的機械計算
‎上面有不同洞的卡片
‎就是軟體
‎巴貝奇從沒完成分析機
‎但一個和他一起工作的年輕女子 ‎看到機器改變世界的潛力
‎不僅僅是改變數學
‎勒芙蕾絲伯爵夫人愛達拜倫寫下
‎“在應用卡片的想法出現後 ‎就讓算術沒有了邊界”
‎她看見雅卡爾看見的
‎這些洞不只可以代表數字
‎它們可以是圖案
‎音樂
‎或一整句話
‎你可以把它想成是摩斯密碼
‎在摩斯密碼中的每個字母都只由 ‎以兩種信號組合而成的代碼表達
‎這個信號或這個信號
‎是二進制
‎我們用那些嗶嗶聲就能表達任何事物
‎比如這封由鐵達尼號發出的求救訊號
‎“SOS”並不具有任何意義
‎只是非常容易用摩斯密碼傳送
‎你也可以這樣想，所有的字母都可以 ‎使用零和一的組合來表達
‎看起來眼熟嗎？
‎這是二進位碼
‎我們就是用二進位碼消除機器 ‎和人類語言之間的差異
‎每一個一或零都是一個二進位數字 ‎或稱為“位元”
‎這些是現代計算的原子
‎你可能知道它們的另一個名字
‎八位元是一個位元組
‎所以你電腦裡那張 ‎110萬位元組的圖片
‎就是由八百八十萬個一和零組成
‎就像摩斯密碼的點和劃 ‎只是一種寫這兩種信號的方式
‎二進位碼的一和零 ‎也只是我們用來寫下
‎在現在電腦中真正發生的事的方式
‎供電或不供電
‎這是一個簡單的電路
‎想像幾百萬的電路一起運作
‎那就是現在的電腦
‎在電路中，這是一個位元
‎燈泡關了？零
‎開了？一
‎電腦只了解電
‎所以所有編碼員對電腦做的事
‎最終
‎就只是一連串的開關電荷
‎能夠成功是因為 ‎用正確的方式放在一起
‎這些電荷能代表邏輯
‎基本上，邏輯是一系列事實或事件
‎比如關上這個開關
‎還有關上這個，讓鈴聲響起
‎事實上，電腦界的人稱此為 ‎“邏輯及電路”
‎或是“邏輯閘”
‎我看看能不能做得出來 ‎但不會在桌上燒一個洞
‎在及閘裡，兩個電路都需要被關上
‎燈才會亮
‎另外還有或閘
‎在或閘裡，只要關上一個電路 ‎燈就會亮
‎也可以用另一種方式說
‎如果關上其中一個電路，那就開燈
‎這種“如果，那就”的表達方式
‎就是演算法
‎在今日的大眾文化中 ‎演算法一詞十分讓人困惑
‎我們之前已經看過 ‎演算法變成一場混亂
‎演算法運作的方式 ‎對多數人來說是個謎
‎演算法到底是什個鬼東西？
‎但演算法其實只是一組指示
‎想像你要去店裡
‎你可以先左轉，再右轉
‎或你可以先右轉，然後左轉
‎或你也可以先左轉四次
‎在公園跑一圈
‎穿越高速公路
‎再右轉四次
‎就像可以使用很多不同的路線 ‎抵達同個地方
‎在程式編寫中 ‎也可以有很多不同的演算法
‎用來解決相同的問題
‎目標是找到最簡潔 ‎最有效率的那個方法
‎美麗的程式不會自我重複
‎非常簡潔、力量非常大
‎靠演算法運作的電腦 ‎只做我們叫它們做的事
‎但做得快多了
‎這也讓人們變得更有力量
‎科學家剛開始開發熔合彈時
‎他們主要使用人類計算者
‎但後來他們用了這個
‎電子數值積分計算機 ‎花了六個星期計算氫彈
‎計算出的結果直接促成
‎1952年首次成功測試一顆炸彈
‎這顆炸彈的威力 ‎比在第二次世界大戰中
‎於廣島和長崎投下的 ‎原子彈的威力強大幾百倍
‎程式編寫的力量加強了人們
‎做他們選擇做的事的能力
‎但是，在1940年代 ‎程式編寫還是很麻煩
‎用零和一寫程式很明顯 ‎無法大規模發展
‎人們想要更多程式編寫給予的力量
‎但他們想要更簡單的編寫程式的方法
‎從那時開始，程式編寫的故事就成為 ‎將程式變得越來越像人類語言的故事
‎發明今日所有編碼員都在使用的東西
‎程式語言
‎與一和零相比，這些語言很抽象
‎抽象化對人們來說是個很難懂的字
‎更多抽象的語言其實最終 ‎都是相同的一和零
‎我們只是找到更好的方式組織它們
‎你可以從生物學的角度來思考
‎人類極致複雜
‎但我們99%的身體 ‎都只由六個元素組成
‎你可以再往上一層，那就是大分子
‎在那一層的組織和
‎最原始生物的組織之間
‎中間其實有很大的差距
‎而且人類有腦
‎腦可以做很先進的事
‎很難相信它們是由同樣的東西所組成
‎電腦其實和這很相像，只是簡單許多
‎所以這是好消息
‎程式編寫的故事就是 ‎將這個方框往上移的故事
‎遠離二進制，給我們
‎更簡單、更快速 ‎力量更強大的編寫程式的方式
‎而不需要去應付 ‎或甚至真正需要去了解
‎底下的二進制和邏輯閘
‎就是這個讓編碼員能夠製造 ‎我們都熟悉不過的產品
‎達成目標的第一步是
‎“組合語言”，它更容易讀寫
‎我們不說01000111
‎而用英文的“加”，ADD
‎然後讓一個稱為組譯器的程式 ‎將那些字母
‎也就是A、D、D ‎翻譯成合適相應的零和一
‎在這個層面上 ‎二進制被組織成字母和數字
‎就像原子被組織成分子
‎但用組合語言編寫程式 ‎仍然不是那麼容易
‎因為所有這些電腦 ‎都使用不一樣的組合語言
‎如果你幫一台電腦寫程式 ‎這個程式在其他台電腦上都不能用
‎很快地，人們開始思考
‎我們真正想給電腦的是
‎我們其實天天在用的東西
‎你有程式語言
‎是我們使用組合語言而建構出來的
‎然後從那些程式語言之中 ‎我們又建構更多程式語言
‎你大概聽過這些程式語言的名字
‎-LISP ‎-BASIC
‎-Java ‎-C++
‎-Python 3 ‎-HTML 5
‎Pearl、PHP和一點C
‎就如同各種口說語言是向其他人 ‎表達相同概念的不同方式
‎各種程式語言也只是向電腦 ‎表達相同概念的不同方式
‎我們有超過一種的高階語言
‎因為，第一，不同的語言
‎處理不同的需求
‎來看看這兩個
‎這一個是通用商業語言 ‎在1950年代後期被創
‎為了讓公司能更容易地使用程式
‎這看起來非常像英文 ‎除了英文的每句話
‎不會都以“停止執行”作結
‎這一個是組合程式設計語言 ‎於1960年代發明，包含更多科學計算
‎這就像生物演化
‎隨著生物體變得更複雜 ‎他們會發展出
‎讓他們更能適應自己特定環境的功能
‎坦白說，這也關乎品味
‎人們喜歡用不同的工具表達自己
‎以C++程式語言為例
‎伊隆馬斯克就不喜歡
‎你也可以寫一個程式
‎這是一個真實的高階程式語言 ‎完全由牛叫聲的英文拼音“moo”組成
‎是真的，這個程式就叫做牛
‎這一個是由阿諾史瓦辛格 ‎在電影中的經典名句所組成
‎每次當我想：“好，我們現在一定 ‎寫不出新的程式語言了”
‎某個人會寫出一個新的程式語言 ‎然後發展出一群愛好者
‎所以我看不見發明新程式語言的終點
‎而且，所有這些語言都仍根據邏輯
‎比如說 ‎一位在Netflix的編碼員可以說
‎“如果你已經看了超過兩個小時
‎那就顯示這個”
‎但若要讓程式影響多數人的生活
‎多數人就必須使用電腦
‎這就代表電腦必須更簡單
‎更好用
‎而這又需要很大的進步
‎就從這裡開始
‎在道格拉斯恩格爾巴特 ‎於1968年所做的示範中
‎我們馬上就會看到他在使用的螢幕
‎還有游標移動的方式
‎是和滑鼠移動的方式一致
‎大家現在設計程式時 ‎不會先在紙上寫一份說明
‎然後把紙交給某個人 ‎那個人再輸進電腦裡
‎你坐在螢幕前，你有圖形使用者介面
‎我們簡稱圖形使用者介面為GUI
‎有了GUI，人們完全不用打字 ‎就可以編寫程式
‎或者，他們可以更輕鬆地使用程式
‎你通常身處的程式設計環境
‎是艾倫和他的同事
‎在1970年代早期 ‎於全錄帕羅奧多研究中心精心創造的
‎他說的艾倫
‎就是這位艾倫
‎我認為他是個人計算之父
‎因為他是第一位真正 ‎清晰明確地表達這樣的願景的人
‎我必須要坦承 ‎那時候我以為這只是科幻小說
‎當大事真的被完成時
‎通常是一整個團隊的努力
‎我的天，研究中心的人可厲害了
‎就像魔法一樣
‎圖形使用者介面讓其他幾百萬人
‎能用對他們來說自然的方式 ‎使用電腦
‎當全錄在1979年首次宣傳GUI時
‎他們展示程式可以如何改變日常生活
‎你進辦公室，全錄電腦
‎在螢幕上為你顯示你早上收到的郵件
‎不久後，像這樣的全錄系統
‎就會幫助你管理你最寶貴的資源
‎也就是資訊
‎有很多像我一樣 ‎還有很多在這個研究界裡的人
‎想要讓世界變得更好
‎他們有一個和人類擴增 ‎息息相關的想法
‎一種會和我們互動的東西
‎和大眾互動
‎和一般人互動，讓我們能夠
‎做比之前更多的事
‎這也的確讓我們能夠做更多
‎GUI是這個層級表上的一大進步
‎接下來出現了下一個 ‎改變世界的創新發明
‎傳送所有我們可以使用程式 ‎製作的東西的新方法
‎在電視上，人們開始預測迅速
‎取得所有程式的意義為何
‎想像一下，你早上坐下喝咖啡
‎打開家裡的電腦，閱讀今天的報紙
‎想像這樣的一個世界 ‎所有曾寫下的字，所有畫作的圖片
‎所有拍攝過的電影 ‎你都可以在家即刻觀賞
‎我認為其實我們即將面臨一個 ‎令人振奮又令人恐懼的東西
‎但這只是一個工具吧？
‎不是
‎今日最具影響力的軟體產品 ‎利用所有的創新發明
‎一位大學生使用高階程式語言，PHP
‎製作在網路上分享的東西
‎使用GUI在電腦上操作
‎2004年，在自己生平第一次的訪問中 ‎他這麼描述
‎這是一個網路名錄
‎透過大學和他們在網上的社群網絡 ‎連結彼此
‎我們現在有十萬人加入 ‎誰知道我們下一步會往哪走
‎結果，每個月有超過20萬人用臉書
‎編碼員今天真的可以 ‎塑造幾十億人的生活
‎他們如何工作、購物 ‎飲食、約會和放鬆
‎你現在在做什麼？
‎你在Netflix的網頁瀏覽器上看我
‎所以Netflix本身就是一個程式 ‎在網頁瀏覽器中被執行
‎網頁瀏覽器也是程式
‎並在由程式設計的電腦上執行
‎這永不停止
‎好的程式就像一間博物館的建築師
‎一間幾百萬人每天想到
‎會走去參觀和使用的博物館
‎我認為編寫程式十分特別 ‎因為這感覺像純粹的創作
‎你有一個某樣東西 ‎應該如何運作的想法
‎然後你試著坐在一台電腦前
‎將想法變為現實
‎我認為這個角色肩負很多責任
‎給你一個速限
‎一小時不能超過96公里
‎好
‎但是，如果你有一輛車，然後電腦說
‎“這輛車的時速不會超過96公里”？
‎這是控制你行為不同的方式
‎通常靠控制我們的選擇 ‎我們生活中的程式行使
‎一種更加深遠的規範效力 ‎幾乎比法律能夠期望得要更加深遠
‎而這可能是件很棒的事
‎每年在美國發生大約六百萬件車禍
‎一項分析發現94%的車禍 ‎都由駕駛造成
‎程式編寫的發展 ‎可以拯救幾百萬條生命
‎但它們也可以用新的方式 ‎讓生命陷入危險之中
‎我有一種叫做肥厚性心肌症的病
‎就是說我心臟很大的醫學專有名詞
‎我的心臟真的很大
‎大概比一個正常人的心臟要大三倍
‎在我大約30歲時發現 ‎所以我在40歲前突然過世的風險
‎就非常高
‎電生理學家說：“那完全沒關係
‎因為妳可以裝一個心律調節電擊器”
‎這個裝置由程式執行
‎幾年前，在我懷孕時，我開始心悸
‎大約四分之一的女性都會心悸 ‎所以這非常正常
‎但我的裝置以為 ‎我不規律的心跳很危險
‎所以它電我
‎裝置製造商絕對不想讓孕婦被電
‎這真的是他們最不想要發生的事
‎他們只是從未考慮到這一點
‎有非常大量的決策需要被決定
‎而設計程式的人將會做出這些決定
‎不可避免地
‎一定會有一些情況的組合
‎是他們沒有預期到的
‎所以在我們教導設計程式的技術時 ‎我們嘗試教導他們的是
‎你如何考慮
‎所有這些不同的情況
‎你如何嘗試盡可能詳盡全面
‎卻不會因你可能需要 ‎考慮的事物的數量而不知所措
‎而這種情況只會更加真實 ‎因為我們開始
‎用全新的方式編寫程式
‎傳統的程式編寫，是你幫電腦寫指令
‎但我們現在能夠給電腦一組輸入
‎和一組輸出
‎讓它寫自己的指令
‎你要做的是，你給電腦
‎很多例子
‎然後你說：“這是一個派對”
‎你也會有其他的東西
‎一間牙醫辦公室，不是一個派對
‎一間教室，不是一個派對
‎所以電腦看著這些東西，嘗試建構
‎一個分類系統
‎這是機器學習
‎如果有人在當今提及人工智慧
‎他們就是在說這個
‎這是一種完全不同的抽象化
‎以及做事的方式
‎因為我們無法將這歸入 ‎我們分類程式編寫方式的層級表中
‎我們稱這為機器學習演算法 ‎因為電腦在創造
‎自己遵循的指示
‎但當然，這些指示最後也會被翻譯成
‎微小的指令
‎Google翻譯以前有 ‎超過一百萬條的程式
‎那是人類在編寫那一百條小指令
‎Google翻譯現在有大約五百條程式
‎都是要機器學習自己創造程式
‎假設因為疏忽 ‎所有你輸入的派對照片
‎都沒有包含黑人或西班牙人
‎電腦可能會決定派對的一項規則
‎就是只有白人和亞洲人會被邀請
‎我們有很多設計程式的白人和亞洲人
‎我們絕對應該拓展程式設計的空間 ‎包含更多不一樣的人
‎理由多到數不清
‎如果有更多生活經驗 ‎他們會問更好的問題
‎但最終 ‎如果你提供機器學習系統數據
‎比如說，裡面建有 ‎系統式種族主義數據的刑事司法系統
‎假設你的機器學習程式器
‎看起來像一個班尼頓廣告
‎有不同的種族、容貌 ‎不同的社會背景
‎那個機器學習系統 ‎還是會從那個數據學習
‎如果人類沒有積極改正
‎歷史數據會讓我們重複過去的錯誤
‎程式編寫的故事，是關於人類的野心
‎和創造力的故事
‎獵鷹九號運載火箭發射
‎我們目睹了 ‎我們以為不可能看見的東西
‎一個黑洞
‎我們在建造一個新世界
‎運用更多人能夠使用的 ‎更簡單好用的工具
‎來幫助確保那個世界變得更好
‎我們一直在讓電腦變得 ‎更容易為人類所用
‎讓電腦能被更多數的人類使用
‎在過去50年中 ‎我們看著這個演變在我們面前發生
‎所以活在當今世界中 ‎才那麼令人激動
‎這是件很重要的事 ‎要記住所有你在電腦上使用的東西
‎都是由某個人類創造的
‎你其實可以是其中之一
‎而你成為其中之一，也非常重要
‎你真的可以用一種 ‎很重要的方式改變世界
‎我們有一個將會依靠機器學習
‎數據和更多不同的傳統程式編寫 ‎來運作的世界
‎而身為社會的一分子 ‎我們必須做的是說
‎“好，我們有這個強大的新科技
‎在某些方面來說，它可以很棒 ‎但它不會靠自己就變得很棒”