七周七語言(6)
函數式編程的特點
1 一切都是函數,沒有對象的概念
2 給定相同的輸入產生相同的輸出
3 函數沒有內部狀態,函數沒有副作用
在erlang來說,繼承了函數式編程的特點,同時增加了一條,elang函數變量只能賦值一次
erlang繼承了prolog的思想,在prolog語言中,有三種元素——原子,變量,列表,erlang也是一樣,
同時也繼承了其語法和強大的模式匹配功能,這些特色都是來自與prolog
如果說 erlang本身的特色的,主要包括以下幾點:
1 沒有線程,都是輕量級進程
沒有線程就意味無資源共享,極大的簡化了并發編程以及增加了并發執行的效率,對于并發實現來說,主要是創建一個輕量級進程。這個我比較好奇,這個和操作系統本身的進程之間的關系。
本身來說,操作系統都是提供進程,erlang這個輕量級進程和操作系統之間的進程不知道有什么關系,是不是自己實現的
2 動態熱拔插以及穩定性高
動態語言都有這個都具有熱拔插的功能,這個是動態語言的最大優勢。但是erlang貌似是編譯執行的,難道引用執行的此模塊的系統都能夠及時感知?
對于穩定性,可能語言核心相對比較小,微內核的,所以有很高的穩定。
3 錯誤處理機制以及進程自動重啟
在遇到錯誤的時候,java很多語言通過顯示定義異常或者在運行時候拋出異常,通過應用程序撲捉來決定如何,erlang則是不處理,進程直接奔潰,然后在重啟進程,主要還是因為函數式編程,都是無狀態,重試多少次結果都一樣
至于強大的并發編程模型,也就是actor模型,和scala很是類似,發送方異步發送消息,接收方通過模式匹配來接受消息
浙公網安備 33010602011771號