正如《代碼的未來》中所說,為了充分利用多核,并發(fā)變成將成為未來發(fā)展的趨勢,對于并發(fā)編程的支持,Erlang確實是不二之選,Erlang在國內(nèi)仍然較為小眾,經(jīng)典書籍相對也要少很多,最終選擇了《Erlang程序設(shè)計 第2版》作為了我的第一本Erlang入門書籍。
Erlang官方網(wǎng)站:http://www.erlang.org/
Erlang安裝:
對于Ubuntu和Debian發(fā)行版可采用:apt-get install erlang 來安裝;
對于其他 UNIX 和 Linux 平臺,可以下載源代碼并手工構(gòu)建它,具體如下所示:
Download:http://www.erlang.org/download.html
復(fù)制代碼 代碼如下:
1. 解壓源代碼:$ tar zxf otp_src_17.3.tar.gz
2. $ cd opt_src_17.3
3. $ ./configure
4. $ make
5. $ make install
Erlang是函數(shù)式編程語言,被設(shè)計主要用來解決自下而上的編寫并發(fā)式、分布式、容錯、可擴展和軟實時系統(tǒng)等問題。
由于之前沒有接觸過函數(shù)式編程,還是從簡單的順序編程一步步來吧。
Erlang進入shell編程環(huán)境很簡單,與Python類似,在終端直接輸入erl即可,退出可使用 Ctrl+c 再輸入 a 的方法,但這樣可能導(dǎo)致某些數(shù)據(jù)的破壞,最好使用 q().
注釋:%
變量:所有變量名都必須以大寫字母開頭,變量一經(jīng)賦值,不許改變,
模式匹配操作:
Lhs = Rhs 意思是計算右側(cè)的值,然后將結(jié)果與左側(cè)的模式相匹配;
X = Expression,如果X之前沒有被賦值,一定會匹配成功,X = AnotherExpression,則只有在Expression = AnotherExpression時才匹配成功,否則匹配失??;
浮點數(shù):
使用“/”給兩個整數(shù)做除法時,結(jié)果會自動轉(zhuǎn)換為浮點數(shù);
要從除法里獲得整數(shù),必須使用div和rem;例如:5 div 3. 結(jié)果為1,5 rem 3. 結(jié)果為2;
原子:
原子被用于表示常量值,具有全局性,原子以小寫字母開頭,后接一串字母,數(shù)字,下劃線或@符號;
原子可以放在單引號中,可以創(chuàng)建以大寫字母開頭或包含字母數(shù)字以外字符的原子,如:‘Monday',‘+',‘a(chǎn) test paper'等,原子的值就是它本身;
元組:
為了方便理解,元組最好加上標(biāo)簽,例如:{point, 10, 45}.
創(chuàng)建元組:F = {firstName, joe}. L = {lastName, Tom}. P = {person, F, L}.
提取firstName:{_, {_, Who}, {_, _}} = P.
列表:
列表中的各元素可以是任何類型,[H|T]中H為列表頭,T為列表尾,例如:
L = [{name, tom}, 1, 2.0, test, {point, 10, 23}].
[H|T] = L.
則,H = {name, tom}, T = [1, 2.0, test, {point, 10, 23}].
字符串:
字符串字面量就是用雙引號圍起來的一串字符,例如:
N = "Hello". "Hello"其實只是一個列表的簡寫,這個列表包含了代表字符串里各個字符的整數(shù)字符代碼。
X = [97, 98, 99] .
打印出"abc".
io:format("~w~n", ["abc"]).
打印出[97, 98, 99]
[H|T] = "cat". H = 99, T = "at".
f()讓shell忘記現(xiàn)有的任何綁定。