2013-08-26 80 views
4

我想認真地開始現實世界多線程/並行/併發編程。我的意思是喜歡嘗試解決並行真正的問題,同時,不只是學習的pthreadMPI,鎖具,種族低層次的細節等或學術,教科書的例子。關於並行編程的低級機制,事實上,我寧願不知道任何關於它們的東西,只是堅持更像Actor模型:)。從哪裏開始嚴重併發(多線程,並行?)編程

我聽說一些編程語言本質上是喜歡什麼,我找他們的範式是看手頭的問題在並行(併發多線程,多處理)的方式,並提供語言水平的工具並構造爲並行執行任務(例如Erlang的概念是process作爲語言結構?)。

我看中了一個類型系統像斯卡拉的語言......我知道PHP非常好,我以前做了很多C/C++編碼的。我有Scala和Java的工作知識,我可以閱讀Haskell,但我不是特別精通它。我對功能範式非常熟悉,我願意學習更多。我也對有關並行/併發的高層次理論討論感興趣。

+0

的Node.js會幫助你..希望 – Backtrack

+1

解決現實世界的問題不理解在其高級別的結構是建立在真實世界的原語是,通常會產生不熟練的解決方案的快捷方式。如果你急於部署某些東西,好吧。否則,如果你只把錘子在你的工具箱,所有的問題看起來像.... –

+0

@RexKerr我的理解是一個可以做的很好使用Actor模型沒有太多鑽研到的Actor模型是如何在實現細節的方式某個平臺。有點像學習Java而不是字節碼。但如果我錯了,請一定糾正我。 –

回答

2

我想先提掉水貨!=併發。他們是密切相關的概念,但並行計算是從併發計算並行控制流同時發生同時可能交錯,但可能是並行。一頭細細的頭髮分裂,但一個重要的理解。

...提供語言級別的工具和結構來實現並行任務(例如二郎具有作爲一門語言構造過程的概念?)。

Erlang'process'是一個輕量級,內存隔離的綠色線程。該語言不提供共享內存結構;數據通過「消息」在併發的控制流之間傳遞。通知被稱爲「併發」。 Erlang被明確地設計成一種併發語言,並且恰好如此,它將並行地安排一些控制流程 - 它們將1:1映射到進程上。 Erlang並不是而是可以讓你明確地控制調度,這與線程模型不同。

很難知道你在找什麼 - 你的問題是相當廣泛的 - 但你提到的任何語言(除了可能是PHP?)都可以讓你利用多個肯定會坐着的CPU在你的電腦裏。選擇幾個專注,期望花幾年時間學習並去做。

+0

我認爲我追求的是一門語言,教會我*並行/同時思考*,併爲我提供編碼這些思想的工具,而不是一門教會我用前一種語言實現範例。 –

+1

然後,'Erlang'就是你需要的......兄弟。 –