よく「C# は C++ と Java の良いところを合わせたもの」というのを見かけます。
しかし、C/C++、Java、Delphi、VB と (ただし極めて浅く!w)
やってきている私にとって、これには違和感があります。(`・ω・´)/
C# は C レベルの文法を踏まえ、C++ の一部を踏襲している部分はありますが、
C++ の言語仕様から、明らかに避けている部分 (有名なのは「多重継承」とか「unsafe ポインタ」ですが) もあります。
この部分は Java に当たるというのであれば、C++ を持ち出す意味があまりなくなるように思えます。
全体の特性で選ぶならば、私は、Delphi + Java ではないかと思うのです。
Delphi をやると良くわかるのですが、コントロール周り、特にイベント周りが似ています。
コード上となると、ちょっと伝えにくいのですが、
Delphi
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer
begin
for i := 0 to 10 do
begin
// TODO : いろいろ
end;
end;
TForm1 ~ Sender あたりは、何かそれっぽいでしょ? (^^)
そうそう、Delphi では、クラスを表すためのプリフィクスに「T」を使いますが、
C# や VB.NET で生成される XML ドキュメントでのクラスも「T:クラスパス」と書きますね。
さて、話を戻します。(;^-^)
おかしいと思う理由のひとつとして、同じ部類の言語である VB.NET の式が成り立たないということにあります。
C# == [C++] + [Java] にしてしまうと、VB.NET == の右辺がおかしくなりませんか? (;^-^)
書くならば、VB.NET == [VB] + [Java] でしょうか?
いや、これだと構文レベルという意味でしかなくなります。
プログラムの組み方やイベントの立て方は確かに VB と似ていますが、
それなら C# も [VB] + [Java] としない理由がわからなくなり、辻褄が合わなくなります。
個人的には、選ぶべきは C++ ではなく、まだ Delphi だと思うのです。
C++ が全くの間違いだと言うつもりはなく、Microsoft 独自色という意味では、"むしろ" VC++ かなと思います。
つまり、「C# == (Delphi + Java (一部) + MS 独自) x C の文法」だと思うんです。
これなら、「VB.NET == (Delphi + Java (一部) + MS 独自) x VB の文法」となり、違和感がないです。
Java について「一部」と書いたのは、delegate, struct あたりの話があるからです。
特に delegate は、Java の言語仕様から外れていると考えることができます。
そういう意味で、VJ# は... (Delphi (一部) + Java + MS 独自) かなぁ... ちょっと難しいw
# そもそも、C# の設計者って Delphi の開発にも深く関わっていませんでしたか?
# 個人的には、かなり影響されているように思えますが、勘違いだったらごめんなさーい。(*_ _)