newsence
重構 VisiCalc:從零開始打造極簡試算表複製版

重構 VisiCalc:從零開始打造極簡試算表複製版

Hacker News·19 天前

這篇文章探討了 VisiCalc 的歷史,並提供了一份逐步指南,教你如何用不到 500 行 C 語言程式碼重建一個具備功能的試算表複製版,涵蓋了儲存格邏輯、公式求值以及終端使用者介面。

背景

這篇文章探討了試算表軟體鼻祖 VisiCalc 的歷史地位,並嘗試以現代程式碼重新建構一個極簡版的 VisiCalc 複製品。VisiCalc 於 1979 年誕生,僅憑數千行 6502 組合語言便在 16K 記憶體的 Apple II 上運行,成功將個人電腦轉化為嚴肅的商業工具,其開創的單元格、公式與反應式計算邏輯,至今仍是數位生產力的核心。

社群觀點

在 Hacker News 的討論中,社群成員對這項重建計畫展現了高度興趣,並針對技術細節與現代應用展開深入對話。部分開發者對於原文中採用的記憶體分配方式提出質疑,指出在 Apple II 時代,像原文那樣預先靜態分配 171 KB 記憶體的做法根本無法運行。對此,有資深評論者引述了 VisiCalc 共同創辦人 Bob Frankston 的回憶,揭露當年為了在極限環境下運作,開發團隊必須將記憶體切分為固定大小的區塊以避免碎片化,並採用極其精巧的變動長度類型指示器與雙向分配策略,當記憶體耗盡時甚至必須進行原地重組。

關於試算表的計算引擎,社群內出現了技術路線的辯論。原文作者認為維護依賴圖對小型試算表來說過於繁瑣,因此採用了多次迭代直到數值穩定的簡單做法;然而,有評論者強烈主張,依賴圖並非大材小用,而是現代試算表不可或缺的核心,即便在非玩具級的應用中,為了確保計算效率與正確性,這項機制是絕對必要的。此外,也有人討論到現代開發工具的選擇,認為雖然 C 語言與 ncurses 是經典組合,但若以 Rust 搭配 Ratatui 庫來開發,或許能更安全且快速地打造出跨平台且功能完備的文字介面試算表。

另一部分的討論則聚焦於「終端機試算表」的實用性。許多習慣命令列環境的用戶表達了對輕量化工具的渴望,特別是希望能支援 Vi 快捷鍵的編輯器。網友們分享了多款現存的 TUI 試算表工具,並討論到若能開發出一款支援 ODF 或 XLSX 格式、且不依賴複雜組件的終端機工具,將會是許多開發者的夢幻逸品。這顯示出即便在圖形介面高度發達的今天,簡約、高效且能整合進終端機工作流的試算表邏輯,依然具有強大的生命力。

延伸閱讀

在討論中,網友推薦了多款值得關注的終端機試算表工具與資源。首先是具有 Vi 快捷鍵功能的 Levite 與歷史悠久的 SC 及其現代加強版 sc-im,後者在 Fedora 等 Linux 發行版中皆有收錄。對於 Emacs 用戶,則推薦結合 org-mode 與 evil-mode 來達成類似效果。此外,也有開發者分享了在 Linux 環境下透過二進制轉換運行經典 Lotus 1-2-3 的可能性。針對 VisiCalc 的底層實作細節,Bob Frankston 的訪談紀錄與相關技術回顧文件,則是深入了解早期軟體工程極限挑戰的最佳讀物。

https://zserge.com/posts/visicalc/