国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
人類歷史上最重要的36個代碼片段(一)

18小時前

阿波羅11號、JPEG、第一個彈出式廣告,以及另外33個改變了世界的代碼段。

神譯局是36氪旗下編譯團隊,關注科技、商業(yè)、職場、生活等領域,重點介紹國外的新技術、新觀點、新風向。

編者按:Marc Andreessen十年前說的“軟件蠶食世界”不僅完全正確,而且似乎不僅如此:軟件正在重塑世界。人類世界的運轉已經(jīng)無法離開軟件。在浩如煙海的軟件代碼當中,哪些對我們起到了關鍵作用呢?Slate網(wǎng)站邀請了各方人士對那些改變了一切的代碼進行評選,這里篩選出36個代碼片段。如果你有更好的選項,不妨在評論區(qū)留下你的意見。原文作者是Future Tense,標題是:The Lines of Code That Changed Everything。鑒于篇幅太長,我們將分三部分刊出,此為第一部分。

早在2009年,F(xiàn)acebook推出了改變世界的代碼段——點“贊”按鈕?!百潯笔菐酌绦騿T和設計師的創(chuàng)意,其中包括Leah Pearlman和Justin Rosenstein在內(nèi)。他們推測,F(xiàn)acebook用戶常常因為太忙而沒時間到朋友的帖子上發(fā)表評論,所以想如果有一個簡單的按鈕可以按一下的話,也許互動就會爆發(fā):這可以釋放出大量令人興奮的肯定。就像Pearlman 后來所說那樣:“朋友們可以通過這種頻繁的多、容易得多的互動手段來相互驗證?!?/p>

這個點子奏效了,也許有點太好了。通過把“贊”做成一個零阻力的手勢,到了2012年,大家的點贊次數(shù)已經(jīng)超過1萬億次,并且的確釋放出了大量的驗證。但是它的副作用也令人不安。我們發(fā)布了一張照之后片,就會坐在那里焦急地不斷刷新頁面,等待點贊數(shù)的增加。我們想知道為什么別人拿到的點贊數(shù)會比自己的多。于是我們開始給自己日常的在線行為放大功率:想變得更有趣、更刻薄、更迷人、更極端。

代碼塑造了我們的生活。就像風投家Marc Andreessen所寫那樣:“ 軟件蠶食整個世界”,盡管此刻說軟件正在消化世界可能會更準確些。

從文化角度上來講,代碼是比較下層的存在。我們可以感覺到它對我們?nèi)粘,F(xiàn)實的神秘影響,但是卻很少能看到它,而且對于非初學者來說有點高深莫測。(硅谷的人喜歡這樣這有助于他們自我神話為巫師。)我們給電影、游戲和電視都立了十大排行榜,讓那些塑造了我們靈魂的作品揚名立萬。但是,即便代碼跟這些類型的作品一樣反映了時代思潮,我們卻未曾坐下來匯編過世界上最重要的代碼清單。

所以Slate雜志決定自己來做這件事。為了弄清楚有哪些讓世界為之傾斜的軟件,雜志編輯對計算機科學家、軟件開發(fā)人員、歷史學家、政策制定者以及新聞工作者進行了民意調(diào)查。這些人需要做出以下選擇:哪些代碼段影響巨大?哪些代碼改變了我們的生活?約有75位受訪者提出了各種各樣的想法,Slate從中選擇了36位。鑒于寫成的有影響的代碼如汗牛充棟,這里的清單并不完整,也不可能完整。(我很喜歡的一個并沒有人選:快速排序算法!或者Ada Lovelace的伯努利算法也許也算一個。)就像所有的榜單一樣,它的目的是啟發(fā),去幫助我們重新思考代碼是如何影響我們的生活,以及程序員所做的決策是如何影響未來的。

里面的有些代碼你可能已經(jīng)聽說過,比如HTML什么的。有的代碼功能強大(比如用來對概率建模的蒙特卡洛模擬),但一般人完全不知道是什么。有的則包含了致命錯誤,比方說波音737 Max的缺陷。還有一些令人毛骨悚然,比方說讓營銷人員知道你是否已打開電子郵件的像素跟蹤。

有一個趨勢是很明顯的:最重要的代碼往往會通過消除阻力來塑造新行為。當軟件讓做某件事情變得更容易時,這種事情我們就會做得更多。1988年編寫的代碼第一次建立起“Internet Relay Chat(IRC,多人在線交談系統(tǒng))”,這使得早期的網(wǎng)民彼此可以實時進行文字聊天?,F(xiàn)在,實時文字聊天已經(jīng)無處不在,從令人應接不暇的Slack職場閑聊吹水,到Twitch直播的釣魚和反釣魚之戰(zhàn),不一而足。

某些代碼什么時候具備了劃時代意義未必總是很清晰。一開始它只是個怪異的嘗試,一個實驗氣球?!禨pacewar !》是第一個獲得病毒式流行的視頻游戲??墒窃?961年的時候,用價值12萬美元(相當于2019年的100萬美元)的機柜式計算機萬游戲被視為一種相當無聊的使用方式。但是它獨創(chuàng)了很多幫助計算機進入主流的概念:用圖標表示數(shù)據(jù),讓用戶用手持控制器操作這些圖標。

代碼的影響可能會讓所有人感到驚訝,包括寫代碼的人在內(nèi)?!狢live Thompson,《程序員: 新部落的形成和世界的重塑(Coders: The Making of a New Tribe and the Remaking of the World)》作者

1、二進制穿孔卡片

年代:1725

第一段代碼

二進制編程早在計算機誕生之前就有了。大家認為Basile Bouchon 是第一個給紙片打孔并用來控制機器的人:1725年,他發(fā)明了一種織布機,這種機器可以根據(jù)送入的穿孔卡片的指令編織圖案。打孔的是“1”,沒有打孔是“0”。盡管此后東西發(fā)生了很大的變化,但代碼的基本構建塊并沒有改變。— Elena Botella ,Slate

2、執(zhí)行的第一段現(xiàn)代代碼

年代:1948

既開辟了計算機代碼的使用,也引領了塑造冷戰(zhàn)軍備競賽的核毀滅計算機模型的使用

ENIAC(電子數(shù)字積分計算機)是第一臺可編程的電子計算機。機器于1945年建成,每解決一個新問題都要靠重新連線許多部件來完成。當一項任務(比如加法)完成時,會用一個脈沖來觸發(fā)下一項任務。但是幾年后,克拉拉· 丹·馮·諾依曼和洛斯阿拉莫斯的科學家Nicholas Metropolis對ENIAC重新進行了接線,讓這臺機器跑出來有史以來在任何計算機上執(zhí)行的第一段現(xiàn)代代碼:從可尋址只讀存儲器(ENIAC的函數(shù)表開關)執(zhí)行數(shù)百條數(shù)字指令。他們模擬了新墨西哥州洛斯阿拉莫斯國家實驗室正在評估的幾種原子彈設計的爆炸情況,用蒙特卡洛技術來模擬一個復雜系統(tǒng),幾乎是一步步地把可能結果的概率分布呈現(xiàn)出來。馮·諾依曼和Metropolis)向洛斯阿拉莫斯的核科學家發(fā)送了20000多張卡片,跟蹤彈頭引爆后模擬中子的變化情況。知道今天,這段代碼的子孫后代還在洛斯阿拉莫斯那里發(fā)揮作用?!猅homas Haigh ,《ENIAC in Action: Making and Remaking the Modern Computer(ENIAC實戰(zhàn):現(xiàn)代計算機的制造和改造)》合著者

3、Grace Hopper的編譯器

年代:1952

令計算機處理文字成為可能

IF END OF DATA GO TO OPERATION 14 .

來自維基百科

當Grace Hopper決定通過以人類語言為基礎來簡化整個過程時,她正在對一臺早期計算機進行編程。二戰(zhàn)期間,Hopper加入了美國海軍預備隊,她知道,像她在部隊的上司一樣,大家都在努力去理解二進制代碼。而如果編程語言是基于英語的話,那么這項工作就不會那么容易出錯,并且對于那些沒有數(shù)學博士學位的人來說也更加平易近人了。

一些人對這種想法嗤之以鼻,但1950年代初時,她設計出了一種編譯器,也就是一組可以將更容易理解的代碼轉化為由機器處理的較低級代碼的指令。通過這一工具,她和她的實驗室開發(fā)出了FLOW-MATIC,這是第一種將英語納入該過程的編程語言?!狹olly Olmstead,Slate

4、星際飛行(Spacewar)!

年代:1961年

發(fā)行的第一款視頻游戲

/ this routine handles a non-colliding ship invisibly
/ in hyperspace

hp1,  dap hp2
 count i ma1, hp2
 law hp3    / next step
 dac i ml1
 law 7
 dac i mb1
 random
 scr 9s
 sir 9s
 xct hr1
 add i mx1
 dac i mx1
 swap
 add i my1
 dac i my1
 random
 scr 9s
 sir 9s
 xct hr2
 dac i mdy
 dio i mdx
 setup .hpt,3
 lac ran
 dac i mth
hp4,  lac i mth
 sma
 sub (311040
 spa
 add (311040
 dac i mth
 count .hpt,hp4
 xct hd2
 dac i ma1
hp2,  jmp .

Steve Russell,收集自Bitsavers.org

1961年末,一群年輕的MIT雇員、學生和同事(其中很多是Tech Model Railroad俱樂部的成員)拿到了最近別人捐贈的DEC PDP-1計算機的深夜使用權。屬于非軍事計算前沿技術的PDP-1售價為12萬美元(按今天計算將超過100萬美元),字長達18位,程序存儲用的是紙帶。這幫程序員用五個月的時間開發(fā)了一個游戲,里面是兩名玩家控制著飛船(針和楔形物)進行一對一的太空戰(zhàn),同時還要避開位于屏幕中心的恒星的引力。

很快,星際飛行!就在早期的“黑客”社區(qū)中傳播開來。后來DEC把它預裝進了每一臺PDP-1里面,并預裝到核心內(nèi)存里面,準備在安裝時進行演示。這個程序?qū)?960年代規(guī)模還很小的編碼社區(qū)產(chǎn)生了重大影響,并啟發(fā)了后面數(shù)代的視頻游戲創(chuàng)作者?,F(xiàn)在它還從模擬者那里找到自己的存在,并且在計算機歷史博物館的最后一臺可操作PDP-1上還在定期演示。2018年,游戲的首席開發(fā)者Steve Russell在史密森尼學會上說:“它已有50多年的歷史。沒有未解決的用戶投訴。沒有崩潰報告。而且支持依舊提供?!薄狝rthur Daemmrich ,導演,勒梅森發(fā)明與創(chuàng)新研究中心

5、電子郵件的起源

年代:1965

拜托,這是電子郵件。

WHENEVER A(1).E.FENCE.OR.A(2).E.FENCE.OR.A(3).E.FENCE
PRFULL.($'R'1INSTRUCTIONS:$)
PRFULL.($ '4MAIL NAME1 NAME2 PROB1 PROG1 PROB2 PROG2 ...$)
PRFULL.($ WHERE '=NAME1 NAME2'= IS THE FILE TO BE MAILED,$)
PRFULL.($ AND '=PROBN PROGN'= ARE DIRECTORIES TO WHICH '8$,
1  $IT IS TO BE SENT.'B$)
CHNCOM.(0)
END OF CONDITIONAL

CTSS 程序員MAIL手冊頁

1961年,麻省理工學院的黑客開發(fā)了一個系統(tǒng),這個可以讓多個用戶登錄到同一臺計算機上,然后他們開始互相給對方簡短留言。1965年,一群編碼人員決定開發(fā)一個正式的命令系統(tǒng)來發(fā)送、接收和顯示這些數(shù)字化的信函。對于“MAIL”這個命令一開始上級是拒絕的,覺得有點輕率,但它的使用卻大行其道,以至于到1971年,麻省理工學院甚至出現(xiàn)了第一條垃圾郵件:一條反越戰(zhàn)的信息?!狢live Thompson

6、警察巡邏算法

年代:1968

現(xiàn)代預測警務和種族定性計算機化的開始

1965年,當林登·約翰遜總統(tǒng)組建總統(tǒng)執(zhí)法與司法委員會時,他下令該委員會研究如何利用計算機來幫助解決美國的的“犯罪問題”,他和該委員會對這個問題的定性是“城市問題”和“黑人問題”。這個問題的答案是“警察巡邏算法(Police Beat Algorithm,PBA)”,該算法旨在解決規(guī)劃問題,比方說在城市的特定區(qū)域需要安排多少名警察巡邏之類的問題。通過將PBA與犯罪數(shù)據(jù)庫相結合,警方可以在犯罪實施之前根據(jù)種族人口統(tǒng)計數(shù)據(jù)自動生成嫌犯檔案,并相應部署資源(警察,武器和其他裝備)。今天的預測警務對黑人和棕色人種監(jiān)視并定罪的情況相對不成比例。就像PBA的故事提醒我們那樣,這種情況并不是不可預見的技術故障的結果:相反,這是這項技術50年設計的完美體現(xiàn)。——Charlton McIlwain,《黑人軟件(Black Software: The Internet & Racial Justice, From the Afronet to Black Lives Matter)》作者

7、阿波羅11號登月艙的緊急救助代碼

年代:1969

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

POODOO    INHINT
   CA  Q
   TS  ALMCADR

   TC  BANKCALL
   CADR  VAC5STOR  # STORE ERASABLES FOR DEBUGGING PURPOSES.

   INDEX  ALMCADR
   CAF  0
ABORT2    TC  BORTENT

OCT77770  OCT  77770    # DONT MOVE
   CA  V37FLBIT  # IS AVERAGE G ON
   MASK  FLAGWRD7
   CCS  A
   TC  WHIMPER -1  # YES.  DONT DO POODOO.  DO BAILOUT.

   TC  DOWNFLAG
   ADRES  STATEFLG

   TC  DOWNFLAG
   ADRES  REINTFLG

   TC  DOWNFLAG
   ADRES  NODOFLAG

   TC  BANKCALL
   CADR  MR.KLEAN
   TC  WHIMPER

數(shù)字化:Virtual AGC與MIT Museum

阿波羅制導系統(tǒng)計算機(AGC)是一個奇跡:就像計算阿波羅重返地球軌跡的Poppy Northcutt告訴我那樣,AGC的計算能力還比不上今天記錄個人信息的賀卡。但是,它卻做到了該做的。

有限的計算能力和存儲空間意味著必須細致地管理好任務,因此AGC始終聚焦在最重要的工作上。如果它沒有足夠的空間來執(zhí)行任務,那就不可能完成任務。AGC軟件團隊知道,總有些事情是自己計劃不到的。因此,他們開發(fā)了BAILOUT。當計算機有空間用完(或“溢出”)的風險時,AGC會觸發(fā)BAILOUT把不太重要的數(shù)據(jù)和操作調(diào)走,從而讓重要的數(shù)據(jù)和操作保持正常運行。

當Eagle著陸器準備降落到月球表面時,大概在30000英尺高空處,AGC 發(fā)出了“1202”的警報,尼爾·阿姆斯特朗和休斯敦的飛控都沒有馬上意識到這一點。但是在不到30秒的時間內(nèi),指揮中心的計算機專家表示,AGC軟件正在按預期的方式運行:放棄了低優(yōu)先級的工作并重新開始重要的工作(這個過程很快,以至于大家都無法察覺)。阿姆斯特朗和Buzz Aldrin可以繼續(xù)從AGC那里得到他們絕對需要的東西,好繼續(xù)安全著陸。

在阿姆斯特朗說出“鷹已降落”之前,溢出警報還會再響三聲,但永遠是因為事情按預期進行才會響?!熬戎币辉~通常表示任務以失敗結束,但在這里卻讓人類的最高成就成為現(xiàn)實?!?史密森尼國家航空航天博物館主任Ellen Stofan

8、Hello, World!程序

日期:1972年或更早

把世代引入代碼的一句話

main(){ printf (“ hello,world \ n”); }

當你坐下來學習一門新的編程語言時,教程要你做的第一件事就是讓計算機顯示出 “Hello,world!”這句話。也許早期最著名的例子來自貝爾實驗室備忘錄,《C語言編程教程》。 這本書寫于1974年,盡管有人發(fā)現(xiàn)在1972年的B語言手冊里面也發(fā)現(xiàn)了它,而且可能時間比這還要早。

Hello, World!是一個很美麗的教材。這是一項很小的、可完成的任務,可以讓人早早獲得成就感。這已成為了標準,有助于說明不同編程語言之間的差異。對于高級程序員來說,這也是一個快速簡便的方法,可確保在安裝新環(huán)境后一切正常。(有時候程序員會用“實現(xiàn)'hello world'的時間'作為比較語言和環(huán)境的速度測試。)也許最重要的是,“Hello,world!”天真、友善,而且有助于說明新程序員的代碼可產(chǎn)生的影響范圍。那就是全世界?!狪BM AI設計主管Chris Noessel 。

9、空終止串——Null

年代:1972

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

char yellow[26] = {'y', 'e', 'l', 'l', 'o', 'w', '\0'};

GNU C參考手冊

1972年,丹尼斯·里奇(Dennis Ritchie)做出了一個重大決定:自己的新語言要用一種所謂的“空終止串”來表示文本。這個概念其實早就出現(xiàn)了,但是他在自己的新語言,C語言里面把它奉若神明,而這一決定的遺產(chǎn)從此就一直纏住了我們。

編程語言表示一段文本的主要有兩種方式:它可以是內(nèi)在的固定長度的——“我就包含10個字符,就這么多?!币部梢杂眠^空值(null)結尾——這里有一堆的字符,你盡管看下下去,直到最后到達零字節(jié)為止,祝你好運!”

C代碼中一個極其常見的錯誤是把一個長字符串復制到一個較短的字符串,造成結尾處溢出,這意味著你破壞了剛好在附近的其他數(shù)據(jù)。就像在白板邊上寫東西一樣。

除了只是導致程序發(fā)生故障外,此類錯誤還可以用來說服程序用經(jīng)過精心設計的特定數(shù)據(jù)去覆蓋某些內(nèi)容,從而改變程序的行為。這就是緩沖區(qū)溢出攻擊。但凡你聽說過的安全漏洞幾乎都是從這里開始的,其始作俑者就是1988年的莫里斯蠕蟲病毒(Morris Worm)。

仔細寫代碼可以避免在C語言中出現(xiàn)此類錯誤,但是這種語言的特點導致此類錯誤產(chǎn)生容易檢測難。幾乎所有的現(xiàn)代語言都避開了以null終止的字符串,但是從路由器到“智能”燈泡,C和C ++仍然在世界的基礎處運行著。因此,在將近50年后,我們?nèi)愿@類bug在玩打地鼠的游戲。——Jamie Zawinski,Netscape開發(fā)者,Mozilla.org創(chuàng)始人,DNA Lounge老板

10、Telenet遠程網(wǎng)

年代:1975

第一個基于數(shù)據(jù)包交換的公共數(shù)據(jù)網(wǎng)絡,是當今互聯(lián)網(wǎng)的骨干

互聯(lián)網(wǎng)的前身是ARPANET,這是一個供高級研究計劃局(現(xiàn)為DARPA)研究人員機器之間交換數(shù)據(jù)的計算機網(wǎng)絡。隨著ARPANET在政府內(nèi)部的擴張,網(wǎng)絡搭建者意識到這項技術可能對普通大眾也很有價值,以及參與到其中可以催生多少的商機。1975年8月,ARPANET的商業(yè)版本Telenet 在七個城市上線,該網(wǎng)絡可讓最早期的客戶(主要是計算機或數(shù)據(jù)庫公司)用電話撥號方式上傳下載(如電子郵件原型消息)或遠程訪問存儲在中央計算機上的代碼。雖然ARPANET通常被認為是現(xiàn)代Internet的鼻祖,但實際上為公眾消費而設計的Telenet才是Web的前身。實際上,1980年代Telenet的最大客戶之一就是Quantum Link,后者后來成為AOL?!狫ane C. Hu,F(xiàn)uture Tense contributor

11、溫哥華證券交易所的舍入誤差

年代:1982

一個小小的小數(shù)點之別付出的巨大代價

- return floor(value)
+ return round(value)

溫哥華證券交易所使用的代碼大概是這樣的。

1982年初,溫哥華證券交易所推出了一種一開始錨定基點為1000點的電子股票指數(shù)。但是推出后在兩年的時間之內(nèi),它就跌到了原始價值的一半,這種走勢在牛氣沖天的1980年代初期是一個令人困惑的反例。一項調(diào)查顯示,對指數(shù)的計算在一個地方出了問題,那就是用floor()而不是round()。用floor意味著指數(shù)被舍入而不是取整到小數(shù)點后三位。(數(shù)字計算機必須要有有限的精度,因此需要四舍五入或截斷。)因此,如果指數(shù)計算值為532.7528的話,計算機保存下來的值是532.752,而不是四舍五入為532.753。這一點點的差異本來關系不大,但由于每天都要對指數(shù)進行數(shù)千次計算,這種看似很小的差異(基本上每次都進行不進位舍入)導致指數(shù)值出現(xiàn)急劇下降。這個編程錯誤最后在1983年11月被修正,當時的某個周五收盤時指數(shù)已經(jīng)降到500左右了。到了下周一指數(shù)以超過1000點開盤,損失掉的價值被恢復回來了?!晾Z伊大學香檳分校助理教授Lav Varshney

12、Therac-25代碼

年代:1985–1987年

事實證明,過分自信會殺死人

當真相顯現(xiàn)時,頭條新聞就現(xiàn)代化發(fā)出了警告。《洛杉磯時報》宣稱:“復雜時代的軟件故障會死人?!?一種本來用于治療癌癥的機器由于在幾家醫(yī)療機構對六名患者進行了過大劑量的放射,造成了至少三人死亡。

研究人員經(jīng)過調(diào)查發(fā)現(xiàn),Therac-25的程序允許致命錯誤的出現(xiàn)。本來這臺機器提供的是低功率和高功率兩種類型的治療,而后者需要金屬設備來過濾光束。但是由于軟件存在的錯誤,操作員可以在沒有合適的金屬設備就緒的情況下意外觸發(fā)高功率模式。

在設計上,Therac-25是Therac-20的“改進”版,而且這種軟件被認為已經(jīng)萬無一失,因此不需要外部的安全檢查。結果:重大死亡的責任要歸咎于過度自信的工程師,因為他們沒有對錯誤發(fā)生的可能性做出解釋?!狹olly Olmstead

譯者:boxi。

本文來自翻譯, 如若轉載請注明出處。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
她是世界第一臺個人計算機的創(chuàng)造者,84 歲生日快樂!
簡述計算機網(wǎng)絡的四個發(fā)展史
阿波羅計劃軟件代碼公開,可免費下載
2月14日:1946年世界第一臺電子計算機ENIAC誕生
今天情人節(jié) 也是電腦問世76周年!網(wǎng)友:多陪陪你的電腦
第一代計算機
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服