世界を動かす技術を、日本語で。

ビッグOOPs: 35年間の誤りの解剖

概要

  • Better Software Conferenceでのプレゼン動画が公開
  • 歴史的背景を重視しつつ2時間以内に収めた内容
  • Smalltalkなど一部の詳細エピソードは割愛
  • 追加資料や未公開ドキュメントの共有も検討中
  • 参考となる4つの歴史資料を紹介

Better Software Conference プレゼン動画公開のお知らせ

  • Better Software Conference での自分のプレゼン動画が YouTube で公開
  • プレゼンの 全編視聴 が可能(リンク:YouTube動画
  • 2時間以内 に収めるため、歴史的な正確性を維持しつつも内容を厳選
  • 重要性が高くないエピソードや Smalltalkの開発経緯 などは割愛
  • プレゼン準備のため、 数百〜千ページ超 の資料を調査・整理

プレゼンに盛り込めなかった内容と今後の計画

  • プレゼン外にも 共有したいエピソードや資料 が多数存在
  • 今後、 ライブ配信 で未紹介ドキュメントを解説する案を検討中
  • 視聴者からの コメントやフィードバック を募集中
  • プレゼン内容に興味を持った方に向けて、 4つの歴史資料 を推奨

推奨する歴史資料4選

  • The Early History of Smalltalk

    • Alan Kayによる Smalltalk開発の回顧録
    • C++ の普及により割愛したSmalltalkの詳細な経緯を知るのに最適
    • 付録付きPDF を推奨(インターネット上には付録なしも多いため注意)
  • A History of C++

    • Bjarne Stroustrupによる C++の開発史
    • 書籍『The Design and Evolution of C++』の第1章に相当
    • 本格的にC++の歴史を学びたい場合は 書籍の購入 を推奨
  • The Development of the Simula Languages

    • Ole-Johan DahlとKristen Nygaardによる Simula IおよびSimula 67の開発記録
    • クラス仮想関数 が初めて登場した経緯を記述
  • Origins of the APT Language for Automatically Programmed Tools

    • Douglass T. Rossによる APT言語の開発史
    • 1956年秋の「plex」開発が、 高度に構造化されたデータによるプログラミング の最初期事例として紹介

構造化データとその歴史的意義

  • 「plex」以前の 構造体的な概念 の事例については調査に限界
  • データを単なる記録としてではなく、 プログラムの動作を支援する構造体 として扱う発想の初出に興味
  • もし「plex」より早い事例を知っている方は 情報提供を希望

プレゼンの運営方針

  • 運営側から時間制限はなかった が、2時間超のプレゼンは長すぎると自己判断
  • コンパクトかつ本質的な内容の提供を重視

ご意見・ご質問 はコメント欄まで。今後のライブ配信や追加資料公開にもご期待ください。

Hackerたちの意見

面白いね。プレゼンターは、クラス階層がドメインモデルに対応するのが好きじゃないみたい。彼は、これがOOPの重要な特徴だと思っているようで、Smalltalkの支持者たちの引用を持ち出してる。でも、Smalltalkの世界ですら、OOPが実際に何かについて合意できてなかったんだよね(Kayの発言とSmalltalk-76ffの実際のアーキテクチャを比べてみて)。Smalltalkが重要性を失ったのもあっという間だったし、これ以上言及する必要はないと思う。むしろ、IEEEみたいな信頼できる業界団体を見た方がいいよ。彼らは自分たちの基準やベストプラクティスを発表してるから。例えば、OOPのマイルストーン(https://ethw.org/Milestones:Object-Oriented_Programming,_196...)では、Simula 67が最初のOO言語とされていて、OOは「3つの主要な特徴の組み合わせ」と定義されてるんだ。1) データとコードのカプセル化 2) 継承と遅延バインディング 3) 動的オブジェクト生成。クラス階層がドメインモデルに対応するなんて言及はないよ。だから、プログラミングパラダイムと、それを実践で使う人たちのやり方を混同しない方がいいかもね。パラダイムの一番の支持者が、実際にそれを適用する人たちではないってことは、今でも変わらない事実だし。言うのに2.5時間もかからないよ。

彼は、OOPの創始者たちがこのクラスとドメインの対応をOOPを考える正しい方法として提示したことを示すために、豊富な一次資料の引用をしてるんだ。Bjarne Stroustrupはただのランダムな人じゃないよ。

実際に見たの? 彼はSmalltalkよりもSimulaやC++についてずっと多く話してるよ。元の情報源、クリステン・ニガードやビャーネ・ストロヴストルップに戻ってるし。Smalltalkに焦点を当てるのは変だと思うな、だってその話じゃないし。

面白いのは、このコメントを読んでから動画を見たら、トークの最初の15分がまさにこのコメントを否定するために使われてるってこと。ゾッとするね。

このプレゼンテーションは最近ここで話題になってたよ: https://news.ycombinator.com/item?id=44596554 [動画] (37件のコメント)このリンクは、Casey Muratoriによる記事で、さらに探求すべきトピックに関する補足資料が載ってる。 - Smalltalkの初期の歴史 - C++の歴史 - Simula言語の発展 - 自動プログラムツールのためのAPT言語の起源

ここでも: https://news.ycombinator.com/item?id=44603205

スクリプトやトランスクリプトってどこかにある?話す速度より10倍早く読める人たちのために。

YouTubeのほとんどの動画にはトランスクリプトがあって、通常は説明文の下にボタンがあるよ。

Whisperでトランスクリプトを作ってもらって、いくつかざっと見たけど、結局1.5倍速で話を見ちゃった。https://pastebin.com/EngTq9ZA タイムスタンプを残したいなら、それも貼れるよ。

この動画はOOPの歴史を深く掘り下げていて、そういうのに興味があるならとても面白いよ。

https://rentry.co/2sky3whm

そして、ドメイン駆動設計(DDD)の支持者たちがいるわけですが、彼らはF#のようなML系の言語を使って、プログラムで無効な状態を表現できないようにすることを目指しています。

Hacker Newsで議論の続きを見る