Guy Steele & Richard Gabriel:the Evolution Of Lisp@1993
好的,這是一份根據提供的資料提取的主要論點及其詳盡解釋的 API 回覆,使用 markdown 格式,內容不少於一千字:
“`markdown
Lisp 程式語言的演進:主要論點與解釋
根據 Richard P. Gabriel 與 Guy L. Steele Jr. 的論文《Lisp 的演進》(The Evolution of Lisp),Lisp 的發展並非僅由嚴謹的技術需求評估所主導,而是受到更為複雜多樣的因素影響,其中包括機構間的競爭、技術上的巧思,以及所謂「駭客文化」的歡樂感。儘管如此,這個過程最終催生了兩種強大的 Lisp 方言:一個是功能豐富但有些混雜的工業級語言(Common Lisp),另一個則是精煉而強大的學術理論家適用方言(Scheme)。
論文提出了幾個主要論點來解釋 Lisp 語言的演進模式與多樣性:
-
演進的週期模式:多樣化、接受與整合 (Diversification, Acceptance, and Consolidation)
論文認為 Lisp 自 Lisp 1.5 以來的演進,表現出一種不斷循環的模式:- 多樣化 (Diversification):在這個階段,新的語言結構、編程風格、實現策略或程式設計典範被引入現有的 Lisp 方言,或催生全新的方言。這通常發生在舊的解決方案不足,或研究/開發群體規模較小且相對孤立時,允許進行實驗和創新。
- 接受 (Acceptance):新的方言或特性會在此階段被潛在的使用者群體(例如特定研究領域、商業公司)評估。接受與否取決於多個條件,包括方言是否能在「正確的機器」(高效能、廣泛使用)上運行、是否符合當地用戶的程式設計模型、是否解決了緊迫的新問題、以及是否具有足夠的「聲望」(cachet)——一種感知上的領先或獨特魅力,能吸引追求尖端的用戶。
-
整合 (Consolidation):當多個方言被特定使用者群體接受後,可能會發生整合,將不同方言的特性融合到一個主流方言中,形成非正式或正式的標準。這通常需要接受該方言的群體處於上升期,且該方言被認為對群體的成功至關重要。整合的目標是提供一個穩定的開發平台,但也可能導致核心語言停滯不前,或錯過一些技術優勢。
這個週期並非一成不變,可能中斷或跳過階段,但它提供了一個理解 Lisp 演進的框架。
-
** Lisp 多樣性的根本原因:技術特性與人文因素的交織**
Lisp 異常豐富的多樣性是其顯著特徵,論文歸結了五個主要原因:- 理論基礎 (Theoretical Foundations):Lisp 基於遞歸函數理論和可計算性理論,其純粹形式適合數學推理。這吸引了許多具有理論思維的研究人員,他們將 Lisp 或類 Lisp 語言作為表達和實現新想法的載體,使其處於基礎語言研究的前沿。
- 可塑性 (Malleability):Lisp 極易進行語言擴展。透過宏 (macro) 等機制,使用者可以定義新的語言結構,使其與內建功能幾乎無異。Lisp 的自創計算能力的宏、與資料結構相似的程式碼表示 (S-expressions)、以及其函數式特性,使得在 Lisp 中構建全新的計算典範(如物件導向、並行處理、AI 語言)變得相對容易。這種內在的可塑性極大地促進了多樣化。
- 互動性和增量性 (Interactive and Incremental Nature):Lisp 通常提供高度互動的開發環境,支援快速的原型開發、測試、修改和除錯。這種能力使得 Lisp 適合探索用其他語言難以應對的複雜問題,吸引了勇於冒險和開創的程式設計師。
- 作業系統般的功能 (Operating System Facilities):許多 Lisp 實現提供了命令處理器、自動記憶體管理(垃圾回收)、檔案管理、視窗/圖形介面、多工、編譯器、偵錯器、效能監控,甚至多處理功能。這使得 Lisp 成為進行作業系統研究或提供跨平台作業環境的工具,進一步擴大了其應用和多樣性。
- 選擇使用 Lisp 的人 (The People):最終,是人創造了語言的多樣性。上述四個因素吸引了特定類型的人:通常是具有創造力、大膽、對探索新語言設計感興趣、並樂於展示或鍛鍊其巧思的程式設計師。Lisp 作為 AI 的語言,吸引了許多AI 研究者,他們往往是這些特質的典型代表。Lisp 被視為一種「專家」語言或「無政府主義」語言,而非為非專業程式設計師設計安全可靠軟體的語言,這也吸引了偏好自由和彈性的用戶。
-
社會和機構因素的關鍵作用:超越純粹技術考量
論文多次強調,Lisp 的演進很大程度上是社會和機構因素博弈的結果,有時甚至壓倒了純粹的技術優勢。- 機構競爭與對抗 (Institutional Rivalry):MacLisp 和 Interlisp 是最經典的例子。這兩個方言幾乎同時出現,由不同機構(MIT 與 SDC/BBN/Xerox)開發,各自有不同的設計哲學(效能/檔案導向 vs. 環境/互動導向)和使用者群體。它們之間的競爭與對抗,而非合作,主導了 1970 年代的 Lisp 格局,即使在試圖整合的會議(如 1974 年的 MacLisp/Interlisp 高峰會)中,雙方也難以彌合分歧。這種 rivalry 甚至延續到後來的 Common Lisp 標準化過程和 ISO 標準化之爭中。
- 聲望 (Cachet) 的影響:擁有「聲望」的方言或平台更容易被接受。Lisp Machines 在 1980 年代初期因其專用硬體和先進環境而具有聲望,這推動了 Zetalisp (Symbolics 的 Lisp 方言) 的普及,進而影響了 Common Lisp 的設計。Sun 工作站後來的聲望也幫助了其上的 Lisp 實現。缺乏聲望的方言或平台即使技術不錯也難以成功(如 VAX 上的某些 Lisp 實現)。
- 資金來源與使用者群體 (Funding and Acceptance Groups):ARPA/DARPA 的資助是 Lisp 早期和中期的重要推動力。ARPA 對 Lisp 方言過於分散的不滿直接促成了 Common Lisp 的標準化努力。AI 的興衰也直接影響了 Lisp 的商業化前景(AI Winter 導致許多 Lisp 公司衰落)。特定的使用者群體(如 Macsyma 用戶、商業 AI 公司)的需求和接受能力決定了方言的發展方向和生存。
- 人的因素 (Human Element):開發者和使用者個人的哲學、經歷、乃至個性(例如對 S-expressions 的偏好或厭惡、對 DWIM 的嘲諷)都對語言設計和社群動態產生了深遠影響。關鍵人物在不同機構或專案之間的流動(如 Jon L White, Guy Steele, Richard Gabriel 等人的經歷)也傳播了思想,並塑造了新的方言。標準化過程中的政治角力、個人主張甚至情感因素,都影響了最終的技術決策。
-
技術特徵的演進與挑戰:實驗、權衡與爭議
論文通過 NIL/T 的處理、迴圈結構、宏、數值功能、物件導向和並行 Lisp 等具體技術特徵的演進,展示了 Lisp 設計中的實驗、權衡和爭議。- NIL/T 的多重角色:nil 同時作為空列表、布林假值和一個符號,這種「輕率」的設計帶來了實現上的挑戰和程式設計風格上的爭議。儘管 Scheme 選擇了清晰地分離這些概念,但 Common Lisp 為了與歷史兼容而保留了現狀,凸顯了向後兼容性與設計純粹性之間的權衡。
- 迴圈結構的爭議:Lisp 的核心是遞歸,但對程序式迴圈的需求導致了多種迭代語法的出現(如 Interlisp 的 CLISP, MacLisp 的 DO, 後來的 LOOP, series)。這些語法 often 帶有類 Algol 語言的關鍵字,引發了關於語法風格和程式碼表示的爭議,LOOP 宏的標準化過程就是一個政治和美學權衡的例子。
-
宏的強大與複雜:宏是 Lisp 可塑性的核心,從早期的簡單替換到 MacLisp 的計算宏,再到 Lisp Machine Lisp 和 Common Lisp 的
DEFMACRO和backquote,宏的能力不斷提升。然而,宏的「不衛生」問題(變數名稱捕捉)也帶來了挑戰,促使 Scheme 社群發展了「衛生宏」等更理論化的方法。宏的發展體現了 Lisp 作為「操作程式的程式」的本質。 - 數值功能的擴展:雖然常被視為符號處理語言,但 Macsyma、S-1 專案和學術研究(如 Sussman 的工作)推動了 Lisp 在數值計算上的進步,包括大整數、浮點數標準、複數甚至分數的內建支援,使其數值能力超出了許多刻板印象。
- 物件導向與並行 Lisp 的融合:Flavors、CommonLoops 等物件導向擴展以及 Multilisp、Qlisp 等並行 Lisp 方言的出現,展示了 Lisp 作為實驗平台如何不斷吸收和融合新的程式設計典範。CLOS (Common Lisp Object System) 的設計和標準化是不同 OOP 實現和理念整合的顯著成果,其元物件協定 (metaobject protocol) 更是 Lisp 反射性 (reflection) 的體現。
總結來說,Lisp 的演進是一個充滿活力、實驗性、但也伴隨爭議和權衡的過程。其核心技術特性使其成為一個優秀的語言實驗室,不斷產生新的想法和方言。同時,Lisp 社群特有的人文和機構動態、外部的技術和市場壓力,共同塑造了哪些想法得以被「接受」並最終「整合」到主流方言中。這個過程既體現了技術的進步,也反映了人類因素在軟體演進中的複雜作用。
“`
comments
comments for this post are closed