神譯局是36氪旗下編譯團隊,關注科技、商業、職場、生活等領域,重點介紹國外的新技術、新觀點、新風向。
編者按:Marc Andreessen十年前說的“軟體蠶食世界”不僅完全正确,而且似乎不僅如此:軟體正在重塑世界。人類世界的運轉已經無法離開軟體。在浩如煙海的軟體代碼當中,哪些對我們起到了關鍵作用呢?Slate網站邀請了各方人士對那些改變了一切的代碼進行評選,這裡篩選出36個代碼片段。如果你有更好的選項,不妨在評論區留下你的意見。原文作者是Future Tense,标題是:The Lines of Code That Changed Everything。鑒于篇幅太長,我們将分三部分刊出,此為第一部分。

早在2009年,Facebook推出了改變世界的代碼段——點“贊”按鈕。“贊”是幾名程式員和設計師的創意,其中包括Leah Pearlman和Justin Rosenstein在内。他們推測,Facebook使用者常常因為太忙而沒時間到朋友的文章上發表評論,是以想如果有一個簡單的按鈕可以按一下的話,也許互動就會爆發:這可以釋放出大量令人興奮的肯定。就像Pearlman 後來所說那樣:“朋友們可以通過這種頻繁的多、容易得多的互動手段來互相驗證。”
這個點子奏效了,也許有點太好了。通過把“贊”做成一個零阻力的手勢,到了2012年,大家的點贊次數已經超過1萬億次,并且的确釋放出了大量的驗證。但是它的副作用也令人不安。我們釋出了一張照之後片,就會坐在那裡焦急地不斷重新整理頁面,等待點贊數的增加。我們想知道為什麼别人拿到的點贊數會比自己的多。于是我們開始給自己日常的線上行為放大功率:想變得更有趣、更刻薄、更迷人、更極端。
代碼塑造了我們的生活。就像風投家Marc Andreessen所寫那樣:“ 軟體蠶食整個世界”,盡管此刻說軟體正在消化世界可能會更準确些。
從文化角度上來講,代碼是比較下層的存在。我們可以感覺到它對我們日常現實的神秘影響,但是卻很少能看到它,而且對于非初學者來說有點高深莫測。(矽谷的人喜歡這樣這有助于他們自我神話為巫師。)我們給電影、遊戲和電視都立了十大排行榜,讓那些塑造了我們靈魂的作品揚名立萬。但是,即便代碼跟這些類型的作品一樣反映了時代思潮,我們卻未曾坐下來彙編過世界上最重要的代碼清單。
是以Slate雜志決定自己來做這件事。為了弄清楚有哪些讓世界為之傾斜的軟體,雜志編輯對計算機科學家、軟體開發人員、曆史學家、政策制定者以及新聞工作者進行了民意調查。這些人需要做出以下選擇:哪些代碼段影響巨大?哪些代碼改變了我們的生活?約有75位受訪者提出了各種各樣的想法,Slate從中選擇了36位。鑒于寫成的有影響的代碼如汗牛充棟,這裡的清單并不完整,也不可能完整。(我很喜歡的一個并沒有人選:快速排序算法!或者Ada Lovelace的伯努利算法也許也算一個。)就像所有的榜單一樣,它的目的是啟發,去幫助我們重新思考代碼是如何影響我們的生活,以及程式員所做的決策是如何影響未來的。
裡面的有些代碼你可能已經聽說過,比如HTML什麼的。有的代碼功能強大(比如用來對機率模組化的蒙特卡洛模拟),但一般人完全不知道是什麼。有的則包含了緻命錯誤,比方說波音737 Max的缺陷。還有一些令人毛骨悚然,比方說讓營銷人員知道你是否已打開電子郵件的像素跟蹤。
有一個趨勢是很明顯的:最重要的代碼往往會通過消除阻力來塑造新行為。當軟體讓做某件事情變得更容易時,這種事情我們就會做得更多。1988年編寫的代碼第一次建立起“Internet Relay Chat(IRC,多人線上交談系統)”,這使得早期的網民彼此可以實時進行文字聊天。現在,實時文字聊天已經無處不在,從令人應接不暇的Slack職場閑聊吹水,到Twitch直播的釣魚和反釣魚之戰,不一而足。
某些代碼什麼時候具備了劃時代意義未必總是很清晰。一開始它隻是個怪異的嘗試,一個實驗氣球。《Spacewar !》是第一個獲得病毒式流行的視訊遊戲。可是在1961年的時候,用價值12萬美元(相當于2019年的100萬美元)的機櫃式計算機萬遊戲被視為一種相當無聊的使用方式。但是它獨創了很多幫助計算機進入主流的概念:用圖示表示資料,讓使用者用手持控制器操作這些圖示。
代碼的影響可能會讓所有人感到驚訝,包括寫代碼的人在内。—Clive Thompson,《程式員: 新部落的形成和世界的重塑(Coders: The Making of a New Tribe and the Remaking of the World)》作者
年代:1725
第一段代碼
二進制程式設計早在計算機誕生之前就有了。大家認為Basile Bouchon 是第一個給紙片打孔并用來控制機器的人:1725年,他發明了一種織布機,這種機器可以根據送入的穿孔卡片的指令編織圖案。打孔的是“1”,沒有打孔是“0”。盡管此後東西發生了很大的變化,但代碼的基本建構塊并沒有改變。— Elena Botella ,Slate
年代:1948
既開辟了計算機代碼的使用,也引領了塑造冷戰軍備競賽的核毀滅計算機模型的使用
ENIAC(電子數字積分計算機)是第一台可程式設計的電子計算機。機器于1945年建成,每解決一個新問題都要靠重新連線許多部件來完成。當一項任務(比如加法)完成時,會用一個脈沖來觸發下一項任務。但是幾年後,克拉拉· 丹·馮·諾依曼和洛斯阿拉莫斯的科學家Nicholas Metropolis對ENIAC重新進行了接線,讓這台機器跑出來有史以來在任何計算機上執行的第一段現代代碼:從可尋址隻讀存儲器(ENIAC的函數表開關)執行數百條數字指令。他們模拟了新墨西哥州洛斯阿拉莫斯國家實驗室正在評估的幾種原子彈設計的爆炸情況,用蒙特卡洛技術來模拟一個複雜系統,幾乎是一步步地把可能結果的機率分布呈現出來。馮·諾依曼和Metropolis)向洛斯阿拉莫斯的核科學家發送了20000多張卡片,跟蹤彈頭引爆後模拟中子的變化情況。知道今天,這段代碼的子孫後代還在洛斯阿拉莫斯那裡發揮作用。—Thomas Haigh ,《ENIAC in Action: Making and Remaking the Modern Computer(ENIAC實戰:現代計算機的制造和改造)》合著者
年代:1952
令計算機處理文字成為可能
IF END OF DATA GO TO OPERATION 14 .
來自維基百科
當Grace Hopper決定通過以人類語言為基礎來簡化整個過程時,她正在對一台早期計算機進行程式設計。二戰期間,Hopper加入了美國海軍預備隊,她知道,像她在部隊的上司一樣,大家都在努力去了解二進制代碼。而如果程式設計語言是基于英語的話,那麼這項工作就不會那麼容易出錯,并且對于那些沒有數學博士學位的人來說也更加平易近人了。
一些人對這種想法嗤之以鼻,但1950年代初時,她設計出了一種編譯器,也就是一組可以将更容易了解的代碼轉化為由機器處理的較低級代碼的指令。通過這一工具,她和她的實驗室開發出了FLOW-MATIC,這是第一種将英語納入該過程的程式設計語言。——Molly Olmstead,Slate
年代:1961年
發行的第一款視訊遊戲
/ 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 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 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位,程式存儲用的是紙帶。這幫程式員用五個月的時間開發了一個遊戲,裡面是兩名玩家控制着飛船(針和楔形物)進行一對一的太空戰,同時還要避開位于螢幕中心的恒星的引力。
很快,星際飛行!就在早期的“黑客”社群中傳播開來。後來DEC把它預裝進了每一台PDP-1裡面,并預裝到核心記憶體裡面,準備在安裝時進行示範。這個程式對1960年代規模還很小的編碼社群産生了重大影響,并啟發了後面數代的視訊遊戲創作者。現在它還從模拟者那裡找到自己的存在,并且在計算機曆史博物館的最後一台可操作PDP-1上還在定期示範。2018年,遊戲的首席開發者Steve Russell在史密森尼學會上說:“它已有50多年的曆史。沒有未解決的使用者投訴。沒有崩潰報告。而且支援依舊提供。”——Arthur Daemmrich ,導演,勒梅森發明與創新研究中心
年代:1965
拜托,這是電子郵件。
WHENEVER A(1).E.FENCE.OR.A(2).E.FENCE.OR.A(3).E.FENCE PRFULL.(