Continuousで始めるC# / Xamarin 005 寄り道 ( Draft )
.NETってなんなん?
.NETという言葉はよく聞くけど実体はよく知りませんでした。
ネイティヴではなく、Javaのような仮想環境上で動くとか、なので、CPUに依存しないとか、アプリがWindowsでもWindows Mobileでも動くとか、その分遅いとか、そういうレベルの知識しか持ってなく。なぜ、わざわざ遅くなるやり方するのかなぁとか、セキュリティ的にはいいのかもなぁとか思っていました。
で、C#を始めるにあたって、色々と読んでいると、.NETとかそれがらみの言葉が大量に押し寄せてくるので、ちょっと調べたりしてみました。知っている人には、そんなこと?という内容かもしれません。
なぜC#を作ったのか
.NET以前、MicrosoftはWindows上でのソフトウェア開発手段として、Visual Basic と Visual C++ を提供していました。特徴を簡単に書くとこんな感じ。
- Visual Basic
- 割と簡単に作れる。
- 高度なアプリは作れない。
- Visual C++
「どっちで作ればいいの?」という問いに対しては答えにくい状態でした。で、Microsoftが目をつけたのがJavaでした。
MicrosoftはJavaを使ってWindowsのアプリを作れるように、Visual J++を開発しました。しかしながら、当時のSun Microsystemから「Javaは特定のOSに依存しちゃダメ」とライセンス違反を突き付けられ、裁判にも負けてしまいました。
そこて、自らの手でJavaみたいな言語を作ることにしたのです。それがC#というわけです。
お、同じやんか。
そして、Visual Basicも、Visual Basic .NETとして、同じように生まれ変わります。文法が異なる以外は同じ特徴を持ちます。
C#でアプリを書いても、Visual Basicでアプリを書いても、コンパイルすると同じ中間言語MSILになって実行されます。
ちなみに、C#の父と呼ばれるアンダースヘルスバーグ ( Anders Hejlsberg ) は、昔、ボーランドという会社でTurbo PascalやDelphiの開発をしており、その後、Microsoftに行き、Visual J++を開発。その後、C#を開発しました。C#の文法をみるとナルホドと思ってしまいますね。