非同期処理の歴史から見たコンピューティングの進化 accepted

Abstract

このセッションは非同期処理ツールの歴史を振り返り、理解を深めることで楽しいと感じるきっかけになることを目指しています。非同期処理は難しくてツラいだけではなく、楽しくて知的な探究心を刺激してくれる可能性のある分野です。繰り返しますが非同期処理は難しいです、ツラいです。でも技術的に挑戦しがいがありコンピュータの低レベル処理にも関わる面白さがあります。

現代のプログラミングは非同期処理を行うことが当たり前になってきたと言えるかもしれません。例えばJavaScriptのpromise、async/await。 AndroidではRxJava、Coroutine。JavaはReactive Streams、goはgoroutineなどなど。

非同期処理ツールはUIであれば画面をフリーズさせないため、バックエンドであれば貴重なリソースであるOS Threadを無駄遣いしないためなど、重要な役割を果たします。しかしツールは次から次に新しいものが登場し、それぞれの違いがわからないと感じる人もいるでしょう。あるいは非同期処理自体の難しさに物怖じしてしまう人もいるかと思います。

そういった非同期処理に苦手感を持っている人のために、体系だった知識と理解を得るきっかけにしてもらいたい、そして非同期処理を楽しいと感じてもらいたいというのが本セッションの趣旨です。もちろん非同期処理全体に詳しくなることによって非同期の落とし穴にハマる可能性は減るでしょう。しかし私はそれより楽しいと感じるきっかけをつかんでもらう事が重要だと思っています。それぞれのツール開発の歴史にひそむ苦労と発明の背景を知って、なにか一つでも興味を持ってもらえる項目があれば嬉しいです。

このセッションでは非同期処理ツールの歴史を、直にThreadを扱うような原始的なツールが出てきた時代から振り返り、それぞれのツールが解決してきた問題、できなかった問題、次の時代のツールが必要になった理由を紹介します。単にツールの紹介でなく内部の処理、現実世界に即した問題や開発者たちの試行錯誤の例を挙げ、またマルチコアCPU、クラウド、モバイルの普及といった時代背景を交えて説明していきます。それはまたコンピューティング進化の過程を知り、またOSやCPUなどコンピュータの低レベルな処理に近づくことでもあります。知れば知るほど非同期処理は楽しくなるかもしれません。私自身も新卒後9年間はシングルスレッドのみの世界で生き非同期処理に怯えてきましたが、今では非同期処理を知識を深めることが楽しいと感じています。

このセッションでは以下のような項目をカバーする予定です。私はScalaプログラマなので、JavaやScalaでの話が中心になりますが他の言語や開発環境の話も交えていきます。

  • Concurrency tool 年表
  • Concurrency tool high-level vs. low-level 分類表
  • Thread, Mutex, Semaphore, lock, synchronized
  • Atomic variables, volatile
  • Thread間共有オブジェクトとThread-safe collections
  • Executor
  • HTTP serverのConnection per threadモデルとc10k問題
  • Nginx, node.js
  • callback hell
  • 簡潔な記法の追求の歴史
  • 堅牢な非同期処理追求の歴史
  • immutable objects and functional programming
  • RxJava/JS
  • Scala Future
  • GUI threading
  • JavaScript promise/async/await
  • Akka ActorとThread間共有オブジェクトの話再び
  • Stream処理全盛時代
  • Blocking vs. Non-blocking (非同期だがブロッキングな処理について)
  • データベーストランザクションで同期を取るモデル
  • Actorを使ったアプリケーション側で同期を取るモデル
  • 未来の技術...Java fiber, etc

Video
Session Information
Confirmed confirmed
Starts On 8/30/19, 2:30 PM
Room Seminar Room 1204
Session Duration 50 min session
Spoken Language Japanese
Interpretation Unavailable
Slide Language Japanese