newsence
來源篩選

Amsterdam Compiler Kit

Hacker News

The Amsterdam Compiler Kit (ACK) is a set of tools for building compilers and related software. It supports multiple programming languages and targets various architectures.

newsence

阿姆斯特丹編譯器套件

Hacker News
14 天前

AI 生成摘要

阿姆斯特丹編譯器套件 (ACK) 是一套用於建構編譯器及相關軟體的工具。它支援多種程式語言,並可針對不同架構進行編譯。

背景

Amsterdam Compiler Kit(ACK)是由阿姆斯特丹自由大學(Vrije Universiteit)教授 Andrew Tanenbaum 等人於 1980 年代開發的編譯器工具集。它以作為 Minix 1 與 2 作業系統的預設工具鏈而聞名,支援 C89、Pascal、Modula 2 與 Basic 等多種前端語言,並能針對多種早期的硬體架構進行編譯。

社群觀點

在 Hacker News 的討論中,ACK 被視為編譯器歷史上的重要里程碑。許多資深開發者回憶起它是早期少數具備多前端、中間語言(Intermediate Language)與通用後端架構的工具包,這種設計理念遠早於現代的 LLVM。然而,這套工具最廣為人知的並非其技術架構,而是它與自由軟體運動起源的糾葛。社群熱烈討論了 Richard Stallman(RMS)在創立 GNU 專案前曾寫信請求使用當時名為 VUCK 的 ACK,卻遭到 Tanenbaum 以「大學是自由的,但編譯器不是」為由拒絕,這段往事被認為是促使 RMS 決定自行開發 GCC 的關鍵轉折點。

針對 ACK 的商業化歷史,留言者指出這套工具在 1980 年代末期的授權費用極其昂貴,原始碼授權甚至高達近萬美元。這種封閉且高價的策略在當時引發了不少不滿,特別是對於那些為了學習 Minix 而必須購買昂貴教科書的學生而言。有評論者批評 Tanenbaum 當時過於看重版稅與商業利益,導致 Minix 與 ACK 錯失了成為自由軟體主流的機會,最終被林納斯·托瓦茲(Linus Torvalds)以開放協作模式開發的 Linux 所超越。

在技術細節上,社群注意到 ACK 雖然古老,但仍有一些奇特的現代應用,例如它包含了一個針對 Raspberry Pi GPU 的後端。這引發了關於該後端用途的討論,有開發者指出這可能是為了編寫 RPi 的引導加載程序(Bootloader),因為該 GPU 實際上是樹莓派啟動時的主處理器。此外,關於 Minix 3 是否仍依賴 ACK 也存在爭論,有使用者分享了在編譯 Minix 核心時遇到的挑戰,提到 ACK 語法與現代 GCC 彙編器之間的轉換問題,並指出雖然有 asmconv 等工具可以協助轉換,但過程依然充滿痛苦。

最後,關於 ACK 的名稱也有一段有趣的插曲。其原名 VUCK(Vrije Universiteit Compiler Kit)在荷蘭語中意指「自由大學」,但因為縮寫在英語中聽起來像是不雅詞彙,加上 RMS 的負面經驗,後來才更名為現在的 ACK。儘管它在 2005 年後已轉為 BSD 授權開放原始碼,但社群普遍認為它現在更多是作為一種教育工具或歷史遺產存在,而非現代開發的首選。

延伸閱讀

  • Minix 3 原始碼專案:在 GitHub 上仍有開發者維護與 ACK 相關的 Minix 3.1.0 分支。
  • librerpi 專案:一個基於開源韌體的樹莓派引導程式,與討論中提到的 GPU 後端應用相關。
  • GNU 專案歷史:RMS 親自撰寫關於為何決定開發 GCC 的歷史紀錄,其中詳細描述了與 ACK 作者的互動。
  • UniPress 商業紀錄:關於 1990 年代 ACK 商業授權價格與 C to PostScript 編譯器(c2ps)的歷史資料。