從強調控制權的系統語言,到百花齊放的腳本語言,每種語言的設計哲學都反映了其背後的技術權衡與商業考量。

1. 系統語言:權力的雙刃劍#

系統語言(如 C、C++、D)的設計核心在於 「性能優先於生產效率」。它們賦予設計師極大權力,同時也帶來了沈重負擔。

C 與 C++ 的愛恨情仇#

C++ 成功地相容了 C 語言,這是把雙刃劍:它繼承了 C 的強大底層能力,但也繼承了一些歷史包袱。

  • 記憶體管理的抉擇:C++ 設計者未直接支援自動垃圾回收(GC)。
    • 原因:擔心造成過大的時空開銷,並削弱底層開發能力。
    • 解法:依賴程式設計師手工釋放記憶體,或是運用 RAII(Resource Acquisition Is Initialization) 技術來管理資源。
  • 底層特徵:全面支援指標運算與寬鬆的類型轉換,這是為了滿足作業系統與驅動程式開發的需求。

D 語言:試圖打破僵局#

D 語言試圖在 C++ 的基礎上進行現代化改良:

  • 提供可控制的垃圾回收器
  • 內建支援執行緒同步、動態陣列、巢狀函數與契約式設計(Design by Contract)
  • 廢除標頭檔(Header Files)和前置宣告(Forward Declaration),簡化專案結構

2. 平台語言:先搭台後唱戲#

平台語言(Java 與 C#)的崛起,標誌著軟體開發從「單打獨鬥」走向「工業化標準」。

Java/C# 相對於 C++ 的進化#

這類語言強調安全、簡單與標準化

  • 安全性:限制指標使用、強制陣列邊界檢查、嚴格的類型安全
  • 簡化:引入自動垃圾回收、廢除多重繼承與標頭檔
  • 中性:編譯成與機器無關的位元組碼(Bytecode),運行於虛擬機(VM)之上
  • 豐富性:擁有完備的 API、反射機制與並行程式設計支援

這兩種語言的發展是技術與商業合力推動的結果,但戰略路徑截然不同:

維度Java (JVM 體系)C# / .NET (CLR 體系)
核心標語Write Once, Run Anywhere.Language Agnostic. (語言無關性)
戰略目標讓語言向平台擴散:打破硬體與作業系統的邊界,讓 Java 成為事實上的標準環境讓平台凝聚語言:無論你用 C++、VB 或 C#,只要在 Windows/CLR 上,都能完美協作
中間層機制JVM (Java Virtual Machine):將 Bytecode 轉譯給不同 OSCLR (Common Language Runtime):定義通用型別系統 (CTS),讓不同語言編譯成同一種 IL
抽象重點硬體抽象:屏蔽不同 CPU 與 OS 的差異語言抽象:屏蔽不同編程範式與語法的差異
身分認同純粹主義者:堅持 Java 語言的統一性與規範多元主義者:歡迎各路英雄 (VB, F#, C++/CLI) 匯聚於同一框架

3. 前台語言:視覺與互動的藝術#

前台語言關注的是使用者介面(UI)互動體驗。這裡涵蓋了傳統的桌面開發(Visual Basic, Delphi)與 Web 開發(JavaScript)。

桌面雙雄:Visual Basic vs. Delphi#

兩者都擅長視覺化快速應用開發(RAD),但定位上有所不同。

點擊查看:VB 與 Delphi 的詳細比較
維度Borland Delphi (Object Pascal)Microsoft Visual Basic (VB)
核心優勢強大的 VCL 框架:元件化程度極高,且能直接操作 Windows API極短的學習曲線:讓非本科系人員也能快速寫出視窗程式
執行效能原生編譯 (Native):執行效率接近 C++,具備直接操作指標的能力解釋/虛擬機執行:依賴 Runtime 庫,早期效能與靈活性受限
擴充性不限於 Windows:具備跨平台潛力 (Kylix 等),支援指標運算Office 生態系:透過 VBA 完美統治了 Excel/Access 等辦公自動化
設計哲學專業工程師的利刃:結構嚴謹 (Pascal 體系),適合大型複雜系統平民化的開發工具:快速產出原型,與微軟 .NET 策略深度融合
身分認同物件導向的模範:繼承、多型、封裝實作得非常優雅事件驅動的先驅:將「拖拉點選」開發模式推向極致

Web 王者:JavaScript#

隨著 DHTML 和 AJAX 技術的興起,JavaScript 成為了無可爭議的前端核心。

  • 優勢:標準、普及、成熟、無需插件、對搜索引擎友好。
  • 挑戰:作為弱類型動態語言,它也面臨諸多問題:
    • 基於**原型(Prototype)**的物件導向機制讓傳統開發者感到陌生。
    • API 相對貧乏,瀏覽器標準不夠統一。
    • 缺乏理想的 IDE 與除錯工具(註:此為書中觀點,現代前端工具已大幅改善)。
  • 前端:涉及面少,關注介面設計
  • 後端:涉及面廣,關注業務邏輯
  • 底層:涉及面深,關注系統資源

4. 後台腳本:敏捷開發的利器#

在 Web 後端領域,動態腳本語言(Perl, PHP, Python, Ruby)以其輕便靈活的特性,成為敏捷開發的首選。 它們與強調穩定性的靜態語言(Java/.NET)形成了互補。

LAMP 平台#

  • 組成Linux + Apache + MySQL + P (Perl/PHP/Python/Ruby)。
  • 特點:靈活、部署迅速、成本低廉、高可配置。

「P」開頭的腳本語言大亂鬥#

語言優點缺點
Perl精煉、強大、靈活、表現力極強(條條大路通羅馬)自由過度導致隱晦,程式碼的可讀性與可維護性較差(Write Only)
Python優雅規範、簡潔明晰、易學易用、類別庫豐富執行效率稍差,對空白字元(縮排)敏感
Ruby語法精巧、高度靈活,兼具表現力和可讀性性能和執行緒模型在早期版本尚待改進
PHP簡單、專一(專為 Web 生)、實用且流行語法設計較為隨意,功能結構上相對較弱

現在的趨勢顯示,靜態語言與動態語言正在互相學習。 靜態語言開始吸收型別推斷等動態特徵,動態語言也在加強執行效率與工具支援,兩者從語言特徵到執行環境都在逐漸融合