天天看點

Erlang概述

1.Erlang 是什麼

一種“小衆”語言(排名50之外) 

一種函數式語言 (變量隻能指派一次) 

一種動态類型語言(變量類型在運作時決定,代碼需要編譯後才能執行,與Python,Ruby等不一樣) 

一種強類型語言 

一種面向并發(Concurrency Oriented)的語言 

2.開始學習

先下載下傳安裝包 

到 http://www.erlang.org/ 下載下傳最新的 Erlang/OTP 版本 

或者到 http://cean.process-one.net/download/ 下載下傳一個更易于使用的發行版本,僅有3M大小

3.網上的資源 

http://www.erlang.org/ 是官方網站,建議訂閱其郵件清單 

訂閱 http://www.planeterlang.org/ 的RSS 

http://www.trapexit.org/ 裡面有不錯的文章和教程 

http://www.process-one.net/en/ 裡面有不少Erlang項目 

http://yaws.hyber.org/ 一個并發效率大大超越Apache的Web server 

http://ejabberd.jabber.ru/ 一個Erlang的Jabber伺服器實作 

http://kl.agile.com/ 裡面有Potian和T1的一些經常讨論整理。 

http://groups.google.com/group/erlang-china 裡面也有一些相關讨論 

http://computebank.spaces.live.com/?_c11_blogpart_blogpart=blogview_c=blogpartpartqs=cat%3d%25e5%2588%2586%25e5%25b8%2583%25e5%25bc%258f%25e5%25b9%25b6%25e8%25a1%258c%25e8%25ae%25a1%25e7%25ae%2597 這哥們翻譯了Erlang的部分文檔,太好了 

你也可以關注JavaEye的綜合版

4.編輯器

Erlide,一個Eclipse的Erlang插件,問題是不夠穩定,要随時做好崩潰的準備 

Vim,加入vim-erlang 和 taglist 插件後就是一個不錯的IDE 

Emacs,推薦,會用Emacs的不妨一試 

NetBeans,dcaoyuan同學正在開發一個Erlang插件,有興趣的可以保持關注 

Notepad,你太有才了,其實用筆記本寫c的也一大堆... 

3.文法,架構

Erlang的文法不是很難,但是寫慣了OO的程式,初看還是蠻怪異的。看看文檔,動手練練,入門還 是很Easy的。當對基本文法,程序通訊,分布 通訊都掌握之後,就是時候向OTP(Open Telecom Platform)這個平台進軍的時候了,如果你想開發99.9999999%的高可用性系統。

4.算法,架構

Erlang這門FP語言提供了非常高的分布式程式開發效率,不再需要辛辛苦苦使用ACE,NIO構 造一個支援高并發的通訊底層,不再需要小心翼翼 使用lock,semaphore等開發一個多線程的程式。然而,更為核心的問題出現了,怎樣将一個大規模計算任務通過一個良好的算法并行起來,怎樣實作 程序間的通訊架構,使得系統能夠實作Load Balance和Fail Over,實作高可用性,健壯性,高性能的目标。

此外,需要留神IO這個常見的瓶頸,Joe Armstrong曾經寫了一個pmap(parallel map)的實作,在一台32核的SUN niagara伺服器上并行運作一個需要與IO互動的任務。下面是性能提升的資料

#CPUs Speedup 

1 0,953 

2 1,855 

3 2,679 

4 3,44 

5 4,012 

6 4,624 

7 5,093 

8 5,46 

9 5,73 

10 6,11 

11 6,108 

12 6,47 

13 6,58 

14 6,8 

15 6,67 

16 7 

17 6,99 

18 7,29 

19 6,97 

20 6,97 

21 6,74 

22 6,86 

23 7,07 

24 6,85

可見性能提升到了7%後便徘徊不前,追究其原因,是IO那裡成為了瓶頸。無論是C,Java,Ruby還是Erlang,都要直視IO帶來的問題。

轉帖自:SkyRemember部落格

繼續閱讀