程式語言

什麼是 Elixir?
Elixir 是一門動態、函數式的程式語言,專為建構可擴展、可維護的應用程式而設計。運行在 Erlang VM (BEAM) 之上,繼承了 30 多年的電信級系統經驗。
誕生背景
Elixir 由 José Valim 於 2012 年創造。José 曾是 Ruby on Rails 核心團隊成員,他希望打造一門結合 Ruby 優雅語法與 Erlang 強大並發能力的語言。
Elixir 運行在 BEAM(Erlang 虛擬機)之上,這個虛擬機最初由愛立信為電信系統開發,已經過數十年的實戰驗證,以其卓越的並發處理能力與容錯設計聞名。
透過 BEAM,Elixir 程式可以充分利用多核心 CPU,輕鬆處理數百萬個並發連線,並實現熱更新部署。
José Valim
The creator of Elixir programming language
「我的起點是 Erlang,我想在它之上建構 Elixir。我有兩個目標:可擴展性和生產力。」 — Evrone 訪談
核心特色
Elixir 結合了函數式程式設計的精髓與現代語言的便利性
函數式程式設計
- 不可變資料 - 資料一旦建立就不會改變,避免副作用
- 純函數 - 相同輸入永遠產生相同輸出
- 簡潔表達 - 用更少的程式碼完成更多事情
BEAM 虛擬機
- 輕量級 Process - 每個 Process 僅佔用約 2KB 記憶體
- 訊息傳遞 - Process 間透過非同步訊息通訊
- 獨立記憶體 - 每個 Process 有獨立的記憶體空間
模式比對 (Pattern Matching)
Elixir 的模式比對讓你可以優雅地解構資料,寫出清晰易讀的程式碼。
# 解構 list [head | tail] = [1, 2, 3, 4] # head = 1, tail = [2, 3, 4] # 解構 map %{name: name, age: age} = %{name: "Alice", age: 30} # name = "Alice", age = 30
管線運算子 (Pipe Operator)
使用 |> 將資料像水管一樣串連處理,程式碼更加直觀易讀。
# 傳統寫法 Enum.sum(Enum.map(Enum.filter(list, &(&1 > 0)), &(&1 * 2))) # 使用 Pipe Operator list |> Enum.filter(&(&1 > 0)) |> Enum.map(&(&1 * 2)) |> Enum.sum()
與其他語言比較
了解 Elixir 與其他熱門語言的差異
| 特性 | Elixir | Node.js | Go | Ruby |
|---|---|---|---|---|
| 程式典範 | 函數式 | 多典範 | 命令式 | 物件導向 |
| 並發模型 | Actor Model (輕量 Process) | Event Loop (單執行緒) | Goroutines (CSP) | Thread + GIL |
| 容錯機制 | OTP Supervisor | 需外部工具 (PM2) | 顯式錯誤回傳 | 例外處理 |
| 分散式支援 | 原生叢集 | 需額外架構 | 需額外架構 | 需額外架構 |
| 優勢 | 即時系統、高併發、容錯 | 生態系豐富、前後端統一 | 效能佳、部署簡單 | 開發快速、語法優雅 |


