在程式語言分類的實戰視角下,冒號老師將動態語言劃歸為「後台腳本語言」:Perl、PHP、Python、Ruby。它們介於前台語言(VB、Delphi、JavaScript)與系統語言(C/C++/D)之間,為前台提供服務、呼叫底層系統資源。本文記錄第 21 課的精彩對話,深入剖析四大腳本語言的個性與生態位。
冒號解釋:先前依語法分「C 族靜態」、「非 C 族靜態」、「動態」;今依應用分「前台」、「平台」、「後台腳本」、「系統」。雖類似三層架構(表現/業務/資料),但本質不同:三層架構是邏輯模組劃分,語言分類是物理部署範圍劃分。
問號探問:是否因動態語言本質?冒號回應:理論上動態語言可支撐大型應用,實務上受限於效能、型別安全、工具支援、商業影響力,屬「主流配角或非主流主角」。
| 語言 | 核心特質 | 設計哲學 | 優勢 | 劣勢 |
|---|---|---|---|---|
| Perl | 凝練晦澀 | 語言學家 Larry Wall 主導,追求自然語言般簡潔、多樣表達、不拘一格(TMTOWTDI:做一件事有多種方法) | 文本處理無雙、正則表達式整合、CPAN 庫豐富、Unix 系統管理首選 | 可讀性差、維護難、OO 為後天添加(5.0 後)、魔符號多 |
| Python | 優雅明晰 | Guido van Rossum 倡導「一件事最好只有一種方法」(TOOWTDI)、顯式優於隱式、簡單優雅、語法語義簡單而類庫豐富 | 天生 OO、強制縮排保證風格、可讀性極高、科學運算/ AI 生態霸主 | 對空白敏感違習慣、self 顯式參數冗長、執行速度較慢、GIL 限制多執行緒 |
| Ruby | 精巧靈動 | Matz 關注「程式設計師使用語言時的感受」,兵器稱手重於鋒利、區塊與迭代器語法賞心悅目 | 兼具 Perl 表現力與 Python 可讀性、純粹 OO、元程式設計強、Rails 框架引領 Web 開發潮流 | 效能較弱、多執行緒模型受限、文件相對較少、部署複雜度曾被詬病 |
| PHP | 簡明單純 | 專為 Web 而生,語法簡單、嵌入 HTML 直觀、請求級生命週期無狀態 | 學習曲線最平緩、部署極簡(mod_php)、LAMP 核心、中小型 Web 專案佔有率最高 | 語言設計不一致(函數命名、大小寫敏感度)、命名空間/Unicode 遲至 5.3+ 才完善、非 Web 領域較弱 |
逗號質疑:框架真有這麼重要?冒號分析:業務簡單時 CGI/PHP 直嵌 HTML 即可;業務複雜、團隊擴大時,框架提供流水線生產力。RoR 突圍關鍵:
但冒係指出:RoR 仍待時間驗證,大型關鍵系統 Java 優勢(效能、安全、生態)依然明顯;中小型 Web 領域 PHP 統治力遠超 RoR。
嘆號:沒有最好的語言,只有最合適的語言。
逗號:沒有糟糕的語言,只有糟糕的程式設計師。
問號:沒有一種語言是萬能的,只會一種語言是萬萬不能的。
引號:廢除對語言的宗教信仰,建立對語言的哲學思維。
句號:程式設計就是在人腦與電腦之間尋找最佳平衡點的過程。
冒號大悅:「精彩之極!字字珠璣、句句聯璧。獎賞是——下課!」