くれぃんのプログラミング雑記

詳しいことはググってください

Continuousで始めるC# / Xamarin 005 寄り道 ( Draft )

.NETってなんなん?

.NETという言葉はよく聞くけど実体はよく知りませんでした。

ネイティヴではなく、Javaのような仮想環境上で動くとか、なので、CPUに依存しないとか、アプリがWindowsでもWindows Mobileでも動くとか、その分遅いとか、そういうレベルの知識しか持ってなく。なぜ、わざわざ遅くなるやり方するのかなぁとか、セキュリティ的にはいいのかもなぁとか思っていました。

で、C#を始めるにあたって、色々と読んでいると、.NETとかそれがらみの言葉が大量に押し寄せてくるので、ちょっと調べたりしてみました。知っている人には、そんなこと?という内容かもしれません。

なぜC#を作ったのか

.NET以前、MicrosoftWindows上でのソフトウェア開発手段として、Visual Basic と Visual C++ を提供していました。特徴を簡単に書くとこんな感じ。

「どっちで作ればいいの?」という問いに対しては答えにくい状態でした。で、Microsoftが目をつけたのがJavaでした。

MicrosoftJavaを使ってWindowsのアプリを作れるように、Visual J++を開発しました。しかしながら、当時のSun Microsystemから「Javaは特定のOSに依存しちゃダメ」とライセンス違反を突き付けられ、裁判にも負けてしまいました。

そこて、自らの手でJavaみたいな言語を作ることにしたのです。それがC#というわけです。

  • C#
    • C言語にも似た構文
    • 様々なクラスライブラリ → .NET Framework
    • ポインタがない
    • ガベージコレクタがある
    • セキュア
    • MSILという中間言語コンパイルされCPU非依存
    • 仮想環境上で動作

お、同じやんか。

そして、Visual Basicも、Visual Basic .NETとして、同じように生まれ変わります。文法が異なる以外は同じ特徴を持ちます。

C#でアプリを書いても、Visual Basicでアプリを書いても、コンパイルすると同じ中間言語MSILになって実行されます。

ちなみに、C#の父と呼ばれるアンダースヘルスバーグ ( Anders Hejlsberg ) は、昔、ボーランドという会社でTurbo PascalDelphiの開発をしており、その後、Microsoftに行き、Visual J++を開発。その後、C#を開発しました。C#の文法をみるとナルホドと思ってしまいますね。