- オブジェクト指向なんて今すぐやめてください
869 :デフォルトの名無しさん[sage]:2014/08/31(日) 20:24:13.04 ID:GHjDfw2e - >>847,854
「ケイのオブジェクト指向」がメッセージングに重きを置いているのは分かる ケイが Smalltalk プロジェクトに関わっていた時期は、 それがオブジェクト指向の定義だったのかもしれない ただし、今日「Smalltalk のオブジェクト指向」という文脈における「Smalltalk」とは、 ケイが去った後にプロジェクトを引き継いだ共同開発者であるゴールドバーグが開発した 「Smalltalk-80」を指しているのではないかと思う ケイは Smalltalk を子供達の教育用途を想定した言語として考えていたから、 オブジェクトやメッセージという言葉でオブジェクト指向を語る一方で、 「クラス」や「継承」という数学的な言葉よりも「ファミリ」や「ファミリに属す」という 直感的に分かりやすい言葉を選んでオブジェクト指向プログラミングを語っていた これが「ゴールドバーグの Smalltalk-80」になると、近代的なソフトウェア工学の知見を取り込み 「カプセル化、継承、ポリモーフィズム」といった言葉でオブジェクト指向を定義している (そのソフトウェア工学の知見を取り込んだ成果が(ケイの時代には存在していなかった) クラス継承を巧みに活用したSmalltalk-80 のクラスライブラリと統合開発環境になる) つまり、ここまでをまとめると、同じ「Smalltalkのオブジェクト指向」であっても: ・「ケイのオブジェクト指向」は「メッセージング」に重きを置く ・「ゴールドバーグのオブジェクト指向」は「カプセル化・継承・ポリモーフィズム」に重きを置く という(重視する)視点に違いがある そして「ストラウストラップのオブジェクト指向」もまた「カプセル化・継承・ポリモーフィズム」 によって定義されているから「両者の違いはどこにあるの?」混乱が生じている (その答えは、すでに >>630,640 で書いている)
|