2010年9月10日

Objective-C の歴史

今回は Apple が採用している Objective-C について少し話してみよう。

まずは、簡単に歴史からご紹介。

Objective-C の元となっている C は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって作った言語です。
1980年オブジェクト指向のプログラミング言語としてsmalltalk が公開されます。
そして、1983年 C とsmalltalk のよいところを組み合わせて作られたのが Objective-C です。
アップルの創業者であるスティーブ・ジョブスが、アップルをクビになり作った会社「NeXTコンピュータ社」で、オブジェクト指向のマルチタスク用コンピュータ「NeXTcube」のOS「NeXTSTEP」で採用され、 Objective-C はさらに発展していきます。
NSLog、NSStringなどのプレフィックスでNSというのは、NeXTSTEPの頭文字だったりする訳です。 

1996年に Apple が NeXTを買収して話題になったのは1998年のiMacの発売でしょう。
パソコンは使ったことがないけれどファッションとしてiMacを購入する女性もいたくらいです。そして、2000年に Objective-C で記述されたOSとして OS X のパブリックベータが発表されます。
当初は MacOS 9 に比べて重くて仕事向きではなかったのですが、コンピュータの性能の向上とOSのマイナーバージョンアップで、2002年に発売された OS X v10.2(Jaguar)あたりからビジネスでも使えるようになってきました。

そして、2007年に iPhone が Objective-C 2.0 を搭載し 2008年 iPhone OS 2.0、iPhone SDK が登場、2009年にiPhone OS 3.0 2010年に iOS4 が登場しました。


さて、プログラミング言語のJava、C++、C#、などは C を元に作られています。
Cを発展させたものですが、C やそれぞれの言語とは異なります。
それは、それぞれのルールで作られているので、全く同じではありません。

例えば次のようなコードを見てみましょう。

C++

#include

int main()
{
    std::cout << "Hello, World!\n";
}


Java

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}


C#

class Hello {
    static void main() {
        System.Console.writeLine("Hello, World!");
    }
}

それぞれ異なっているのがわかります。
さて、Objective-C はどうでしょうか?
Objective-C は C の改良ではなく C の機能追加版とでも言った方がいいでしょう。
ですから、 C で書かれたコードを Objective-C でコンパイルしても、問題なく動きます


C

#include 
int main (int argc, const char *argv[])
{
    printf ("Hello, World!");
    return 0;
}

ここで混乱してしまうのですが、C と Objective-C とはどうやって区別するのでしょうか?

Objective-C

#inport 
int main (int argc, const char *argv[])
{
    NSLog (@"Hello, World!");
    return 0;
}
C では "#include" と記していたところが "#inport" となっています。
その他に、わかりやすい変更点として次のようなものがあります。

Objective-C

#include 
int main (int argc, const char *argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSLog (@"Hello, World!");
    [pool drain];
    return 0;
}

[ ] で囲まれている部分がとても特徴があります。
多くの [ ] で囲まれて、まるでパズルのようですね。

C のコードで動くということは C を1から学ばなければならないかというと…
そうでもありません。

それは「Cocoa Touch」があるからです。
C のコードを使いやすく多くのクラスが追加されています。
それが Foundation として提供されています。
iPhone のプログラミングを使っていく上ではさらに、
UIKit が提供され 数百のクラス、数千のメソッドが利用できるのです。

Cocoa Touch について学んでいくことが、iPhone のプログラミングを習得する早道でしょう。



ヌシ:http://YoshiakiMATSUMURA.com

0 件のコメント:

コメントを投稿