研究老式計算技術的樂趣

【CSDN 編者按】對於哪些早已過時,淘汰掉的機器,為什麼還有人樂此不疲地去研究呢?為什麼有些技術被自己的「主人」放棄很久之後,仍然有人願意付出如此多的努力來保持或復興這些技術呢?除了懷舊之外,也許還有一個主要原因:逃離如今令人疲憊不堪的數字環境。

原文連結:https://github.com/readme/featured/vintage-computing

作者:KLINT FINLEY 譯者:彎月

2005 年,Morgan Aldridge 購買了一部 Apple Newton,這是在 iPhone 問世之前,蘋果推出的一部掌上電腦,於 1993 年首次發售並於 1998 年停產。對於 Morgan Aldridge 來說,這部古老的設備是能夠滿足他的需求的最佳工具。

他解釋道:「我使用過 Palm Pilots,那是當時最流行的數字設備,而且我知道這種設備存在同步問題。」此外,當時市場上的大多數其他手持設備都使用了廉價的 RAM 記憶體,如果斷電,記憶體的資料就會丟失,需要從桌面備份中恢復。

Aldridge 的研究讓他想到了 Apple Newton,這種設備使用的是固態儲存,可以無限期地保存資料,就像現代智慧手機一樣。根據使用者報告,有人將 Newton 設備扔在抽屜或壁櫥裡,多年以後打開電源時發現所有資料依然完好無損。此外,他發現 Newton 社區仍在積極地為該平臺開發驅動程序和軟體。因此,他買了一部 Newton Message Pad,直到進入智慧手機時代,他還在使用這部舊設備。如今,Aldridge 使用 iPad 作為主要的數字設備,但他仍在積極參與維護 NewtonScript 資源網站(http://newtonscript.org/)和 United Network of Newton Archives(http://www.unna.org/)。

多虧了開源,任何技術只要社區繼續支持就不會過時。你可以用電腦來更新 Newtons 和 Palm Pilots ,為早已停產的作業系統下載網路瀏覽器,或者通過 WiFi 將 Apple IIe 等老式計算機連接到現代網際網路。每年,任天堂和 Game Boy 等老式視訊遊戲機都會推出新遊戲卡。

人們在努力幫助舊軟體和線上平臺保持活力。Dreamwidth 團隊在早期的社群網路 LiveJournal 舊版源程式碼的基礎之上建立了分叉,並圍繞它構建了一個社區。BBS 系統軟體 WWIV (https://github.com/wwivbbs/wwiv)至今仍在維護,而且還有許多BBS的愛好者(https://www.telnetbbsguide.com/bbs/list/detail/)。另外,還有一些團隊正在努力恢復 AOL 和 Prodigy 等早期線上服務。你仍然可以使用 Gopher,這是一種超文字協議,雖然只在上個世紀 90 年代初短暫地出現過,但它的規模比 Web 更大。

開發人員在這類項目上花費了大量時間,而且通常都不指望獲得經濟回報。那麼,為什麼在這些技術被自己的「主人」放棄很久之後,仍然有人願意付出如此多的努力來保持或復興這些技術呢?除了懷舊之外,也許還有一個主要原因:逃離如今令人疲憊不堪的數字環境。此外,這些老式技術非常有趣,可以幫助開發人員更好地了解電腦科學及其發展歷史。我們可以從「舊方法」中吸取經驗和教訓。

與老式計算技術互動

與老式計算技術互動

老式計算技術承載了厚重的歷史感。一方面,軟體和數字內容是最容易保存的文化產出之一,因為複製和備份非常簡單。但隨著平臺停產,實際運行這些軟體將會成為一種挑戰。

長期以來,模擬器為我們提供了一種在新平臺上運行舊軟體的方法,當我們很難找到一些停產的硬體和作業系統時,就可以考慮使用模擬器。你可以使用 MAME 或 RetroArch 玩復古遊戲,使用 DOSBox 中最受歡迎的 Lotus Agenda 個人資訊管理器管理聯繫人,或者在瀏覽器中運行舊的 Palm 應用程序。這些項目背後的開源社區努力盡可能準確地模擬必要的硬體和軟體層。然而,網路軟體本質上更難流傳下來,因為它們不僅依賴本地軟體,而且還依賴伺服器端的軟體。例如 LiveJournal 的後端程式碼在 2014 年之前都是開源的,因此不僅這些程式碼可以流傳下來,而且還可以創建 Dreamwidth 這類的分支。Gopher 不是集中式服務,而是一種協議,很像 HTTP,因此創建現代 Gopher 客戶端和伺服器非常簡單。但歷史上流行過的一些很重要的大規模網路服務卻依賴於專有軟體,而運行這些軟體的伺服器早已關閉了。

早期的線上服務,比如 AOL/Quantumlink、Compuserve 和 Prodigy,鼎盛時期擁有數百萬使用者,不僅提供軟體、遊戲、藝術品,還有無數的線上討論。在智慧手機和無處不在的網際網路出現之前,這些撥號服務提供了許多如今我們習以為常的數字型驗,包括線上新聞、天氣預報、體育賽事、股市行情、多人遊戲、電子郵件、聊天,乃至線上百科全書。

雖然螢幕截圖幫忙記錄了這些服務的樣子,但為了更好地了解這些服務及其在計算發展歷史中的地位,我們最好能夠實際瀏覽一下服務的菜單結構並與各種功能互動。

記者兼計算機歷史學家 Benj Edwards 於 2014 年在《大西洋月刊》中發表的一篇關於恢復丟失的 Prodigy 內容的文章中寫道,「當某個大規模的線上服務消失時,人類文明中的一部分文化結構也會隨之消失。」

Prodigy 在計算發展史上具有特殊的意義。在那個其他線上服務都以文字為基礎且很難使用的年代,Prodigy 不僅提供了圖形界面,而且還開拓了數字廣告、電子商務以及線上旅遊預訂等。早在亞馬遜出現之前,Prodigy 就實現了線上購買衣服、家庭用品、電子產品,甚至雜貨。Edwards 在他的文章中解釋說,Prodigy 愛好者 Jim Carpenter 意識到這款服務沒有很好的文件記錄,甚至連截圖都很難獲得。幸運的是,Carpenter 發現 Prodigy 在本地快取檔案中儲存了大量內容,於是他從舊計算機中恢復許多圖像。最近,一張 Prodigy 演示光碟被上傳到 Internet Archive。雖然這段演示沒有連接到伺服器,但你可以通過瀏覽器探索一些功能。

2019 年,程式設計師 Phillip Heller 讀到了 Edwards 的文章,並決定參與 Prodigy 保護項目。他想在離線演示的基礎上更進一步,讓使用者實際使用 Prodigy。Heller 說:「Benj 和 Jim 認為重建 Prodigy 伺服器是一個遙遠而困難的目標,但我認為這是一個有趣的挑戰。」

結果,他真的創建了一個可與 Prodigy 兼容的後端:Prodigy Reloaded(https://github.com/ProdigyReloaded)。Heller 使用在 DOSBox 中運行的 Prodigy 客戶端的一箇舊副本連接到 Prodigy Reloaded 伺服器,並演示了新聞和天氣服務等功能。Heller 從截圖中挑選了一些當年的新聞標題和天氣預報來填充這些功能,但他希望將來能夠添加實時新聞、天氣預報和股票動態等功能。

研究老式計算技術的樂趣

研究老式計算技術的樂趣

Heller 說,保護這些老式計算技術只是他創建 Prodigy Reloaded 的原因之一。他表示:「研究老式計算技術很有趣,就像拼一個難度非常大的拼圖,我只有一些邊角塊,沒有中間的部分。我必須嘗試各種形狀,拼出圖片的其餘部分。」

樂趣和學習是最常見的嘗試此類項目的原因之一。老式計算技術愛好者 Cameron Kaiser 表示:「我認為,很多人熱衷於復古計算技術最主要的原因是,這些技術可以讓你領略到那個時代計算機所做的一切」。他維護著 Floodgap,這臺伺服器和網站託管著最有名的現代 Gopher 伺服器之一,以及 PowerPC 網路瀏覽器 TenFourFox 和許多其他項目。

Newton 模擬器 Einstein(https://github.com/pguyot/Einstein)的貢獻者 Matthias Melcher 表示:「如今的計算機如此複雜,我們窮盡一生也無法完全掌握。Newton 或 Game Boy 是最後一個我們可以完整地理解的系統,從 CPU 到機器程式碼。」

遊戲開發者 Rebecca Heineman 曾表示:「如果你真的想了解計算機,首先要從一臺經典舊機器開始。只有真正了解指令集、棧、記憶體管理、硬體及其所有的互動,你才能真正明白計算機的侷限性。」

事實上,許多電腦科學課程都使用 Game Boy 文件作為微處理器架構的教材,因為其架構小而簡單,可以讓學生們理解透徹。Game Boy 開源開發計劃 gbdev 的領導者 Antonio Vivace 表示:「你可以通過 Game Boy 學習如何使用硬體和真實的輸出,編寫彙程式設計式碼以及低級程式設計。當嘗試用 Game Boy 開發一些高級功能時,你將有機會學習一些很難掌握的電腦科學概念,讓一些本來不怎麼有趣的工作變得十分有趣。」

如今的高科技日益複雜,範圍已從計算架構擴展到軟體和網路。現代瀏覽器支持加密協議、JavaScript 渲染、各種多媒體格式等等。技術專家兼企業家 Jan Kammerath 認為:「你很難掌握瀏覽器中的一切。」而他也因此開始接觸現代 Gopher。

Gopher 誕生於 1991 年,能提供類似於 Web 文字頁面的體驗。Gopher 伺服器上的檔案可以連結在一起,或連結到其他伺服器的檔案上。Gopher 甚至還有一個搜尋引擎。這一切在當時都是十分前衛的。連結到別人的計算機是一件不可思議的事情,無論是 BBS 之類的撥號伺服器還是網際網路上的 FTP 伺服器。更令人興奮的是從一臺伺服器跳轉到另一臺伺服器,通過一個連結跳轉到其他連結,最後到達一個意想不到的地方。Gopher 讓這個世界看到了如今網上的許多新事物。至少在理論上,任何人都可以託管自己的 Gopher 伺服器,而且還可以託管任何內容,供其他人訪問。

Gopher 平臺曾一度大放異彩,但隨著 HTTP 和 Web 瀏覽器逐漸發展強大,就逐漸消失了。近年來,Gopher 突然成功地捲土重來。Kaiser 的 Gopher 搜尋引擎 Veronica-2 的活躍伺服器的數量在 2017 年~2018 年間幾乎翻了一番,從 133 臺增加到 260 臺。截至 2022 年 11 月 15 日,該引擎為 343 臺 Gopher 伺服器提供了索引服務,略低於 2020 年的峰值 395 臺,但依然很強勁。

Kaiser 指出,數字化生活的挑戰——從混亂的界面到被過量的資訊淹沒——是一些人轉向 Gopher 和其他網際網路舊平臺的原因。Kaiser 表示:「很多人都在尋找現代網路的替代品,但我認為 Gopher 伺服器數量激增包含很多原因,我認為這更像是一種網路效應。」也就是說,Gopher 的伺服器越多,使用 Gopher 的人就越多;而使用 Gopher 的人越多,自己搭建 Gopher 伺服器的人就越多。

Kaiser 的 Floodgap Gopher 伺服器提供每日新聞提要、天氣預報、到其他 Gopher 站點以及 Veronica-2 搜尋引擎的連結。我們可以通過 Floodgap 一窺早期網際網路的樣子。Kammerath 對此很感興趣,但他發現以現代標準來看,Gopherspace 的瀏覽體驗有點繁瑣。他說:「所以,我認為自己動手編寫一個 Gopher 客戶端是一個很有趣的小練習。」這就是 Gophie 的創建初衷,這是一個簡單的跨平臺 Gopher 客戶端。

Kammerath 認為:「構建一個 Gopher 客戶端,或者只是研究協議,對於人們了解網路工作原理的基礎知識很有幫助。Gopher 比 HTTP/3(HTTP 的當前版本)更加簡單,因此更容易理解不同層之間的互動方式。」

Gopher 不支持 cookie 和標頭等許多現代 Web 功能,嘗試 Gopher 還可以幫助開發人員理解為什麼要添加這些功能。Kammerath 說:「如果花一些時間用舊工具開發舊平臺,你會再次愛上現代工具。」

過去的教訓

過去的教訓

許多使用者發現,研究老式計算技術的好處不僅限於學習。Alridge 於 2005 年購買了一臺 Apple Newton,但並不是出於懷舊之情,也不是出於想要記錄部分科技歷史的衝動。他認為與市場上的其他數字設備相比,Apple Newton 更加適合他的需求。有時,舊技術能夠提供當代技術所無法提供的價值。

Kaiser 表示:「我運行 Gopher 伺服器不只是為了學習歷史,我喜歡 Gopher,每天都在使用。有些事情確實不能通過 Gopher 完成,比如登入我的銀行賬戶。但大多數時候,使用 Gopher 更方便,比如查看天氣預報和閱讀新聞。因為 Gopher非常簡單,我幾乎可以在任何設備上運行 Gopher 客戶端,甚至是舊的或低功率的計算機。」

老式技術愛好者經常討論,在這些舊設備的限制下工作,迫使他們更加認真地思考如何高效利用資源。Heller 表示:「Prodigy 開發人員可以用很少的資源完成大量工作。他們在不到 640 KB的記憶體上實現了兩臺虛擬機器。郵件程序只有大約 5 KB。就效率提升而言,這真的是讓我們大開眼界。」

相比之下,如今的硬體如此強大,所以人們也不會太在意軟體的性能最佳化。有人說:「硬體很便宜,程式設計師很貴」。Kaiser 表示:「我理解這種觀點。如今大多數人都不會手工編寫彙程式設計式碼,但別忘了這才是我們從硬體中榨取更多能量的最佳方式。這是一個有效的權衡。」他指出,越來越強大的計算機不僅僅會導致處理能力和記憶體的使用效率低下。

他說:「如今的發展趨勢是,我們添加的功能越來越多,因此導致軟體界面越來越混亂,越來越難以使用。我認為,這加重了使用者的認知。」Gopher 最大的吸引力就在於,基於文字的界面比當今許多 Web 應用程序都要簡單許多。

硬體性能並不是舊時代的應用程序相對簡單的唯一因素。舊設備可以顯示的界面種類也會受到限制。Melcher 表示:「Newton 和 Palm 應用程序只能使用小型黑白或灰度螢幕,因此設計師必須認真思考究竟顯示什麼。」

Game Boy 遊戲製造商 GB-Studio 的創始人 Chris Maltby 指出,最初的 Game Boy 是黑白遊戲,必須在小螢幕上顯示簡單的圖形界面和聲音,儘管如此遊戲本身依然很有趣。他認為:「在構建軟體時,我的部分工作就是處理這些非常複雜的東西,並通過簡單的方式與它們互動。Game Boy 程式設計讓我成為了更好的開發者。」

相關文章

最強 AI ChatGPT 真要取代程式設計師?

最強 AI ChatGPT 真要取代程式設計師?

【CSDN 編者按】ChatGPT 一出,「程式設計師要失業了」、「程式設計師要下崗了」之聲不絕於耳,引得程式設計師們不由得一陣驚慌,最強 ...

中國資料庫的諸神之戰

中國資料庫的諸神之戰

作者 | 唐小引 出品 | 《新程式設計師》編輯部 「現在的資料庫產品實在是太多了!」 前幾天,我和深耕資料庫/大資料近 30 年的盧東明老...

雲原生時代的DevOps平臺設計之道

雲原生時代的DevOps平臺設計之道

【CSDN 編者按】雲原生時代,開發和運維的分工愈加分明,運維人員通過建設並維護一套 IaaS 雲平臺,將計算資源進行池化。開發人員按需申請...