Erlang在1991年由愛立信公司向用戶推出了第一個版本,經過不斷的改進完善和發展,在1996年愛立信又為所有的Erlang用戶提供了一個非常實用且穩定的OTP軟體庫並在1998年發布了第一個開源版本。 (推薦學習:go)
目前Erlang同時支援的作業系統有linux,windows,unix等,可以說適用於主流的作業系統上,尤其是它支援多核心的特性非常適合現在的多核心CPU,而分散式特性也可以很好地融合目前的各種分散式群集。
Go語言是程式語言設計的另一個嘗試,是對類別C語言的重大改進,它不但能讓你存取底層作業系統,還提供了強大的網路程式設計和並發程式支援。 Go語言的用途眾多,可進行網路程式設計、系統程式設計、並發程式設計、分散式程式設計。
Go語言的推出,旨在不損失應用程式效能的情況下降低程式碼的複雜性,具有「部署簡單、並發性好、語言設計良好、執行效能好」等優勢,目前國內諸多IT 公司均已採用Go語言開發專案。
Erlang和golang的區別:
第一對鎖的態度不同,第二對非同步IO的態度不同,第三訊息機制不同。 Erlang對鎖非常反感,認為變數不可變可以很大程度上避免鎖。
Golang的觀點是鎖確實有很大的負擔,但是鎖基本上是無法避免的,一旦有人共享狀態並且互相搶佔去改變他,這時候鎖是必須存在的。
Erlang伺服器是單一進程的,是邏輯上就沒有並發的東西,一個Process就是一個執行體,所以Erlang的伺服器和golang的伺服器不一樣,golang的伺服器是多進程的(goroutine)一起構成的一個伺服器。每個請求建立一個獨立的進程(goroutine)。
但是Erlang不同,一個伺服器就是一個單一進程的,所有的並發請求都進入到了進程郵箱,然後這個伺服器從進程郵箱裡取郵件(請求的內容)處理,Erlang的伺服器並沒有並發的請求,所以不需要所鎖。
Erlang的高並發實現,第一:每個Erlang的實體進會有很多的伺服器,每個伺服器是互相無幹擾的,他們可以並發。第二是單一伺服器高並發使用的是非同步IO。
go認為何時都不應該有非同步IO的程式碼,Erlang則是在非同步IO的基礎上加上輕量級進程模型的混雜。
Golang對並發的支持,第一:價值回歸,golang最重要的事情是讓執行成本降低,golang的堆疊最小可以到4K。
第二:以執行體當作語言內建的標準設施(golang的程式碼風格只有標準化得一種)。 go得並發模型是最古老的並發模型,該並發模型包括,routine,原子操作,互斥體,同步,訊息,同步IO。
以上是golang和erlang區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!