読者です 読者をやめる 読者になる 読者になる

スレッド・並行プログラミング/ マルチコア・並列プログラミングを学びはじめるためのN冊

読みたい本のリストを作ってる(いくつかは購入済み)。
なんかおすすめあったら教えてください。
でもこういうのってリスト作って仕事した気になって満足してしまう。

並列と並行

学びはじめる前なんだから当然よくわかってはいないんでけど、並列と並行処理の違いは以下で認識してる

(追記) 孫引きなんだけど「コーディングを支える技術 171P」に「プログラミング言語の概念と構造」から引用した記述があった

http://gyazo.com/dbf1893414269d7dabd16e41021d7bde.png

ここでは並行→プログラミング上の概念、並列→ハードウェアレイヤーの話となっていますね。

並列処理・並行処理がプログラミングに必要な理由

  • マルチコアを生かしたパフォーマンスの向上
  • 大規模なデータの処理
  • GUIアプリケーションのユーザビリティの向上
  • 本来非並行処理で書くと複雑なタスクをわかりやすくする
  • ハードウェアリソースの節約(複数台で処理をしている場合)

関係ありそうなキーワード(あとで地引く)

Java

Javaはスレッドまわりのトピックがよく取り上げられていた

増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編

結城さんの本なので入門にいいのではという思い込みがある。

Java並行処理プログラミング

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

プロフェッショナルの人達からも評判がいい。

Clean Code

Clean Code アジャイルソフトウェア達人の技

Clean Code アジャイルソフトウェア達人の技

スレッドを使った「同時並行性」の話題にさかれている章がある

Effective Java

Effective Java 第2版 (The Java Series)

Effective Java 第2版 (The Java Series)

おなじく

Objective-C

アップル公式ドキュメント翻訳
スレッドプログラミングガイド
https://developer.apple.com/jp/devcenter/ios/library/documentation/Multithreading.pdf
並列プログラミングガイド
https://developer.apple.com/jp/devcenter/ios/library/documentation/ConcurrencyProgrammingGuide.pdf

これはConcurrency Programming Guideなので並行の訳のがいいと思う。

エキスパートObjective-Cプログラミング ― iOS/OS Xのメモリ管理とマルチスレッド

エキスパートObjective-Cプログラミング ?iOS/OS Xのメモリ管理とマルチスレッド?

エキスパートObjective-Cプログラミング ?iOS/OS Xのメモリ管理とマルチスレッド?

詳解 Objective-C 2.0 第3版

詳解 Objective-C 2.0 第3版

詳解 Objective-C 2.0 第3版

だいたい網羅されているので「並列プログラミング」の章もある。

C#

C#によるマルチコアのための非同期/並列処理プログラミング

Windows、.NET系のAPIについて。
非同期=並行/ 並列 という割り切った用語を使っているみたい

プログラミングC# 第6版

プログラミングC# 第6版

プログラミングC# 第6版

「スレッドおよび非同期コード」の章がある

C

並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング

並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング

並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング

OpenMPなどのライブラリを使ってソートやサーチアルゴリズムを並行化する。

Pthreadsプログラミング

Pthreadsプログラミング

Pthreadsプログラミング

pthred本。古いけど評判はいい。

C++

インテル スレッディング・ビルディング・ブロック ―マルチコア時代のC++並列プログラミング

インテル スレッディング・ビルディング・ブロック ―マルチコア時代のC++並列プログラミング

インテル スレッディング・ビルディング・ブロック ―マルチコア時代のC++並列プログラミング

テンプレートを使ったスレッドライブラリらしい。どの程度流行ってるのかは知らない。

構造化並列プログラミング―効率良い計算を行うためのパターン*1

構造化並列プログラミング―効率良い計算を行うためのパターン

構造化並列プログラミング―効率良い計算を行うためのパターン

OpenMP* やインテル® TBB、インテル® Cilk™ Plus などによるパターンの実装例

プログラミングErlang

プログラミングErlang

プログラミングErlang

「並行プログラミング」の章がある

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版

「アクターと並行プログラミング」の章がある

The Art of Multiprocessor Programming 並行プログラミングの原理から実践まで

The Art of Multiprocessor Programming 並行プログラミングの原理から実践まで

The Art of Multiprocessor Programming 並行プログラミングの原理から実践まで

例のアスキーの鈍器本シリーズの1つっぽい。
今の時点で手を出すのは背伸びっぽい内容なので置いておく。

マルチコアCPUのための並列プログラミング―並列処理&マルチスレッド入門

マルチコアCPUのための並列プログラミング―並列処理&マルチスレッド入門

マルチコアCPUのための並列プログラミング―並列処理&マルチスレッド入門

WEB+DB PRESS Vol.52

WEB+DB PRESS Vol.52

WEB+DB PRESS Vol.52

「特別企画〜そろそろ押さえてみませんか?〜マルチコア時代の並列処理アルゴリズム入門」という企画ページがある

コーディングを支える技術

「並行処理」の章がある

Rubyアプリケーションプログラミング*2

Rubyアプリケーションプログラミング

Rubyアプリケーションプログラミング

Seven Concurrency Models in Seven Weeks: When Threads Unravel *3

http://pragprog.com/book/pb7con/seven-concurrency-models-in-seven-weeks
「7つの○○ 7つの世界 」シリーズかな? アクター、関数型プログラミング、スレッド、Clojureの実装(どういうものか把握しておらず)、などの並行処理の実現のモデルごとに、その世界観を順番に見ていくような内容らしい。

今ベータ段階で6章まで書かれていた、人気シリーズっぽいので翻訳きそうだけど来年移行かな。なので今読みたいなら原書に挑戦か。

Parallel and Concurrent Programing in Haskell

以下で知った。よさそう。



FAQ

そんなに読む必要が?
自分で決めろや



おしまい。