“為什麼卡爾達諾用Haskell?難道IOHK將永遠運行Cardano項目?
“為什麼卡爾達諾用Haskell?難道IOHK將永遠運行Cardano項目?Haskell程式師的數量也是有限的,
答:構成卡爾達諾的協議是分散式的,與密碼術捆綁在一起並且要求高度的容錯性。Haskell因其滿足這些要求而被選中。例如,Haskell是一種程式設計語言,它支援strong type system,同時具有合理的容錯能力。另外,Haskell的libraries在過去幾年中已經發展到編寫生產應用程式。此外,專注于Haskell的開發人員是一群經過良好的培訓,
為何選用HASKELL?
組合卡爾達諾的協議是分散式的,與密碼學結合在一起,需要高度的容錯能力。在最佳的日子裡,仍然會有拜占庭式的參與者、格式錯誤的消息和錯誤的客戶,于無意中在網路上造成某種形式的havok。
首先,
隨著Cloud Haskell的推出,Haskell獲得了許多Erlang的優勢,而不是屈服於自身。此外,Haskell的模組化和可組合性使我們能夠為卡爾達諾使用更羽量級的定制庫,稱之”Time Warp”。
其次,由於廣泛的商業實體,如Galois、FP Complete和Well-Typed,Haskell的文庫在過去幾年中已經有很大的進展。
第三,PureScript的快速發展為JavaScript世界提供了一個非常需要的橋樑,類似於Clojurescript給予的Clojure。我們期待PureScript可在讓卡爾達諾於流覽器中運作,並在開發手機錢包時尤為重要。
第四,於依賴解決方案方面,Haskell在過去幾年中一直受到像Michael Snoyman這樣的技術專家的技術支援,通過一個叫做堆疊的平臺,這個平臺很容易使用,並且得到了FP Complete的良好支援。
第五,除了足夠的依賴解決方案之外,
最後,專業從事Haskell的開發人才庫相當龐大,相當於同行 - 而且訓練有素,具有相應的學術和行業資質。它也充當能力篩檢程式,因為在沒有電腦科學的詳細知識的情況下,
Cloud Haskell平臺
Cloud Haskell,Haskell中的Erlang式併發和分散式程式設計。Cloud Haskell平臺由 通用網路傳輸API,用於向遠端節點發送靜態封閉的庫,用於分散式程式設計的豐富API以及在Erlang的開放式電信平臺之後建模的一組平臺庫組成。
最初由Cloud文章中的Hasksell聯合描述,Cloud Haskell從頭開始重新編寫,並支持豐富且越來越多的功能,
- 使用非同步消息傳遞構建併發應用程式- 建立分散式運算應用- 構建容錯系統- 在各種網路傳輸中運行Cloud Haskell節點- 與幾個網路傳輸實現一起工作(還有更多正在進行中)- 支援靜態值(遠端通訊所需)Cloud Haskell包含以下元件,其中一些是完整的,另一些是實驗性的。有三個主要部分:
核心庫
- 分散式進程:基礎併發和分發支持。它提供了一些從Erlang中知道的原始類似link和monitor。- 分散式靜態:支援靜態值- rank1dynamic:像Data.Dynamic和Data.Typeable,但是支持多態值平臺庫
- 分散式進程用戶端伺服器:像Erlang這樣的通用用戶端/伺服器模式gen_server- 分散式進程非同步:未來風格的計算- 分散式進程任務:一個工作隊列- 分散式進程附加功能:監控,日誌記錄,解析名稱等- 分散式進程註冊表:一個鍵值註冊表- 分散式流程執行:負載調節,工作流程,切換等網路層
網路傳輸:通用Network.TransportAPI
network-transport-tcp:TCP的實現Network.Transport
網路傳輸記憶體:記憶體實現Network.Transport(不完整)
網路傳輸組成:組成兩個傳輸(非常初步)
分散式進程simplelocalnet:本地網路的簡單後端
分散式進程Azure:Cloud Haskell的Azure後端(概念驗證)
Cloud Haskell的目標之一是將傳輸層與進程層分開 ,以便傳輸後端完全獨立。實際上,其他項目可以並重複使用傳輸層,即使它們不使用或具有其自己的進程層。
通過傳輸層進行抽象允許消息傳遞的不同協定,包括TCP / IP,UDP, MPI, CCI, ZeroMQ,SSH,MVars,Unix管道等等。這些傳輸中的每一個都提供了它自己的Network.TransportAPI 實現,並提供了創建新的連接以便在其中使用的方法Control.Distributed.Process。
Cloud Haskell從頭開始重新編寫,並支持豐富且越來越多的功能,- 使用非同步消息傳遞構建併發應用程式- 建立分散式運算應用- 構建容錯系統- 在各種網路傳輸中運行Cloud Haskell節點- 與幾個網路傳輸實現一起工作(還有更多正在進行中)- 支援靜態值(遠端通訊所需)Cloud Haskell包含以下元件,其中一些是完整的,另一些是實驗性的。有三個主要部分:
核心庫
- 分散式進程:基礎併發和分發支持。它提供了一些從Erlang中知道的原始類似link和monitor。- 分散式靜態:支援靜態值- rank1dynamic:像Data.Dynamic和Data.Typeable,但是支持多態值平臺庫
- 分散式進程用戶端伺服器:像Erlang這樣的通用用戶端/伺服器模式gen_server- 分散式進程非同步:未來風格的計算- 分散式進程任務:一個工作隊列- 分散式進程附加功能:監控,日誌記錄,解析名稱等- 分散式進程註冊表:一個鍵值註冊表- 分散式流程執行:負載調節,工作流程,切換等網路層
網路傳輸:通用Network.TransportAPI
network-transport-tcp:TCP的實現Network.Transport
網路傳輸記憶體:記憶體實現Network.Transport(不完整)
網路傳輸組成:組成兩個傳輸(非常初步)
分散式進程simplelocalnet:本地網路的簡單後端
分散式進程Azure:Cloud Haskell的Azure後端(概念驗證)
Cloud Haskell的目標之一是將傳輸層與進程層分開 ,以便傳輸後端完全獨立。實際上,其他項目可以並重複使用傳輸層,即使它們不使用或具有其自己的進程層。
通過傳輸層進行抽象允許消息傳遞的不同協定,包括TCP / IP,UDP, MPI, CCI, ZeroMQ,SSH,MVars,Unix管道等等。這些傳輸中的每一個都提供了它自己的Network.TransportAPI 實現,並提供了創建新的連接以便在其中使用的方法Control.Distributed.Process。