Grokking Concurrency¶
Python、Java、C#、Scala、F#、Rust、Haskell、Clojure で学ぶ並行処理プログラミング
概要¶
本サイトは「Grokking Concurrency」(Kirill Bobrov 著)の学習コンパニオンとして、並行処理プログラミングの概念を複数の言語で実装しながら日本語で解説します。
多言語統合解説¶
8 つの言語を横断的に比較し、並行処理の本質と言語固有の表現を統合的に解説します。
| Part | トピック | 統合記事 |
|---|---|---|
| I | 並行処理の基礎 | 逐次処理の言語別比較 |
| II | プロセスとスレッド | スレッド生成・管理の API 比較 |
| III | マルチタスキング | イベント駆動モデルの比較 |
| IV | 並列パターン | Fork/Join・パイプラインの比較 |
| V | 同期と排他制御 | Lock/STM/所有権の比較 |
| VI | ノンブロッキング I/O | Reactor パターンと I/O モデル比較 |
| VII | 非同期プログラミング | async/await と Future/Promise 比較 |
| VIII | 分散並列処理 | MapReduce と並列コレクション比較 |
詳細は 多言語統合解説 概要 を参照
言語別学習ガイド¶
| 言語 | 特徴 | 主要な並行処理機能 |
|---|---|---|
| Python | 動的型付け、シンプル | threading, multiprocessing, asyncio |
| Java | JVM、エンタープライズ | ExecutorService, CompletableFuture |
| C# | .NET、モダン構文 | Task, async/await, TPL |
| Scala | 関数型+オブジェクト指向 | Future, Akka Actor |
| F# | .NET 関数型 | Async, MailboxProcessor |
| Rust | メモリ安全、ゼロコスト | std::thread, Rayon, tokio |
| Haskell | 純粋関数型 | STM, async, forkIO |
| Clojure | Lisp 系、JVM | atom, ref/STM, core.async |
学習トピック¶
本シリーズでは以下のトピックを扱います:
| Part | トピック | キーワード |
|---|---|---|
| I | 並行処理の基礎 | 逐次処理、パフォーマンス測定 |
| II | プロセスとスレッド | Process、Thread、スレッドプール |
| III | マルチタスキング | タイムシェアリング、スケジューリング |
| IV | 並列パターン | Fork/Join、パイプライン |
| V | 同期と排他制御 | Lock、Semaphore、デッドロック |
| VI | ノンブロッキング I/O | イベントループ、Reactor |
| VII | 非同期プログラミング | asyncio、async/await |
| VIII | 分散並列処理 | MapReduce、分散処理 |
参考資料¶
- Grokking Concurrency - 原著(Manning Publications)