初識Erlang(1)

一直在微博看到淘寶褚霸在聊有關 Erlang 話題,十分好奇這到底是什麼樣一門語言,讓淘寶大神攻城溼這麼癡迷,昨天晚上下定決心,要花點時間去了解一下。今天早晨去圖書館借了一本《Erlang/OTP》併發編程,同時打開了Erlang 的官網: www.erlang.org,開始了我的Erlang之旅。經過一天的瞭解,下面簡單說一下我的收穫,關於Erlang的特點的小小總結:

  • 拋棄多線程,使用“進程”,這個“進程”是由 Erlang 虛擬機提供的,比普通意義上線程還輕量級,原因主要在於普通的操作系統進程都會爲每個進程預留好幾 MB 的內存空間,在 Erlang“進程”中這個預留空間被壓縮到了僅僅只有幾 KB。
  • 拋棄共享內存的進程通信方式,採用異步消息的方式,全複製的消息免除了臨界區加鎖的問題。使得在同一臺機器上的不同進程,和在不同的機器上的進程的通信方式完全一致。有句格言道:“不要通過共享內存來通信,要通過通信來共享內存。”
  • 函數編程,單次賦值,提前計算
  • 進程化的編程思想 之前知道C是過程式編程,後來還有OO,還能有什麼新鮮的嗎?就是這個,把你要解決的問題拆分成進程來解決問題,這可是我從來沒接觸過的。
  • 崩潰恢復機制 現在的服務軟件都是需要不間斷運行的,如果程序崩潰了怎麼辦?那就讓他崩潰好了,這就是 Erlang/OTP 使用的思想,一個進程崩潰以後會由其他的進程負責擦屁股,重啓或者恢復,總之這是在語言級別上提供給開發者的好處而不是還要另外整一大堆解決方案,用Erlang做項目精髓都在OTP當中,很多現在鼓吹的編程方式Erlang很早就有了。同時,Erlang提供的樹形的監督機制,借用一個個監督進程來管理一個子進程樹,同時起到防止崩潰信息氾濫的,這個子樹內的進程崩潰被監督這個進程監督進程隔斷在這個子樹內不會影響別的進程,監督進程會負責重啓發生崩潰的子樹。
  • 分佈式機制 想把最開始寫好的程序擴展到多臺或整個集羣?那用Erlang你幾乎不用改框架或者甚至一行代碼,Erlang的進程編程方式對於程序員來說是透明的,你發送信息的接收進程很有可能就在地球的另外一邊,這些都不需要你操心。這是和上面的異步消息的通信方式分不開的。
  • 二進制處理,Erlang本來就是爲電信系統設計的,其針對二進制數據有專門的處理工具,不僅僅是普通的移位或者與或非。
以上是我經過一天的自學所體會到的,如果不妥之處歡迎指出。我覺得我已經喜歡上這門神奇的語言了,同時它良好的併發支持,與我目前的研究方向——高性能計算也密切相關,決定要投入一定的時間去研究它。

發佈了53 篇原創文章 · 獲贊 15 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章