Erlang,Learning

1. Erlang 是什麼
一種“小衆”語言(排名50之外)
一種函數式語言 (變量只能賦值一次)
一種動態類型語言(變量類型在運行時決定,代碼需要編譯後才能執行,與Python,Ruby等不一樣)
一種強類型語言
一種面向併發(Concurrency Oriented)的語言

《一場茶杯裏的風暴》(刊於《程序員》06年9、10期),《[url=http://blog.mylkcn.net/post/senzung/43[/url]輕鬆實現可伸縮性,容錯性,和負載平衡的大規模多人在線系統[/url]》是兩篇極好的介紹性文章。


2.開始學習

先下載安裝包
到 [url]http://www.erlang.org/[/url] 下載最新的 Erlang/OTP 版本
或者到 [url]http://cean.process-one.net/download/[/url] 下載一個更易於使用的發行版本,僅有3M大小

網上的資源
[url]http://www.erlang.org/[/url] 是官方網站,建議訂閱其郵件列表
訂閱 [url]http://www.planeterlang.org/[/url] 的RSS
[url]http://www.trapexit.org/[/url] 裏面有不錯的文章和教程
[url]http://www.process-one.net/en/[/url] 裏面有不少Erlang項目
[url]http://yaws.hyber.org/[/url] 一個併發效率大大超越Apache的Web Server
[url]http://ejabberd.jabber.ru/[/url] 一個Erlang的Jabber服務器實現
[url]http://kl.agile.com/[/url] 裏面有Potian和T1的一些經常討論整理。
[url]http://groups.google.com/group/erlang-china[/url] 裏面也有一些相關討論
[url]http://tinyurl.com/5uszus[/url] 這哥們翻譯了Erlang的部分文檔,太好了
你也可以關注JavaEye的綜合版

編輯器
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交互的任務。下面是性能提升的數據

[quote] #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
[/quote]

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


誇誇其談了一大坨,接下來的筆記將會進入到代碼中來。
發佈了3 篇原創文章 · 獲贊 0 · 訪問量 1240
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章