# 序言
Erlang[[1]](#)是由Ericsson and Ellemtel計算機科學實驗室的成員為并發分布式系統編程而開發的一種申明式語言。
開發Erlang最初是為了調研現代申明式編程范式是否適用于大型工業電信交換系統的編程。而我們很快便發現適用于電信系統編程的語言也同樣適用于大量工業嵌入式實時控制問題。
Erlang的許多原語為大型并發實時系統開發中的一些常見問題提供了解決方案。其**模塊**系統令大型系統得以分解為粒度更可控的單元。其**錯誤檢測**機制用于構建容錯軟件。其**代碼加載**原語允許在運行時不停機地升級系統代碼[[2]](#)。
Erlang具備一套基于進程的并發模型。在這套模型中,并發性是顯式的,用戶可以精確地控制哪些計算串行哪些計算并行;進程間的消息傳遞則是異步的,即發送進程一發完消息就立即繼續執行。
Erlang進程交換數據的唯一方式就是消息傳遞。這樣一來,應用可以很容易地做到分布式——為單處理器編寫的應用可以容易地遷移到多處理器或單處理器網絡上。語言中提供的內建機制簡化了分布式應用的編寫,使得應用既可運行于單機也可運行于計算機網絡中。
Erlang的變量具有單次賦值屬性[[3]](#)——變量一旦被賦值就不可再被更改。該屬性對于調試變更中的應用有重要的影響。
程序是完全以**函數**的方式編寫的——函數的選擇通過模式匹配來完成,如此一來程序可以非常的簡潔緊湊。
Erlang系統具備內建的時間觀念——程序員可以指定一個進程在采取某種行動之前需要等待某條消息多久。這就允許了實時系統的開發。Erlang適用于大多數響應時間為毫秒級的**軟**實時系統。
有關Erlang的最新信息可通過[http://www.ericsson.se/erlang](http://www.ericsson.se/erlang)獲取,e-mail咨詢可發送至[erlang@erix.ericsson.se](#)。
Joe Armstrong
Robert Virding
Claes Wikstr?m
Mike Williams
Computer Science Laboratory
Erricson Telecommunications Systems Laboratories
Box 1505
S-125 25 ?lvsj?
Sweden
[`erlang@erix.ericsson.se`](#)
| [[1]](#) | Agner Krarup Erlang (1878-1929),丹麥數學家,發展了統計均衡中的隨機過程理論——他的理論被廣泛地應用于電信業。 |
|-----|-----|
| [[2]](#) | 這對于電話交換機或空中交通控制系統等嵌入式實時系統非常重要——通常情況下,這些系統是不能因為軟件維護而停機的。 |
|-----|-----|
| [[3]](#) | 也叫做write-once variable或non-destructive assignment。 |
|-----|-----|