云計算應(yīng)該所具備的特質(zhì)如下:
1. 高負(fù)載
2. 正常運(yùn)轉(zhuǎn)
3. 容錯性
4. 分布式
5. 容易伸縮
Erlang(讀音:['?:læ?]厄蘭,中文意思為:占線小時(話務(wù)負(fù)載單位))正是由于它屬于開放的電信業(yè)務(wù)平臺,也就不難理解它的意義了。幾乎完全具備以上特質(zhì),而且它也是典型的函數(shù)式語言。和我們OOP的思想有著截然不同的概念。在以下的學(xué)習(xí)過程中主要還是以《Erlang程序設(shè)計》這本書作為一個學(xué)習(xí)的依據(jù)。
原子
定義:在Erlang中原子用來表示不同的非數(shù)字常量值。這里說白了其實(shí)就是一種常量的定義。Erlang中原子是全局有效的,不需要像以前c/c++那樣通過宏來定義或者包含文件。在定義原子的時候只需要注意以下一些特點(diǎn)就可以:
1. 一般情況原子是以一串以小寫字母開頭,后面有數(shù)字、字母、下劃線、郵件符號(@);
2. 使用單引號引用起來的字符也屬于原子,例如’Monday’;
3. 一個原子的值就是原子本身;
元組(tuple)
定義:首先它是Erlang中具有特質(zhì)的一個定義,如果說把它和我們java中的一個JavaBean來類比可能稍顯類似,書上引用的是c語言數(shù)據(jù)結(jié)構(gòu)來解說元組的結(jié)構(gòu),盡管非強(qiáng)淺顯能看懂。但是作為一個java程序員我覺得采用自己熟悉的語言結(jié)構(gòu)來對比,學(xué)習(xí)效果更佳吧(對于記憶有很大幫助)。
比如我們一般對于JavaBean的定義是如下結(jié)構(gòu):
public class Person {
private String name;
private int height;
private int footSize;
private String eyeColor;
// get/set...
}
那在我們引用定義的時候就可以直接:
Person person1=new Person();
person1.setName("yeshucheng");
person1.setHeight(111);
person1.setFootSize(40);
person1.setEyeColor("black");
......
與之相對應(yīng)的是我們使用Erlang來定義了,對于Erlang的定義就截然和c/c++或者java有著明顯不同,相對于更加精煉明了:(這里我直接使用書上說的所謂二元組)
Person={person,{name,yeshucheng},{height,111},{footsize,40},{eyecolor,black}}.
沒錯,就是這么直截了當(dāng)?shù)膩矶x,甚至賦值(嚴(yán)格說Erlang不能這么說,但是為了好記憶可以這么理解)
對于以上的定義這里要說明注意的地方:
1. 定義元組,元組中字段沒有名字,通常可以使用一個原子作為元組的第一元素來標(biāo)明(請注意這里花括號內(nèi)第一原子都是解釋逗號后面一個說明),這個元組所能代表的含義就是上面列出的程序定義了。
2. 創(chuàng)建元組,在聲明元組的同時其實(shí)已經(jīng)創(chuàng)建了元組,這個也是Erlang的一大特點(diǎn)之一了。如果不再使用,也隨之銷毀。Erlang使用的垃圾搜集器去收回沒有使用的內(nèi)存。
如:F={firstName,wan}
L={lastName,andy}
P={person,F,L}//這里就應(yīng)對我們第一條說明的一樣第一個名稱表示就是后面所有逗號的整體列舉,如果在Erlang環(huán)境中對于上面寫完后,直接敲回車(語句結(jié)束后存在”.”這里稍微注意下)就會得到以下結(jié)果,正好印證我們所說明這這個問題了
==》{persong,{firstName,wan},{lastName,andy}}.
如果在創(chuàng)建過程中存在一個未定義的變量,則程序編譯就會產(chǎn)生錯誤。
3. 提取元組的字段值,剛才我們在程序中有定義一個Person的元組而且也設(shè)置值了,現(xiàn)在如果我們想得到或者說提取我們的值,那需要如何而做呢?首先我們采用基本的元組方式來試著看看如下:
1> Point={point,10,45}.
2> {point,X,Y}=Point.
3> X.
10
4> Y.
45
注明:這里又再次強(qiáng)調(diào)下point逗號后面的都是為他而說明的。
1>Person={person,{name,yeshucheng},{height,111},{footsize,40},{eyecolor,black}}.
2>{_,{_,Who},{_,_},{_,_},{_,_}}=Person.
3>Who.
yeshucheng
說明下,如果上面想得到的是值,那么位置響應(yīng)對號入座然后Who換成What就成(我開始也犯錯誤,編譯立馬出錯,后來想想用過一個What試試,果然正確,呵呵)。
列表
定義:列表第一個元素稱為列表的頭(head),后部分稱為列表尾(tail),一般[H|T]來標(biāo)示列表了。
注:列表的頭可以是任何東西,但是列表的尾通常還是一個列表。
至于具體的細(xì)節(jié)問題還是需要找找相關(guān)文檔看下為好,它的概念牽涉到后面的非常多的定義了。
posted on 2008-12-09 10:20
葉澍成 閱讀(1014)
評論(0) 編輯 收藏 所屬分類:
erlang學(xué)習(xí)