題名の通りですが、
VB.NETとC#はどのように違うのでしょうか?
C#は何が出来るけど、VB.NETはできないとかというような感じで
教えてください。
お願いします。
そうゆうことは@ITとかを読んで勉強しましょう
個人にはできるできないではなくこの処理ならこの言語の方が効率が良いとか
そんなかんじで開発言語さらにはOSを選択してますね
↓とか
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_000/cs2_000_01.html#cs0004
処理に応じて使い分けをするってことですね。
今まで知りませんでした。
ありがとうございました。
追加質問です。
C#の言語は主にどのような処理をするときに使うのでしょうか?
できれば、VB.NETも教えてください。
昔からよくいわれてるのは(私的)
ファイル操作はC言語の方が早い?
後は
将来的に脱Windows予定だから移植時の工数削減の為Cで作ってるとか
(無論APIとかWindowsCにしか無い機能も使っちゃ駄目ですが)
CDで配布する場合など必要なDLLを一緒に入れておけば実行端末に
ランタイムがなくてもさらにはsetupしなくてもCDから直接実行
出来るとかとか
VBは
http://itpro.nikkeibp.co.jp/free/ITPro/OPINION/20010131/1/
処理とゆうよりはとっつきやすいってところでしょうかね?
ではC#はランタイムが必要あるけど、
C++.NETはランタイムが必要ないということでしょうか?
お?C# = C++.NET じゃないのか?
ごめんなさい.NET系のくくりがいじったこともないしよくわかってません
そこらへんはCの板で聞いた方が適切なアドバイスがもらえると思いますよ?
.NETにおいては、IL(中間言語)という物が使われるのは御存知ですよね。
http://park16.wakwak.com/~mimi/dotnet/misc/msil.html
VBで作られようが、C#で作られようが、コンパイルされれば、
ILコードに変換されます。ILは、環境に依存しない共通言語で、
.NETのCLR(共通言語ラインタイム)を直接呼び出す事のできるコードです。
ILコード自体は共通なので、どの言語で作成されたexeであっても、
速度面では全く変わりません。(コンパイラの性能等によって、
どのようなILコードに翻訳されるかという違いはあるかもしれないけど)
なので結局の所、コンパイルすれば(MSILのコードになってしまえば)、
どの言語で作られたか、という事は関係ないです。.NETにおいては。
IL自体は、作成された言語に依存しない共通のコードになりますので、
たとえば、 Reflector for .NET などのフリーソフトを使えば、
コンパイルして作成されたexe, dllファイル等をもとにして、
それを C# のコードに変換することも、VB のコードにする事さえできます。
http://www.atmarkit.co.jp/fdotnet/tools/dotfuscator/fuscator04.gif
http://www.atmarkit.co.jp/fdotnet/tools/dotfuscator/fuscator05.gif
http://www.aisto.com/roeder/dotnet/
つまるところ、作成される成果物がほぼ同じである以上、あとは、
「自分(または共同開発する人達)が使い慣れた言語でコーディングする」
という選び方をすれば良いのではないかと。
各言語の良し悪しは、宗教論になってしまうので書きませんが、
とりあえず、言語の違いを幾つか書いてみると。。。
[VB]
・変数やクラス名で、大文字小文字を区別しない。
・レイトバインドによるコーディングが容易。(Option Strict Off)
・演算子をオーバーロードできない。(次期バージョンから対応)
・言語仕様は、Microsoftの独自実装。
[C#]
・変数やクラス名で、大文字小文字が区別される。
・レイトバインドが面倒。(http://support.microsoft.com/?id=302902)
・演算子のオーバーロードが可能。
・言語仕様が ECMA-334 によって標準化されており、Microsoft以外からもコンパイラが提供されている。
> ではC#はランタイムが必要あるけど、
> C++.NETはランタイムが必要ないということでしょうか?
C++.NET で、「.NETのアプリ」を作った時は必要ですが、
「.NETではないアプリ」を作った時は不要です。
VB.NETやC#.NETは、「.NETのアプリ」は作れますが、
「.NETではないアプリ」は作れないため、.NETランタイムが必須です。
コンパイルってどういう意味でしょうか?
あと、演算子のオーバーロードとはどういう意味か分かりません。
基本的なこととは存じますが、教えてください。
あと、もうひとつ。
では、ランタイムを使用しないC++の無料ソフトを配っている所を
教えてください。
いやいや「コンパイル」とか「演算子のオーバーロード」は
用語の説明みたいなもんなんで聞くんじゃなくて自分で
調べましょうよ
http://www.google.co.jp/
VB.NETでソースを入力して、EXEファイルを生成し、
そのEXEファイルを使いC#やC++のソースに変えるソフト
がhttp://www.aisto.com/roeder/dotnet/のURLのどこら辺にあるでしょうか?
探しましたけれど、見つかりません。
用語関係に関しては自分で調べておきます。
ありがとうございました。
> http://www.aisto.com/roeder/dotnet/のURLのどこら辺にあるでしょうか?
> 探しましたけれど、見つかりません。
『Reflector for .NET』と書かれたスクリーンショットの所に、
[Reflector.zip] というリンクがありますよね? (^_^;)
> コンパイルってどういう意味でしょうか?
高級言語(VBやC#などといった、人間にとって読みやすい言語)を、
低レベル言語(CPUが理解しやすい言語)に置き換える作業の事を
compile と言います。とりあえずは、「DLLやEXEを作る事」と
思っておけば良いかと。
で、コンパイルを行うためのプログラムの事を、コンパイラ
(compiler)と言います。なお、.NET Frameworkにおいては、
VB用コンパイラのVBC.EXE、C#用コンパイラのCSC.EXE、
JScript用コンパイラのJSC.EXEなどが用意されています。
> 演算子のオーバーロードとはどういう意味か分かりません。
演算子、は分かりますよね。「+」とか「/」とか「=」などです。
例えば、現在の VB.NET 2002/2003 においては、SqlInt16型の
変数同士を足し算しようと思ったら、
A = SqlTypes.SqlInt16.op_Implicit(1)
B = SqlTypes.SqlInt16.op_Implicit(2)
C = SqlTypes.SqlInt16.op_Addition(A, B)
もしくは、
A = New SqlTypes.SqlInt16(1)
B = New SqlTypes.SqlInt16(2)
C = SqlTypes.SqlInt16.Add(A, B)
のように書かなくてはいけません。
これが VB.NET 2005 であれば、
Dim A, B, C As System.Data.SqlTypes.SqlInt16
A = 1
B = 2
C = A + B
のようなコードが書けるようになります。
また、自分で作ったオブジェクト同士でも四則演算等ができるようになります。
例えば、以下のような「複素数クラス MyComplex」を定義すれば、
Dim c1 As New MyComplex(2, 4)
Dim c2 As New MyComplex(3, 5)
Console.WriteLine(c1) '2.00 + i4.00
Console.WriteLine(c2) '3.00 + i5.00
Console.WriteLine(c1 + c2) '5.00 + i9.00
のような事ができるようになる予定です。
'複素数クラスの作成
Structure MyComplex
Private r As Double
Private i As Double
Public Sub New(ByVal r As Double, ByVal i As Double)
Me.r = r
Me.i = i
End Sub
Public Overrides Function ToString() As String
If 0.0 <= i Then
Return String.Format("{0:F2} + i{1:F2}", r, i)
Else
Return String.Format("{0:F2} - i{1:F2}", r, -i)
End If
End Function
'☆加算演算子のオーバーロード☆
Shared Operator +(ByVal x As Complex, ByVal y As Complex) As MyComplex
Return New Complex(x.r + y.r, x.i + y.i)
End Operator
End Structure
ありがとうございました。
なんとなく分かりました。
とこえろでJavaScriptのコンパイラーってありますでしょうか?
エラーがでてしまうと原因がわかりずらくって・・・
メモ帳でソースを記述していますから・・・
どうしても必要です。
質問ばかりですみませんが、教えてください。
お願いします。
> とこエロでJavaScriptのコンパイラーってありますでしょうか?
JavaScriptのコンパイラは知りませんが、
JScriptのコンパイラなら、JSC.EXEです。
(JSC.EXE は、.NET Framework SDKに付属しています)
> エラーがでてしまうと原因がわかりずらくって・・・
VBScript や JScript などの、「Windows Script」での開発時には、
下記の「Script Debugger」というツールを使う事で、スクリプトを
一行ずつ「ステップ実行」したり、変数の内容を参照/編集しながら
実行することができるようになります。
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=E606E71F-BA7F-471E-A57D-F2216D81EC3D
Visual Studioがあるなら、それを利用する事もできます。
Visual Studio .NET 2003ですけど、
JScriptのコンパイラってどこにあるんでしょうか?
探しても見つかりません。
JavaScriptのコンパイラはないんですか・・・(TT)
だれか作ってる方いませんか?
> Visual Studio .NET 2003ですけど、
> JScriptのコンパイラってどこにあるんでしょうか?
スタートメニューから、
[プログラム]
+[Microsoft Visual Studio .NET 2003]
+[Visual Studio .NET ツール]
+[Visual Studio .NET 2003 コマンド プロンプト]
を起動してください。その上で、
JSC C:\TEST.JS
などというコマンドを実行すれば、TEST.JS がコンパイルされ、
TEST.EXE が生成されます。(JSC /? にてヘルプが表示されます)
http://www.microsoft.com/japan/msdn/library/ja/jscript7/html/jsconcompilingjscriptcodefromthecommandline.asp
> 探しても見つかりません。
もう一度、いや、あと10回は探してください。
HDDに無ければ、CD/DVDの中までも。
> JavaScriptのコンパイラはないんですか・・・(TT)
個人的には、なんでJavaScriptコンパイラなんかを欲しがるのか、
奇妙に思えるのですが、いずれにしろ、InternetExplorer等は
JavaScriptを解釈できないので、MSからは提供されていないでしょう。
たとえHTMLで、<SCRIPT LANGUAGE="JavaScript">と書いたとしても、
IEはそれを、JScriptの構文として実行しますしね。
> だれか作ってる方いませんか?
googleで「JavaScript compiler」で検索してみましたか?
もし、期待通りの物が無いなら、自分で作って見ては如何ですか。:-P
Javascriptでソースを
alert('Hello');
のように記述して、
仕掛け上 JScript=JavaScriptだろうと思い、
Visual Studio .NET 2003 コマンド プロンプトで言われたとおりに
操作したのですけれど、alertが宣言されていません。っとエラーが発生してしまいました。
原因はなんでしょうか?
あと、拡張子が.javaになっているファイルをコンパイルして、.classに変えたいのですけれど、
変える方法を教えてください。
バージョン:Visial Stadio.NET 2003です。
JavaScriptのコンパイラに関しては、
JavaScriptのソースをスペルチェックする程度のソフトを自作します。
> あと、拡張子が.javaになっているファイルをコンパイルして、.classに変えたいのですけれど、
> 変える方法を教えてください。
板違いです。マグさん、先々週にも注意したと思いますが、
ここは「Visual Basic」の掲示板です。マナーは守ってください。
分かりました。
JavaScriptのソースをスペルチェックする程度のソフトを作るのをやめました。
理由は使う必要がないし、エラーをそんなに出していないから作る必要が
ないと判断してやめました。
解決を押し忘れました。
原因は後にわかるだろうっと言うことで解決?
マグさんは、もうすこし、質問するのを考えて質問した方がよいと思いますよ。
VB以外の質問をしたり、自分で調べれば多分わかるような質問ばかりのような気がします。同じ質問の中で解決がいくつもあったり。
答えていただける人の気持ちを考えてください。
今後、もう少し、考えながら、質問することにします。
アドバイス、ありがとうございます。