2013-08-26 75 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'就是你需要的......兄弟。 –