Erlang編程語言的第一印象
和朋友切磋高并發(fā)的時候,又一次涉及了Erlang,Erlang出自名門愛立信,具有穩(wěn)定性極高的虛擬機和平臺庫,F(xiàn)acebook用它實現(xiàn)了聊天系統(tǒng),Amazon 開發(fā)了SimpleDB,最令人驚嘆的是What'sApp了,高并發(fā)的處理機制令人矚目,是時候了解一下Erlang了。
世界是并行的,Erlang程序反應了我們思考和交流的方式,人作為個體通過發(fā)送消息進行交流,如果有人死亡,其他人會注意到。
Erlang里的模塊類相當于OOPL中的類,進程相當于OOPL里的對象或類實例。
并發(fā)編程可以用來提升性能,創(chuàng)建可擴展和容錯的系統(tǒng),以及編寫清晰和可理解的程序來控制現(xiàn)實世界里的應用。
并發(fā)程序是以一種并發(fā)編程語言編寫的程序,并發(fā)編程語言擁有用于編寫并發(fā)程序的語言結(jié)構(gòu)。Erlang的并發(fā)程序是由互相通信的多組順序進程組成,一個進程就是一個輕量級的虛擬機,可以執(zhí)行單個的Erlang函數(shù),只能通過發(fā)送和接收消息來與其他進程通信。也就是說,并發(fā)性是由Erlang虛擬機提供的,并操作系統(tǒng)的并發(fā)控制粒度要小很多。
在Erlang里:
1) 創(chuàng)建和銷毀進程是非常快的
2) 在進程間發(fā)送消息是非??斓?br />
3) 進程在所有操作系統(tǒng)上都具有相同的行為方式
4) 可以擁有大量的進程
5) 進程間不共享內(nèi)存,是完全獨立的
6) 唯一的溝通方式是消息傳遞,每個進程都有一個郵箱與進程同步創(chuàng)建。
動態(tài)代碼載入是Erlang特性之一,函數(shù)調(diào)用的總是最新模塊里的最新版函數(shù),哪怕當代碼在模塊里運行時重新編譯了該模塊也是如此。