たまに「じゃんぬねっと」が生存確認をする日記

役員より労働者の方が絶対楽だと思う

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  984  : 記事  4  : コメント  38568  : トラックバック  277

ニュース

My Website

初心者向けのサイトです。

C# と VB.NET の入門サイト

最近のできごと

低学歴の IT エンジニア兼管理職です。ずっとリモートワーク中。

駆け出しはブラック企業で低年収でしたが、転職を繰り返して年収は 5 倍以上になりました。

年収はこれ以上増えても幸せ指数は増えませんので、趣味の時間を増やすため早期の半リタイアを考えています。

最高の配偶者、可愛い娘、ハンサムな息子と幸せな日々を送っています。

息子の将来の夢はゲーム実況者らしい。がんばれー^^。

Sponsored Link1

Sponsored Link2

Archive

書庫

よく「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 の開発にも深く関わっていませんでしたか?
# 個人的には、かなり影響されているように思えますが、勘違いだったらごめんなさーい。(*_ _)

投稿日時 : 2006年5月3日 13:50

コメント

# re: C# == [C++] + [Java] ではない 2006/05/03 14:27 とっちゃん
># そもそも、C# の設計者って Delphi の開発にも深く関わっていませんでしたか?

思いっきりかかわってますよ(^^;
日経の記事だったかにその辺出てました。

北川さんところにリンクがあるはず(なんていい加減なw)

# re: C# == [C++] + [Java] ではない 2006/05/03 16:07 じゃんぬ
>とっちゃん
い いいかげんだ! これはいいかげんだ!
Delphi と C# を結びつける為のいいかげんなソースだ!!
リンク先がないのに 「思いっきり関わってますよ」というのはおかしいじゃないか!
それが いいかげんだという証拠!

# re: C# == [C++] + [Java] ではない 2006/05/03 16:27 りばてぃ
これですね?
http://blogs.msdn.com/hiroyask/archive/2005/12/12/502619.aspx

# re: C# == [C++] + [Java] ではない 2006/05/03 17:49 じゃんぬ
記憶どおり!

# re: C# == [C++] + [Java] ではない 2006/05/03 18:34 trapemiya
先日私が書いた文章では「Java とC++ の良いところをうまく取り入れて」という表現を使っていますが、その元になっているのは、次のように私は思っているからです。1.C#はC++を見直し、贅肉をそぎ落として、基本的にシンプルで必要十分な機能で設計し直した。2.JVMという思想の延長線上にCLRを持ってきた(と思う)。
あと、有名なページですが、以下も私の考えの参考になっています。
Java プログラマのためのC# 考察 -- 言語仕様の比較
http://www.objectclub.jp/technicaldoc/c/cs_vs_java

# re: C# == [C++] + [Java] ではない 2006/05/03 21:19 とっちゃん
いい加減な人が訂正に来ましたw

りばてぃさんの記事の後、いくつかのリンク先があるんですよw
2/3 よりあとからぽつぽつと思い出したように(^^;


で、本題ですが、北川さんのところに確かに記事はありました。3/13 の記事です(URL書くとTB飛ぶみたいなんで、日付だけ(^^;)

あったんですが、日経じゃなくて 技術評論社の .NET Expert #02 でした。

関係者各位に謹んでおわびし、訂正いたします。m(_ _)m

で、いいんだっけ?(またしてもいい加減なw)。

なんか、WEBでも同じようなのを読んだ気はするんですが、探しきれなかった(^^;


.NET Expart #02 によると...
Turbo Pascal のチーフアーキテクトとして、開発に参加し、Delphi でも中心メンバーの一人として参加していたそうです。

その後、MSに移ってからは VJ++ -> .NET(C#) とかかわってきたそうな。

なので、Delphi や、Java の素養が含まれているというのはあながち間違いではないということになりますね。

詳しくは、.NET Expert #02 の P113あたりをお読みくださいませ(^^;


# re: C# == [C++] + [Java] ではない 2006/05/03 22:16 中博俊
ヘイルスバーグ マンセー
それ以前に言語なんてものは互いに影響し有っているのでナンセンス
DelphiはPascal系だけどPascalだけを磨いたわけじゃないし、C#はC系の構文を使っているけど、VBもCもJavaもHaskellも意識している

現実世界と同じで複雑系ってやつですね。


# re: C# == [C++] + [Java] ではない 2006/05/04 0:25 trapemiya
>それ以前に言語なんてものは互いに影響し有っているのでナンセンス

そうなんです。言語なんてのは常に変わっていっているものであって、記述の仕方なんていうのは根本的なことではありません。パラダイムシフトと言えば大げさかもしれませんが、javaが多重継承をやめたこと(インターフェースの使用)、そしてJVMは、私にはちょっとした革命でした。だからC#がC系の構文を採用しながらも、多重継承をやめ、JVMを意識したであろうCLR上に持ってきて、一応ポインタを排除したことは、私には当然のことのように思えました。

# re: C# == [C++] + [Java] ではない 2006/05/04 1:24 R・田中一郎
「C# は C++ と Java の良いところを合わせたもの」と
言う考え方そのものがナンセンスということなんでしょ
うか?
言われてみれば「VBとC#どっちが優れているか?」とか
最高の言語は○○だ、的な発想に近い気もします。

などと、C#暦4ヶ月の僕が言ってみたり・・・


# re: C# == [C++] + [Java] ではない 2006/05/04 10:40 中博俊
>javaが多重継承をやめたこと(インターフェースの使用)
COMから採用したのかもしれませんよ。(^^

>「C# は C++ と Java の良いところを合わせたもの」と
言う考え方そのものがナンセンスということなんでしょ
うか?

Yes.
後発の言語や、テクノロジーが先発の何かを置き換えられないのであれば存在価値は見出せません。
=流行らないということです。

#VB7がはやらなかったのは別の意味があるので、何かを置き換えればはやるというものでもないのは自明

今のJavaは属性を持っていますが、さてこれはどこから取り入れたものでしょう。
Genericも構文的に持っていますが、これはC++のテンプレートから取り入れたのか、C#, VBから取り入れたのかどちらでしょうか?

>言われてみれば「VBとC#どっちが優れているか?」とか
>最高の言語は○○だ、的な発想に近い気もします。

これこそもっともナンセンスですな。自分の学習環境的な問題はありますが、すくなくとも今のC#とVBに根本的な違いは有りません。

# re: C# == [C++] + [Java] ではない 2006/05/07 16:54 名無し
じゃんぬ氏が、夜神月のセリフで全部返してることに誰も気が付かない。
気付かなくて当然かw

# re: C# == [C++] + [Java] ではない 2006/05/07 17:03 名無し
気になったので。

> 1.C#はC++を見直し、贅肉をそぎ落として
これはそもそもJavaにあたると思うが、C++にあたる機能で取り入れたものってどれになるんですか?
これだったら、C#=Javaといったほうが納得がいく。

> 言語なんてのは常に変わっていっているものであって、記述の仕方なんていうのは根本的なことではありません。
これって誰への反論のつもりなんですか?
ご自分もC++とJavaのよさを取ったと言いつつおかしくないですか?
ご自身への反論ですか?
もっとも、C++の部分の説明がないので何とも言えませんが。。。
あと、DelphiではなくC++を敢えて選んだ理由も教えてください。

> それ以前に言語なんてものは互いに影響し有っているのでナンセンス
> DelphiはPascal系だけどPascalだけを磨いたわけじゃないし、C#はC系の構文を使っているけど、VBもCもJavaもHaskellも意識している
これはそもそも、おおまかに式を書いた場合の話をしてるんじゃないですか?
それをこう切り捨てては元も子もないでしょう。

おおまかに書いた場合、C++よりかDelphiが登場するのは納得がいきます。
もちろん細かい要素ではそれ以外の言語もあるでしょうが。

ま、中氏の意見は論争になりそうなネタを途中で食い止める意味合いが強かったんでしょうね。

# re: C# == [C++] + [Java] ではない 2006/05/07 17:05 名無し
あ、個人的には J++ + Delphi が納得がいく。
MS独自って書かれている部分がJ++にあたるわけ。
でもフレームワークについては明らかにJavaそのものだね。

# re: C# == [C++] + [Java] ではない 2006/05/09 10:15 ぽぴ王子
はっ!もしやこの流れ...Delphiモンリー?!



一度言ってみたかったんです。すいません orz

# re: C# =VB? 2007/08/01 17:11 。。。
どうなるでしょう
C#+VBはどうなるなな~?

Post Feedback

タイトル
名前
Url:
コメント: