盤點那些改變了世界的代碼

      網(wǎng)友投稿 697 2022-05-28

      點擊上方“Python亂燉”,選擇“加為星標”

      第一時間關注Python干貨!

      轉自機器之心,參與高璇、張倩

      原文:https://dwz.cn/tcyAwl70

      讓人焦慮的「」按鈕、失聯(lián)的火星氣候軌道飛行器、死難數(shù)百人的波音 737 Max 空難……原來都與代碼有關。

      2009 年,F(xiàn)acebook 推出了一份改變世界的代碼——點「贊」按鈕?!纲潯故前?Leah Pearlman 和 Justin Rosenstein 在內的數(shù)名程序員和設計師的創(chuàng)意。他們認為 Facebook 用戶經(jīng)常太忙而無法在朋友的帖子上發(fā)表評論,但是如果有一個簡單的按鈕可以使用,那一定會大受歡迎。「朋友們可以更頻繁、更輕松地相互互動」,Pearlman 說。

      這個按鈕奏效了,甚至有點超乎想象。到 2012 年,「贊」這個按鈕已經(jīng)有了超過 1 萬億次的點擊。但它也產(chǎn)生了副作用。我們發(fā)布一張照片后,會坐立不安地刷新頁面,等待更多的「贊」。我們想知道為什么別人的贊越來越多。因此,我們開始在社交網(wǎng)絡中「暗暗發(fā)力」:變得更有趣、更犀利、更迷人、更極端。

      代碼重構了我們的生活。正如風險資本家 Marc Andreessen 寫的那樣,「軟件正在吞噬整個世界」,不過說軟件正在消化這個世界可能更準確。

      二進制穿孔卡片(1975 年)

      第一種代碼

      二進制編程出現(xiàn)時間比計算機都早。Basile Bouchon 是第一個在紙上打孔并用它來控制機器的人:1725 年,他發(fā)明了一種織機,該織機根據(jù)所送入的穿孔紙編織出不同圖案。打孔是「1」,沒有打孔是「0」。此后機器發(fā)生了很多變化,但基本的代碼組成并沒有改變?!狤lena Botella, Slate

      執(zhí)行的第一個現(xiàn)代代碼(1948 年)

      引領了計算機代碼的使用和核災難計算機模型的出現(xiàn),為冷戰(zhàn)時期的軍備競賽打下了基礎

      電子數(shù)字積分計算機是第一臺可編程電子計算機。它于 1945 年完成,通過在許多組件之間進行連接來為每個新問題進行配置。當一項任務(例如加法)完成時,一個脈沖會觸發(fā)下一項任務。但是幾年后,馮·諾依曼(Von Neumann)和 Los Alamos 的科學家 Nicholas Metropolis 改進了 ENIAC,運行了在計算機上執(zhí)行的第一條現(xiàn)代代碼:從可尋址的只讀存儲器(ENIAC 的功能表開關)執(zhí)行數(shù)百條數(shù)字指令。他們使用蒙特卡洛技術模擬了在新墨西哥州的洛斯阿拉莫斯國家實驗室提出的幾種原子彈設計的爆炸過程,通過這種方法逐步模擬了復雜系統(tǒng),繪制了可能結果的概率分布。馮·諾依曼和梅特羅波利斯向洛斯阿拉莫斯的核科學家發(fā)送了 20,000 多張卡片,通過引爆彈頭追蹤了模擬中子的過程。如今,此代碼的后續(xù)版本仍在洛斯阿拉莫斯使用?!猅homas Haigh,《ENIAC in Action: Making and Remaking the Modern Computer》合著者

      GRACE HOPPER 的編譯器(1952 年)

      使計算機處理單詞成為可能

      Grace Hopper 在對一臺早期計算機編程時,為了簡化整個過程決定將編程語言植根于人類語言?;翮辏℉opper)在第二次世界大戰(zhàn)期間加入了美國海軍預備役。她知道,像她的軍事上司一樣,人們都在努力理解二進制代碼。如果編程語言可以是基于英語的,那么這項工作就不會那么容易出錯,并且對于那些不是數(shù)學博士的人來說也更容易理解。

      一些人對此想法不以為然,但到了 1950 年代初,她設計了一個編譯器,即一組指令,將一種更易懂的代碼轉換為機器直接處理的低級代碼。她和她的實驗室使用該工具開發(fā)了 FLOW-MATIC,這是第一種將英文單詞融入該過程的編程語言?!狹olly Olmstead, Slate

      太空戰(zhàn)爭?。?961 年)

      第一個分布式視頻游戲(Spacewar)

      電子郵件的起源(1965 年)

      Come on,電子郵件來了!

      阿波羅 11 號登月艙救援代碼(1969 年)

      盤點:那些改變了世界的代碼

      防止登月艙計算機在太空中空間耗盡的代碼

      Hello, World!(1972 年或更早)

      引領一代又一代人打開編程大門的代碼

      當你坐下來學習一種新的編程語言時,教程要求你做的第一件事就是讓計算機顯示「Hello,world!」。也許最著名的早期示例來自貝爾實驗室的「C—A 編程教程」。該教程寫于 1974 年,盡管在 1972 年的手冊中也發(fā)現(xiàn)了另一種更早的語言 B。

      「Hello,world!」這是極好的教學方法。這是一項小的、可實現(xiàn)的任務,能夠使學生有成就感。這是一個標準,有助于說明不同編程語言之間的差異。這也是高級程序員確保安裝新環(huán)境后一切正常的一種快速簡便的方法。(有時程序員使用「到'hello world'的時間」比較語言和環(huán)境的速度。)也許最重要的是,「Hello,world!」能幫你打開編程的大門,它告訴你這就是新世界?!狢hris Noessel,IBM AI 設計主管。

      以空字符結尾的字符串(1972 年)

      計算史上最大的災難性設計錯誤

      1972 年,Dennis Ritchie 做出了一個重大決定:用一種名為「空字符結尾字符串」(null-terminated string)的新語言來表示文本。這個概念早就出現(xiàn)了,但是他把其寫進了他稱為 C 的新語言中,這個決定就一直影響我們到現(xiàn)在。

      編程語言代表一段文本的主要方式有兩種:一是具有固定、顯式長度——「只包含 10 個字符,不能再多了」或者可以以空值結尾——「這里有一串字符,繼續(xù)努力,直到看到零字節(jié)為止!」

      C 代碼中有一個非常常見的錯誤,在將一個長字符串復制到一個較短的字符串中時,會出現(xiàn)結尾溢出,即你破壞了剛好在附近的其他數(shù)據(jù)。就像在白板的邊緣上亂涂亂畫一樣。

      除了僅使程序出現(xiàn)故障外,還可以利用此類錯誤來改變程序行為,方法是使用經(jīng)過精心設計的特定數(shù)據(jù)覆蓋某些內容。這些就是緩沖區(qū)溢出攻擊。你聽說過的幾乎所有安全漏洞都從 1988 年的 Morris Worm 開始。

      你必須在 C 語言中仔細編碼以避免此類錯誤,但是此類錯誤仍然容易發(fā)生。從路由器到「智能」燈泡,幾乎每種現(xiàn)代語言都避開了空字符結尾字符串,但是 C 和 C++仍然在語言界有支配地位。因此,近 50 年后的現(xiàn)在,我們還在「飽受折磨」。——Jamie Zawinski,Netscape 開發(fā)人員、Mozilla.org 創(chuàng)始人

      溫哥華股票交易所的交易錯誤(1982 年)

      不起眼的小數(shù)誤差造成極大損失

      1982 年初,溫哥華證券交易所推出了一種電子股票指數(shù),該指數(shù)最初定為 1000 點。在兩年內,它跌了一半,這在 1980 年代初期的牛市中似乎匪夷所思。一項調查顯示,使用 floor() 而非 round(),會造成對索引的計算錯誤。該命令意味著該值會被直接截止而不是四舍五 入到小數(shù)點后三位。(數(shù)字計算機必須具有有限的分辨率,因此需要四舍五入或直接截止。)因此,如果索引計算為 532.7528,則會被存儲為 532.752,而不是四舍五入為 532.753。在每天數(shù)千次計算的過程中,這種看似很小的差異——每次必須四舍五入時未進行四舍五入——導致了巨大損失。這個編程錯誤最終在 1983 年 11 月得到解決,當時周五的收盤指數(shù)在 500 點左右。問題解決后,該股票于周一重新開盤,指數(shù)就超過了 1,000 美元,損失的價值得以恢復。——Lav Varshney,伊利諾伊大學香檳分校助理教授

      THERAC-25(1985-1987 年)

      過度自信是致命的

      當真相浮出水面時,各大媒體的頭版頭條就對機器現(xiàn)代化發(fā)出了警告?!堵迳即墪r報》宣稱:「在這個復雜時代,軟件漏洞變得致命?!挂慌_用于治療癌癥的機器在幾家醫(yī)療機構中對六名患者進行了大劑量過量輻射,造成至少三人死亡。

      研究人員發(fā)現(xiàn),Therac-25 的代碼可能帶來致命的錯誤。該機器提供低功率和高功率治療,后者需要一個金屬設備來過濾光束。但是由于軟件中的錯誤,操作員可能會在沒有金屬設備的情況下意外觸發(fā)高功率模式。

      Therac-25 被設計為 Therac-20 的「改進」,設計時被認為是萬無一失的,不需要外部安全檢查。結果:幾起死亡歸咎于過度自信的工程師,他們沒有考慮到失誤的可能性。——Molly Olmstead

      互聯(lián)網(wǎng)中繼聊天(1988 年)

      最初的在線掛機

      莫里斯蠕蟲病毒(1988 年)

      驚覺互聯(lián)網(wǎng)已經(jīng)如此龐大

      羅伯特·莫里斯(Robert Morris)和互聯(lián)網(wǎng)本身都還年輕。當時 23 歲的康奈爾大學研究生 Morris 發(fā)布了「莫里斯蠕蟲病毒(Morris Worm)」,這是所謂的「互聯(lián)網(wǎng)上的首次重大攻擊」。近 60,000 臺連接到互聯(lián)網(wǎng)的計算機中有 10%遭到破壞,造成數(shù)百萬美元的損失,該事件導致《紐約時報》首次刊登了「互聯(lián)網(wǎng)」一詞。即使是精通技術的人也會吃驚于蠕蟲病毒的影響范圍之廣。Morris 說,他從未想過有如此大的損失,他成為根據(jù)《計算機欺詐和濫用法》被起訴的第一人。在被判處三年緩刑后,他成為著名的創(chuàng)業(yè)孵化器 Y Combinator 的共同創(chuàng)始人和麻省理工學院的計算機科學助理教授?!狤lena Botella

      只有一行代碼的病毒(日期:90 年代)

      單行代碼的功能以及計算機驚人的脆弱

      上圖展示的是一種名為「fork 炸彈」的單行病毒。它需要一些特定的條件才能被觸發(fā)(包括較舊、易受影響的 Unix 操作系統(tǒng)副本)。如果在 Bash 中鍵入此命令,它將一遍又一遍地復制自己,直到耗盡計算機中的所有可用內存并導致崩潰。

      它之所以有名不是因為它相對于其大小所表現(xiàn)的危險性,而是它使用冒號作為函數(shù)名稱。大多數(shù)函數(shù)(可重復使用的代碼行)都以描述性方式命名,例如「Print」或「isThisEmailValid」,但并沒有規(guī)定必須如此。在大多數(shù)計算語言中,不能使用冒號作為函數(shù)名稱,但在 Bash 中可以。

      2002 年,我在德國法蘭克福的 Angewandte Kunst 博物館第一次看到作為展品的這行代碼。博物館中沒有展示多少代碼?!狢hris Noessel

      HTML 超鏈接(1990 年)

      連接一切的工具

      JPEG(1992 年)

      改變了我們與攝影的關系

      Mosaic 瀏覽器(1993 年)

      第一個獲普遍使用且能夠顯示圖片的網(wǎng)頁瀏覽器

      跟蹤像素(1993 年)

      現(xiàn)代數(shù)據(jù)收集始于這些看不見的圖像。

      通過跟蹤像素下載,他們會了解了你的身份和位置,并觸發(fā)一個 cookie 下載到你的瀏覽器中。該 cookie 使廣告商可以在多個網(wǎng)站上跟蹤你。

      像素跟蹤的成功直接導致了 Facebook 的點「贊」按鈕出現(xiàn),該按鈕可在每個嵌入的網(wǎng)站上進行跟蹤。大量的數(shù)據(jù)收集實現(xiàn)了高度定向,也使 Facebook 廣告大獲成功,最終 Facebook 從媒體公司口袋里賺到數(shù)十億美元。

      Robots.txt(1994 年)

      一個對搜索及其他應用均具有重大意義的小工具

      維基(1994 年)

      為維基百科鋪平了道路

      第一個彈出廣告(90 年代中期)

      互聯(lián)網(wǎng)的「害群之馬」

      Google 的 PageRank 算法(1996 年)

      革新我們組織知識的方式

      在 PageRank 之前,搜索引擎根據(jù)我們的查詢詞是否與文檔中的詞匹配來查找信息。但是對于 PageRank,拉里·佩奇和謝爾蓋·布林提出了一個絕妙的主意:知識是社會性的,搜索也應該是。他們創(chuàng)建了一種算法,通過網(wǎng)絡浩瀚的超鏈接關系來確定一個頁面的等級。一個頁面的 PageRank 是由所有鏈向它的頁面的重要性經(jīng)過遞歸算法得到的,一個有較多鏈入的頁面會有較高的等級。正是兩位這種獨具慧眼的洞察力造就了 Google 的當今地位。——Clive Thompson

      失聯(lián)的火星氣候軌道飛行器(1999 年)

      因數(shù)學錯誤而失敗的任務

      1999 年 9 月 23 日,NASA 的科學家與耗資 1.25 億美元的「火星氣候軌道飛行器」失聯(lián)。后來的調查確定了原因:承包商使用英制單位為軌道飛行器編寫了程序,這在美國是標準的,但是 NASA 的軟件使用了公制。兩段代碼之間一次簡單的通訊錯誤使軌道飛行器飛向了未知的地方。

      人們很容易把這種度量錯誤看做偶然,但這表明當下這個互聯(lián)軟件的世界多么脆弱。所有互聯(lián)的技術(電話、航天器、機器人榨汁機等等)都依賴于定義與他人進行通信的方式的接口。極小的差異也會導致混亂。——Charles Duan

      比特幣(2008 年)

      激發(fā)人們對某種貨幣的信心的代碼

      按鈕(2009 年)

      它催化了監(jiān)視經(jīng)濟。

      Facebook 設計的點「贊」按鈕,使我們可以向世界展示我們的喜歡《辛普森一家》或炸薯條。但實際上,它利用了我們的認知偏見和設計的力量,誘使我們分享更多的信息。它們利用上面提到的跟蹤像素在互聯(lián)網(wǎng)上跟蹤我們,收集有關我們?yōu)g覽習慣的數(shù)據(jù)。然后,F(xiàn)acebook 利用該信息,并將其行為定位算法賣給廣告商。如果一家戶外用品公司想要做廣告,那么 Facebook 可以鎖定那些「」遠足信息、訪問露營網(wǎng)站以及有戶外朋友的人。當這些用戶給公司的廣告時,該信息就會反饋到定位算法中。因此,監(jiān)視和商業(yè)操縱會形成循環(huán)。都是因為一個小小的藍色豎起大拇指?!狝ri Ezra Waldman,紐約法學院教授

      波音 737 Max(2017 年)

      軟件錯誤加上公司貪婪,導致數(shù)百人喪生,大批飛機停飛

      ——————————? ?END? ?——————————

      “掃一掃來關注一下吧!”

      網(wǎng)絡

      版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。

      上一篇:百度云盤免費下載postman
      下一篇:RAID鋰電池充放電導致的MySQL性能抖動優(yōu)化
      相關文章
      亚洲福利视频一区二区| 亚洲综合一区二区精品久久| 亚洲视频小说图片| 亚洲国产精品无码久久久不卡 | 亚洲午夜久久久精品影院| 亚洲一区二区视频在线观看| 亚洲精品成a人在线观看| 亚洲?v无码国产在丝袜线观看| 日韩色视频一区二区三区亚洲| 亚洲人成网站在线在线观看| 亚洲色偷偷综合亚洲AV伊人蜜桃 | 中文字幕亚洲不卡在线亚瑟| 激情97综合亚洲色婷婷五| 久久久久亚洲?V成人无码| 中文字幕亚洲专区| 国产亚洲人成无码网在线观看| 亚洲国产精品特色大片观看完整版| 亚洲精品高清无码视频| 亚洲AV午夜成人影院老师机影院| 亚洲av无码一区二区三区乱子伦| 亚洲欧洲国产精品你懂的| 久久亚洲精品无码AV红樱桃| 亚洲视频中文字幕在线| 久久精品亚洲综合一品| 亚洲三区在线观看无套内射| 亚洲va乱码一区二区三区| 亚洲AV无码久久| 亚洲av日韩综合一区二区三区| 国产精品亚洲二区在线| 狠狠入ady亚洲精品| 亚洲精品成a人在线观看夫| 亚洲AV女人18毛片水真多| 337P日本欧洲亚洲大胆艺术图| 亚洲1区2区3区精华液| 亚洲国产成人久久综合一区77| 亚洲精品视频在线看| 亚洲精品国产精品乱码在线观看| 久久精品视频亚洲| 久久久久亚洲AV无码麻豆| 久久久久久亚洲Av无码精品专口| 亚洲欧洲日产v特级毛片|