Erlang學習筆記(一)

2021-07-24 12:01:47 字數 939 閱讀 4288

erlang雖然目前還不是主流語言,但有可能在未來一段時間發揮重要的作用.即使你不用erlang,也可以從erlang的設計和erlang的社群的智慧型中得到啟發,就算是從開啟思路,全面認識計算本質和平行計算特性的角度出發,erlang也值得了解.

死鎖,競態,越來越多的鎖帶來了越來越複雜的問題.

比如x=x+n,(共享記憶體陷阱)

從機器指令的角度思考

1)mov  ax, [bp+x];//將暫存器ax賦值為變數x所指示的記憶體中的資料.

2)mov bx ,n;//將暫存器bx賦值為n

3)add ax,bx;將暫存器ax加n.

4)mov [bp+x] ,ax:將變數x所指示的記憶體賦值為暫存器ax中的資料.

erlang為了併發而生,它採用的是訊息模型,程序間並不共享任何資料,也就完全避免了引入鎖的必要。

不僅如此,erlang在程式設計模型上走的更遠,它在語言級別提供了一系列的併發原語,通過原語,可以用程序+訊息的模型來建模實現世界中多人協作的場景.乙個程序表示乙個人,人與人之間並不存在任何共享記憶體,彼此之間的協作完全通過訊息(說話、打手勢、做表情、等等)互動來完成。這就是每乙個人生而知之的併發模式!軟體模擬現實世界協作和互動的場景———這也就是所謂的cop(面向併發程式設計)思想.

在錯誤處理上,erlang也有與眾不同的設計決策,這使得實現「容錯系統」不再遙不可及。cop假設程序難免會出錯,它假設程式隨時可能會出錯,如果發生出錯的情況,則不要嘗試自行處理,二十直接退出,交給更高階的程序來對這種情況進行處理。通過引入「速錯」和「程序監控」的概念,我們將錯誤分層,並有更高層的程序來妥善處理,有了這樣的概念支撐,構造「容錯系統」就易如反掌.

出了掌握語言本身之外,還要掌握精微思辨的軌跡,從乙個不起眼的小問題開始,從巨集觀分析到微觀實現,層層深入細細道來,問題是什麼?要如何建模?該怎麼重構?各個版本之間的精微演化全然呈現,但這些微小的改進,最終演化出那些讓人驚喜的特性,整個過程可謂相當精彩.

Erlang 學習筆記(一)

erlang 學習筆記 一 guibin.beijing gmail.com 本學習筆記為初級教程,是對 url 的總結,也是我個人學習過程中的總結。請各位高手指點,並給出學習建議,謝謝。size large 1.順序程式設計設計 sequential programming size size m...

Erlang學習筆記(二)

今天在練習map對映組的時候 本人erlang版本17.01 根據 erlang程式設計 第二版這本書上操作,在取值的時候發現問題,如下 書中操作 如下圖 明顯兩個程式執行不一樣,後來看到官方文件,才發現是這個樣子 在上圖中明確指出,在map對映組中取值的時候用 取值,後來又看了看兩者區別發現兩者只...

Erlang學習筆記(二)

erlang的併發特性源自語言本身而並非作業系統。它把現實世界模擬成一系列的程序,其間僅靠交換訊息進行互動,因此erlang簡化了並行程式設計。在erlang世界中,存在並行程序但是沒有鎖,沒有同步方法,也不存在記憶體汙染的可能,因為erlang根本沒有共享記憶體.erlang程式可以由幾百萬個超級...