newsence

XML 是一種低成本的領域特定語言

Hacker News·22 天前

我認為 XML 仍然是構建跨平台宣告式規範的強大工具,這點已在美國國稅局稅收預扣估算器的邏輯引擎中得到成功驗證。

背景

美國國稅局(IRS)近期發布了全新的開源專案「扣繳稅額估算器」(Tax Withholding Estimator),該系統的核心邏輯並非使用傳統程式語言編寫,而是採用 XML 作為領域特定語言(DSL)來定義複雜的稅務法規。開發團隊認為 XML 雖然顯得笨重且過時,但在處理跨平台聲明式規範與稅務邏輯的透明度上,具有不可替代的優勢。

社群觀點

針對 XML 是否為「廉價且高效」的 DSL 選擇,Hacker News 社群展開了激烈的辯論。支持者認為 XML 的強項在於其嚴謹的生態系統,特別是 XSD 綱要驗證功能,能即時確保文件的正確性。這類觀點指出,許多開發者對 XML 的反感源於缺乏自動化工具的使用經驗,而非技術本身的缺陷;相較於 JSON 往往需要數千行程式碼來進行手動驗證,XML 內建的規範性在追求資料完整性的金融或政府專案中更具工程價值。

然而,反對聲音則集中在 XML 的維護成本與開發體驗。批評者指出,XML 雖然描述性強,但對程式員極不友善,解析過程往往需要龐大的函式庫支持,且在處理記憶體資料結構的映射時極為繁瑣。有留言者回憶起早期 SOAP 與 Java 時代的痛苦經驗,認為 JSON 之所以勝出,是因為它能直觀地對應到多數語言的陣列與字典結構,大幅降低了開發者的心智負擔。此外,部分開發者質疑「聲明式」是否一定要與 XML 掛鉤,認為像 Haskell 或 Scala 這類具備強大嵌入式 DSL 支持的語言,或是採用 S-expressions,都能在保持數學邏輯嚴謹性的同時,提供更好的閱讀性與除錯體驗。

另一派有趣的討論則聚焦於「工程實踐」與「流行時尚」的差異。有觀點認為現代開發者過度追求便利性而犧牲了正確性,為了避免 XML 的複雜性而轉向 JSON 或 YAML,結果卻是在應用層補丁式地增加邏輯來修補資料完整性問題。這種現象被形容為「以時尚偽裝技術判斷」。不過,也有技術專家提醒,XML 的解析成本在某些語言中非常昂貴,且過度依賴少數幾個核心開源實作,若追求真正的「廉價」,或許應考慮更現代的函數式編程範式,而非重新發明輪子。

延伸閱讀

在討論過程中,社群成員分享了幾個值得關注的資源。針對聲明式計算模型,有開發者推薦了 calculang 專案,旨在將複雜模型轉化為可發布的計算邏輯。此外,一篇名為《XML 的遺失藝術》(The Lost Art of XML)的部落格文章也被廣泛引用,該文深入探討了現代網頁開發工具如何為了彌補 JSON 的缺陷而重新發明 XML 早已解決的問題。對於偏好簡潔語法的開發者,則有建議參考 METAFONT 的方程式定義方式,作為另一種聲明式 DSL 的設計參考。

https://unplannedobsolescence.com/blog/xml-cheap-dsl/