4

現実世界でマルチスレッド/並列/並行プログラミングを真剣に始めたいと思います。つまり、実際の問題を並行して並行して解決しようとするようなものであり、 pthreador MPI、ロック、レースなどの低レベルの詳細や学術的な教科書の例について学ぶだけではありません。並列プログラミングの低レベルのメカニズムに関しては、実際、私はそれらについて何も知らずに、アクター モデルのようなものに固執したいと思っています :)。

一部のプログラミング言語は本質的に私が探しているものに似ており、それらのパラダイムは目前の問題を並列 (並行、マルチスレッド、マルチプロセス) 方式で調べ、実装するための言語レベルのツールと構造を提供することであると聞いたことがあります。並行してタスクを実行します (たとえば、Erlang にはprocess言語構造としての概念がありますか?)。

私は Scala のような型システムを備えた言語が好きです... 私は PHP をよく知っており、以前は C/C++ で多くのコーディングを行っていました。私は Scala と Java の実践的な知識があり、Haskell を読むことはできますが、特に得意ではありません。私は機能的パラダイムに精通しており、さらに多くのことを学びたいと思っています。また、並列処理/並行処理に関する高度な理論的議論にも興味があります。

4

1 に答える 1

2

その並列 != 並行性について最初に言及したいと思います。これらは密接に関連する概念ですが、並列計算は、制御の並列フローが同時に発生する一方で、並列計算はインターリーブされる可能性がありますが、並列になる可能性があるという点で、同時計算とは異なります。割るには細い髪ですが、理解することが重要です。

... タスクを並行して実装するための言語レベルのツールと構成要素を提供します (たとえば、Erlang には言語構成要素としてプロセスの概念がありますか?)。

Erlang の「プロセス」は、軽量でメモリ分離されたグリーン スレッドです。この言語は共有メモリ構造を提供しません。データは、「メッセージ」を介して同時制御フロー間で渡されます。通知は「同時」と言われます。Erlang は並行言語として明示的に設計されており、たまたま、いくつかの制御フロー (プロセスに 1:1 でマッピング) を並行してスケジュールします。Erlang では、スレッド モデルとは異なり、スケジューリングを明示的に制御することはできません。

あなたが探しているものを知るのは難しいです-あなたの質問はかなり広いです-しかし、あなたが言及した言語のいずれか(おそらくPHPを除く)は、あなたのコンピュータに確かに座っている複数のCPUを活用することを可能にします. 集中するものをいくつか選び、数年かけて勉強することを期待して、それを目指してください。

于 2013-08-26T06:26:28.850 に答える