Erlang 學習筆記(一)

2021-08-31 05:55:53 字數 2277 閱讀 1017

erlang 學習筆記(一)

[email protected]

本學習筆記為初級教程,是對[url=的總結,也是我個人學習過程中的總結。請各位高手指點,並給出學習建議,謝謝。

[size=large]1. 順序程式設計設計(sequential programming)[/size]

[size=medium]1.1 erlang shell[/size]

啟動erlang,輸入命令[b]erl[/b]

[quote]$erl

erlang r14b01 (erts-5.8.2) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

eshell v5.8.2 (abort with ^g)

1>

[/quote]退出erlang shell有三種方法:

[*] 按照進入erlang shell時的提示輸入 control-g,看到如下輸出:

[quote]user switch command

-->

[/quote]

然後輸入q回車,退出

[*] 和平常終止程式的習慣一樣,使用control-c,看到如下輸出:

[quote]break: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded

(v)ersion (k)ill (d)b-tables (d)istribution

[/quote]

然後輸入a回車就退出erlang shell.

[*]使用erlang自己的函式退出,輸入[b]halt().[/b]回車。

[quote]$ erl

erlang r14b01 (erts-5.8.2) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

eshell v5.8.2 (abort with ^g)

1> halt().

$[/quote]

注意函式結尾的"."號,這是必須的。在erlang中點號表示一條語句的結束。

[size=medium]1.2 模組和函式[/size]

erlang的**副檔名是.erl,檔名和改**檔案中的**模組名稱相同。比如名稱叫做tut的模組,其**檔名稱應該是:tut.erl。比如其**檔案的內容如下:

[quote]-module(tut).

-export([double/1]).

double(x) ->

2 * x.

[/quote]

第一行[b]-module(tut).[/b]定義了乙個模組名稱叫做tut,和該**檔名相同,第二行[b]-export([double/1]).[/b]說明該tut模組包含乙個叫做double的函式能被tut模組之外的**訪問,並且這個函式有乙個輸入引數。第三行和第四行是名為double的函式的具體定義,別忘記函式定義完畢之後的"."號。

[size=medium]1.3 編譯erlang[/size]

將1.2中寫完的**儲存到tut.erl,然後進入該檔案所在目錄下,輸入[b]erl[/b]命令,進入erlang shell,輸入[b]c(tut).[/b]編譯。

[quote]$ erl

erlang r14b01 (erts-5.8.2) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

eshell v5.8.2 (abort with ^g)

1> c(tut).

[/quote]

編譯之後輸出表明編譯成功。去該目錄下檢視檔案:

[quote]$ ls -l

total 32

-rw-r--r-- 1 guibin staff 460 2 25 10:44 tut.beam

-rw-r--r-- 1 guibin staff 60 2 24 10:43 tut.erl

[/quote]

發現生成了編譯後的可執行檔案but.beam。

[size=medium]1.4 呼叫函式[/size]

下面呼叫剛才定義好的函式double,計算30×2:

[quote]1> c(tut).

2> tut:double(30).

603>

[/quote]

[b]tut:double(30).[/b]表示呼叫tut模組下面的double函式,輸入引數為30,得到結果60。

Erlang學習筆記(一)

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

Erlang學習筆記(二)

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

Erlang學習筆記(二)

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