2011-09-04 43 views
12

我將建立一個系統使用Erlang(我的問題是可以解決的多CPU更好),我有脫脂通過:構建商業系統:純Erlang還是Erlang/OTP?

  1. 瞭解你一些二郎;
  2. 二郎/ OTP在行動
  3. 編程二郎(阿姆斯特朗);
  4. Erlang編程(Cesarini)。

的二郎山/ OTP在行動書(2)說:」 ......寫非OTP Erlang的代碼確實是一個高級的主題,以及東西應該當你真的真的要只這樣做也許。從來沒有做過非OTP的方式是一種福氣,因爲你會立即採取正確的習慣OTP的事情......「

(2)堅持商業系統應該只用OTP來構建,而(4)輕微地表明,OTP不是唯一的方法來做到這一點。另外,通過閱讀(4),我發現從Erlang非常基礎的知識構建知識有助於理解OTP如何工作(但不是以相反的方式)。

所以,問題是: 我應該選擇Erlang/OTP來構建一個商業系統還是可以用純Erlang來完成?

回答

34

可以用純Erlang來完成嗎?

是的,它可以,受Greenspun's Tenth Rule模擬:您的系統將包含一個特設非正式指定的,充滿錯誤的,執行慢OTP的一半。

35

學習和玩純Erlang。

在Erlang/OTP中構建系統。

+2

說得好,Mazen。 – RichardC

13

OTP是用Erlang編寫的,所以它絕對是可以在純Erlang中完成。這就是說,OTP爲您提供了許多有用的功能,您可能需要自己編寫這些功能。 @Alexey是正確的,你將最終實現OTP的一部分。問題在於,您構建OTP提供的容錯系統所需的框架本身必須是非常容易無故障。

我也會迴應@Mazen,在純Erlang中進行實驗時,您會很好地感受OTP內部正在發生的事情以及如何在Erlang中構建容錯系統。事後你會更好地使用OTP。您將更好地瞭解何時不是使用OTP,以及爲什麼。

2

如果你通讀「Learn You Erlang」(就像你說的那樣),你會注意到作者花費Designing a Concurrent Application章建立了一些在「簡單的Erlang」中有用的東西。然後在接下來的兩章中,他基本拋棄它,並且使用OTP來實現同樣的事情,代碼少得多(另外因爲它是OTP代碼,所以它是標準的 - 所以其他熟悉OTP的開發人員將會擁有它一個更好的想法在哪裏看明白!)

檢察官辦公室已經制定和完善了千年的很多(根據維基百科的初始版本1998)有大量的開發人員,以及大型國際公司(愛立信)的支持下,和同行評審爲它都是開源的。我認爲假設你可以單處理地構建同樣健壯和可擴展的東西,這會有點大膽!

所以使用OTP。即使是「玩」項目,仍然使用OTP,因爲它只能幫助你學會更好地使你的「商業」代碼:)