千萬別小看“臨時”開發(fā)的功能

現(xiàn)在 Windows 11 的「AI 改造工程」正在如火如荼地進行中,其中微軟聯(lián)合 OpenAI 將許多先進的 AI 功能引入 Windows 系統(tǒng)中譬如照片、截圖工具、畫圖等多個舊應用程序上,以及帶來最新的 Copilot 功能。
但是,在它進行現(xiàn)代化升級之際,也有網友驚訝地發(fā)現(xiàn),Windows 11 在 UI 維度的更新速度有些拖拉,甚至還在沿用 30 年前的老設計。
披露這一點是來自微軟的前程序員 Dave Plummer,他在 X 社交平臺上分享了自己曾在 1994 年開發(fā)的“臨時性”磁盤格式化 UI 當前依然存活在現(xiàn)代化的 Windows 11 中。與此同時,Windows 只能支持 32 GB 的 FAT32 分區(qū)也是他曾經“武斷性”的手筆。
作為過來人,這也讓他警醒諸多開發(fā)者,千萬不要小看任何一次的開發(fā),即使是一些“臨時”的解決方案。
從未更新過的 Windows 格式化磁盤 UI
回憶過往,那是在 1994 年一個下雨的星期四早晨,Dave Plummer 編寫了格式化對話框。
當時他所屬的團隊正忙于將用戶界面(UI)從以消費者為中心的 Windows 95(1995 年中期發(fā)布)移植到更穩(wěn)定但資源更密集的 Windows NT(1996 年中期發(fā)布的 NT 4.0 首次使用了 95 風格的用戶界面)。
Plummer 在 X 上寫道:“格式化磁盤是 Windows NT 與 Windows 95 不同之處之一,因此我們必須設計一些自定義 UI。”

Plummer 沒有具體說明這些不同之處,但現(xiàn)在來看,當時的 Windows 95 主要使用 FAT16 文件系統(tǒng)來處理所有文件,它被用于處理硬盤、軟盤等存儲介質上的文件和文件夾。
后來即使是早期版本的 Windows NT 也開始支持多種文件系統(tǒng),包括 FAT、NTFS 等。
當時,“我拿出一張紙,寫下了格式化磁盤的所有選項和選擇,如文件系統(tǒng)、標簽、簇大小、壓縮、加密等等”,Plummer 說道,“然后,我基于 Visual C++ 2.0,并使用資源編輯器將你(用戶)必須做出的所有選擇按大致順序排列成一個簡單的垂直堆棧。這樣做并不優(yōu)雅,但在優(yōu)雅的 UI(用戶界面)出現(xiàn)之前,這樣做還是可以的。”
這在當時是創(chuàng)建格式化磁盤 UI 的臨時解決方案。但當時 Dave Plummer 難以想象的是,30 年后的 Windows 11 還在用它。
“所以在引入’臨時‘解決方案時要小心”,Dave Plummer 表示。

“Windows 只支持 32GB 的 FAT32 分區(qū)”也是一個武斷性的方案
除了格式化對話框之外,Plummer 還透露稱,FAT32 格式化 32G 限制也是他在那天早上做的一個武斷的決定。
FAT 是用來組織計算機硬盤上的文件和文件夾的方法之一。FAT32 在文件系統(tǒng)中表示文件分配表的 32 位版本。相比于較早的 FAT16(16位版本)和更早的FAT12(12位版本,F(xiàn)AT32 最顯著的優(yōu)勢是它支持更大容量的硬盤和文件分區(qū),因為它使用了 32 位的文件分配表項,允許更多的文件和更大的分區(qū)。此外,F(xiàn)AT32 還允許更長的文件名和更好的簇大小管理,提供了更好的性能和存儲效率。
不過隨著技術的進步,F(xiàn)AT32 安全性差,最大只能支持 32GB 分區(qū),單個文件也只能支持最大 4GB,這使得它在大容量存儲和現(xiàn)代操作系統(tǒng)中的使用受到限制。
幾年前,Dave Plummer 也特別發(fā)了一個 YouTube 視頻回憶了這一功能,并表示當時自己想的是如何為 Windows 用戶帶來良好的潛在支持,也必須要決定 “集群松弛”的程度。
最終發(fā)現(xiàn),龐大的群集數(shù)量會帶來同樣龐大的容量,但也會造成巨大的空間占用。譬如:選擇 32KB 的群集大小,即使是最小的“Hello,World!”程序所需的幾個字節(jié),也會占用 32KB 甚至更多的磁盤空間 。
于是,他武斷地直接將 FAT 的格式化大小限制在 32GB。
“這個限制也是那天早上的一個任意選擇,但它作為一個永久性的副作用一直伴隨著我們”。在現(xiàn)代 Windows 版本中,我們仍在使用這一限制——通過命令行或其他工具格式化的 FAT32 硬盤最大容量在 2TB 到 16TB 之間,具體取決于扇區(qū)大小。
“這是我犯下的,一個不能被原諒的致命錯誤...... 歸根結底,這是一個簡單的缺乏遠見的問題,再加上臨時解決辦法變成永久性解決方案的老問題”,Dave Plummer 曾在播客中說道。
Plummer 還參與了 90 年代和 2000 年代初 MS-DOS 和 Windows 應用程序的許多零碎工作,包括任務管理器、Space Cadet 彈球游戲和隨 Windows XP 一起提供的第一版產品激活系統(tǒng)。后來,Plummer 于 2003 年離開微軟。
微軟為什么不更新此 UI?
也有人好奇,為什么微軟更新了 Windows 11 的諸多功能與 UI,為什么會忽略這么一個老舊的界面?其實想想,也不難理解。
其一,在沒有出錯的情況下,此 UI 的迭代優(yōu)先級可以一降再降。作為全球第一大桌面端操作系統(tǒng),Windows 系統(tǒng)的生態(tài)及其復雜性有目共睹。日常維護和更新 Windows 更是一項艱巨的任務,需要多個團隊和多年的工作。此前,微軟特別開設了一個獨立的 Windows 部門來負責 Windows 的功能開發(fā)與維護,直至近年來,才將其瓦解并入“云計算與人工智能平臺”部門,所以對于有些沒有出問題的功能以及 UI,一直沿用以前的設計也不足為奇。
其二,外媒 Ars Technica 認為,Windows NT 版本的“格式”對話框得以保留至今,也是因為微軟在 90 年代末和 21 世紀初發(fā)布的 Windows 2000 和 Windows XP 中開始使用 NT 代碼庫。盡管微軟在不同版本的 Windows 中進行了許多更新和改進,但 Windows NT 作為內核的基礎設計依然保持了穩(wěn)定。因此,即使是 Windows 11,內核和其他關鍵系統(tǒng)文件仍然會攜帶“Windows NT”的標簽。
“代碼里的臨時方案,最終都成了永久方案”
Plummer 的一個追憶引發(fā)不少網友的討論,也讓許多有過“把臨時方法作為永久性方案”的程序員感同身受。
來自 HN 上的 jaydeegee 表示,“大約 14 年前,在我從事新工作的第一周,我拼湊了一些代碼來完成了查詢我們的票務系統(tǒng) (BMC Remedy),作為一種準隊列監(jiān)視器。直至今日,它有一些外觀迭代,但仍然運行相同的后端代碼。”
也有不少用戶認可道:
- “我想說,沒有臨時和永久的解決方案,但有好的和壞的解決方案。一個好的解決方案,即使實施得很快,也會堅持下去,因為它(足夠)很好。一個糟糕的解決方案也可能會持續(xù)存在,如果它是一段時間內唯一可用/可行的解決方案,那么其他所有解決方案都必須向后兼容。”
- “拋開任意不必要的限制不談,我對保留舊代碼很滿意。它經過了時間的考驗,過往由于較舊的硬件限制,現(xiàn)在依然可以非常高效地運行,并且符合邏輯 。與今天的軟件不同,今天的軟件通常都是臃腫的造輪子,幾乎完全出于以下兩個原因:一是為了營銷“改變”,二是為了跟蹤你所做的一切,以便他們可以從中獲利。”
作為程序員,也有不少人和 Plummer 一樣,呼吁應該謹防“足夠好”的臨時解決方案,“我們正在使用一個由實習生編寫的核心日志記錄組件,其中包含 POC(概念驗證)一詞。它的數(shù)據(jù)格式是實習生創(chuàng)建的,但當任何人真正注意到它編寫了如此多的數(shù)據(jù)時,修復它的預算和工作量都超過了它的問題。”
最后,在開發(fā)過程中,你是否有過“代碼里的臨時方案,最終都成了永久方案”的經歷?歡迎留言分享。