vieweditattachhistoryswikistopchangessearchhelp

Objective-C



--sumim


以下はオブジェクト指向には大きく分けて出自の異なる2つの考え方がある(ケイのオブジェクト指向=メッセージング、ストラウストラップのオブジェクト指向=カプセル化・継承・多態性…)ことや、C++ を設計する際にストラウストラップが考えたことに対する理解が足りないときに書いたものなので、かなり考察が浅いです(というか、完全に間違ったことを書いています)。ごめんなさい。--sumim

名前しか知らなかったとき、C++ と Objective-C の違い、特に存在意義の違い(両方とも C のオブジェクト指向化だろ。なんで2つあるの?…程度の認識だったので)が分からなかったが、そんな状態でもこの書籍を読んで合点がゆき助けられた記憶がある。私なりに今のところの理解で改めて換言すれば、C++ は C として Smalltalk の役割を果たそうとした C で、Objective-C は C のまま Smalltalk のふんどしで相撲をとろうとした C といったかんじになる。これでよければ(だんじて、よくない(^_^;))、C++ が Smalltalk で培われた文化を目の敵にするのも無理からぬ話だ。Smalltalk なんぞなくとも、C++ はりっぱに C++ でありたかったのだろう(なのに同じオブジェクト指向だからといって、そしてちょっと登場が早いからというだけで否応なくその独自の文化や概念を持ち込まれれば嫌みのひとつも言いたくなるわな)。また、意識するかしないかは別にして当然 Smalltalk 寄りになる Objective-C 利用者が、C++ をして異質なものととらえたがる気持ちも分からないでもない。

ソフトウエアの20世紀より、
Objective-C は、元々柔軟な C に、アラン・ケイによって作られ PARC(パロアルト研究所)の自由な雰囲気の中で育ってきた Smalltalk を掛け合わせて生まれた。C の持つプログラミング言語そのものとしての柔軟性に、Smalltalk の持つオブジェクト指向言語としての柔軟性を与え、C++ の覆い隠そうとした“ C の地の部分”を積極的に利用したのである。そのためソースコードは C と Smalltalk の混成のような形となり、基本的な言語構造は C の柔軟性をそのまま(長短含めて)受け継いでいる。両者のスタンスの違いは、ネーミングにも明らかだ。“ C のインクリメント”(C++)と“オブジェクトな C ”(Objective-C)の違いである。つまり、 C++ は Simulaによって“ C を越える”ことを目指し、Objective-C は Smalltalk によって“ C を活かす”ことを目指した言語なのである。
--sumim


このページを編集 (3283 bytes)


Congratulations! 以下の 2 ページから参照されています。

This page has been visited 12739 times.