XML 是一種低成本的領域特定語言
我認為 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 的設計參考。