Erlang

Erlang

編程語言
Erlang在1991年由愛立信公司向用戶推出了第一個版本,經過不斷的改進完善和發展,在1996年愛立信又為所有的Erlang用戶提供了一個非常實用且穩定的OTP軟件庫并在1998年發布了第一個開源版本。目前Erlang同時支持的操作系統有linux,windows,unix等,可以說适用于主流的操作系統上,尤其是它支持多核的特性非常适合現在的多核CPU,而分布式特性也可以很好融合目前的各種分布式集群。
    中文名: 外文名:Erlang 适用領域: 所屬學科: 類型:編程語言 開發者:CS-Lab 問世:1987年 适用:主流的操作系統

定義

Erlang開源語言系出名門,通信巨頭愛立信公司用它開發出了可靠性驚人的交換機系統AXD301。它天生就是面向并發、分布和高容錯的,兼有函數式語言和腳本語言的各種優點,而且已經用于商業開發多年,具有穩定性極高的虛拟機和平台庫。有了這些天時地利,無怪乎Erlang能夠迅速成為熱門的開發語言,除了廣泛應用于通信行業之外,它已經進入了各個領域:Facebook用它實現了聊天系統,Yahoo用它重寫了Delicious,Amazon用它開發了雲計算數據服務SimpleDB,還有多人遊戲、測試工具、電子支付、數據采集與監控、企業消息、電子郵件、空中交通管制……..

Erlang是運行于虛拟機的解釋性語言,但是現在也包含有烏普薩拉大學高性能Erlang計劃(HiPE)開發的本地代碼編譯器,自R11B-4版本開始,Erlang也開始支持腳本式解釋器。在編程範型上,Erlang屬于多重範型編程語言,涵蓋函數式、并發式及分布式。順序執行的Erlang是一個及早求值,單次賦值和動态類型的函數式編程語言。

Erlang是一個結構化,動态類型編程語言,内建并行計算支持。最初是由愛立信專門為通信應用設計的,比如控制交換機或者變換協議等,因此非常适合于構建分布式,實時軟并行計算系統。使用Erlang編寫出的應用運行時通常由成千上萬個輕量級進程組成,并通過消息傳遞相互通訊。進程間上下文切換對于Erlang來說僅僅隻是一兩個環節,比起C程序的線程切換要高效得多得多了。

使用Erlang來編寫分布式應用要簡單的多,因為它的分布式機制是透明的:對于程序來說并不知道自己是在分布式運行。Erlang運行時環境是一個虛拟機,有點像Java虛拟機,這樣代碼一經編譯,同樣可以随處運行。它的運行時系統甚至允許代碼在不被中斷的情況下更新。另外如果需要更高效的話,字節代碼也可以編譯成本地代碼運行。

曆史

Erlang得名于丹麥數學家及統計學家Agner Krarup Erlang,同時Erlang還可以表示Ericsson Language。

Erlang并非一門新語言,它出現于1987年,隻是當時對并發、分布式需求還沒有今天這麼普遍,當時可謂英雄無用武之地。

Erlang語言創始人Joe Armstrong當年在愛立信做電話網絡方面的開發,他使用Smalltalk,可惜那個時候Smalltalk太慢,不能滿足電話網絡的高性能要求。但Joe實在喜歡Smalltalk,于是定購了一台Tektronix Smalltalk機器。但機器要兩個月時間才到,Joe在等待中百無聊賴,就開始使用Prolog,結果等Tektronix到來的時候,他已經對Prolog更感興趣,Joe當然不滿足于精通Prolog,經過一段時間的試驗,Joe給Prolog加上了并發處理和錯誤恢複,于是Erlang就誕生了。這也是為什麼Erlang的語法和Prolog有不少相似之處,比如它們的List表達都是Head | Tail]。

1987年Erlang測試版推出,并在用戶實際應用中不斷完善,于1991年向用戶推出第一個版本,帶有了編譯器和圖形接口等更多功能。1992年,Erlang迎來更多用戶,如RACE項目等。同期Erlang被移植到VxWorks、PC和Macintosh等多種平台,兩個使用Erlang的産品項目也開始啟動。1993愛立信公司内部獨立的組織開始維護和支持Erlang實現和Erlang工具。

特點

并發性-Erlang支持超大量級的并發進程,并且不需要操作系統具有并發機制。

分布式-一個分布式Erlang系統是多個Erlang節點組成的網絡(通常每個處理器被作為一個節點)

健壯性-Erlang具有多種基本的錯誤檢測能力,它們能夠用于構建容錯系統。

軟實時性-Erlang支持可編程的“軟”實時系統,使用了遞增式垃圾收集技術。

熱代碼升級-Erlang允許程序代碼在運行系統中被修改。舊代碼能被逐步淘汰而後被新代碼替換。在此過渡期間,新舊代碼是共存的。

遞增式代碼裝載-用戶能夠控制代碼如何被裝載的細節。

外部接口-Erlang進程與外部世界之間的通訊使用和在Erlang進程之間相同的消息傳送機制。

Fail-fast(中文譯為速錯),即盡可能快的暴露程序中的錯誤。

面向并發的編程(COP concurrency-oriented programming)

開發工具

Sublimetext

linux下有全套的IDE環境插件可用完善的如SublimErl,windows下隻能自己簡單的集成一部分基礎功能。

優勢比于eclispse的erlide是大項目時操作響應速度快、體驗流暢錯誤少。

Emacs

可以使用任何你喜歡的編輯器編寫Erlang程序,但如果你使用Emacs編輯可以支持很多功能,比如:代碼縮進、語法高亮、驗證模塊名稱、支持段落的注釋、模塊骨架、标簽和更多的支持。

Erlide

這是一個基于Eclipse的Erlang圖形界面插件(ErlIDE),ErlIDE正在積極開發新特性,同時它也是開源的。

流量單位

指測量電話呼叫流量的單位。一個厄朗等于一個小時的中繼負荷,或3600秒中繼負荷。如果将CCS(百秒呼叫)轉換成厄朗值,則需先乘以100,然後再除以3600(或直接除以36)。因此,呼叫中心可使用厄朗值來反映中繼線路負荷,即一個小時滿負荷的平均中繼線路有多少數量。例如,在一個小時中,呼叫中心呼叫流量為12.35厄朗時,就意味着在該時段中,平均有12條線多一些都處于全負荷狀态。據此可以大緻推算出需要多少座席人員。

指一種數學計算方法,這種方法是基于已知的信息,如平均通話時長,來預測無規則的工作負荷,如電話呼叫量。它是呼叫中心人員和中繼線路數量的決策參考方法。

厄朗公式有兩類,厄朗B用于呼叫量随機狀态,同時沒有排隊的情況;厄朗C用于呼叫量随機狀态,同時有排隊的情況,它假設所有來電者将無限期地進入隊列等待被接通。因此,呼叫量不可能比可用的中繼線路數量還大,如果那樣的話,将造成排隊無限期地延遲。

功能

使用Erlang編寫出的應用運行時通常由成千上萬個輕量級進程組成,并通過消息傳遞相互通訊。進程間上下文切換對于Erlang來說僅僅隻是一兩個環節,比起C程序的線程切換要高效得多得多了。

使用Erlang來編寫分布式應用要簡單的多,因為它的分布式機制是透明的:對于程序來說并不知道自己是在分布式運行。

Erlang運行時環境是一個虛拟機,有點像Java虛拟機,這樣代碼一經編譯,同樣可以随處運行。它的運行時系統甚至允許代碼在不被中斷的情況下更新。另外如果你需要更高效的話,字節代碼也可以編譯成本地代碼運行。

上一篇:超級細菌

下一篇:禅茶一味

相關詞條

相關搜索

其它詞條