2017-09-01プログラミング目次Objective-Cとは超マイナーな言語から世界中で使われる言語にJavaにも影響を与えたObjective-Cとはプログラミング言語の一種です。以下のような特徴を持ちます。オブジェクト指向言語です。C言語の拡張という意味ではC++と同じですが、拡張部分はC言語と全く異なります。message]といった文法になります。C++と異なり、多重継承を認めません。その代わりに、プロトコルという仕組みがあります。プロトコルはJavaのinterfaceと同じです。当時は超マイナー言語でした。なんでこんないい言語が2評価されないのかなぁとモヤモヤしてました。iPhoneのヒットによって、世界中で使われるメジャーな言語になりました。Javaにも影響を与えたObjective-Cの直系の子孫はAppleが開発したSwiftですが、傍系の子孫とも言えるのが、Javaです。JavaとObjective-Cは似ているところもあれば似てないところもありますが、C++よりは似ていると思います。多重継承を許さず、インターフェースによる継承Objective-Cではプロトコル、Javaではインターフェースを使用C++では多重継承が可能です。ルートクラスの存在Objective-CではNSObject、JavaではObjectC++ではルートクラスが存在しません。似ていない箇所Objective-Cではダック・タイピングが可能だが、Javaでは不可能。Javaでも継承関係にかかわらず特定のメソッドを呼ぶことは可能なので、「インターフェースの定義や面倒な手続きをせずに任意のメソッドが呼び出せる」くらいの意味です。ダック・タイピングは柔軟で楽ですが、静的チェックが困難になる弱点もあるので、欠点ではないです。Objective-Cでは既存クラスの拡張が可能だが(カテゴリ)、Javaでは不可能。その後QtやKDEでC++に触りましたが、やっぱり無理という結論。↩もちろん当時の基準で、今はもっといい言語はたくさんあります。