なおリンク先では各々の違いの詳細説明もついているため興味ある方は併せて確認いただくと、さらに勉強になるとおもう。
http://wiki.unity3d.com/index.php/Csharp_Differences_from_JS
17 August 2012, at 11:59
Unity C#とJavascriptの主な違い
- 関数定義
function Start () { /* stuff. */ } // JS void Start() { /* stuff. */ } // C# string MyFunc() { return "hello, world"; } // C#
- C#ジェネリック
//JS function Start(){ var someScript : ExampleScript = GetComponent(ExampleScript); someScript.DoSomething();} //C# void Start(){ var someScript = GetComponent<ExampleScript>(); // Or a more verbose version of the line above: var someScript = (ExampleScript) GetComponent(typeof(ExampleScript)); someScript.DoSomething();}
- foreachキーワード
for(var x in someList){ // JS x.someVar = true;} foreach(var x in someList) { // C# x.someVar = true;}
- newキーワード
var foo = Vector3(0, 0, 0); // JS var foo = new Vector3(0, 0, 0); // C# Instantiate(someObj, new Vector3(0, 0, 0), someRotation); // C#
- 型キャスト
var foo : GameObject = Instantiate(someObj...); // JS var foo = Instantiate(someObj...) as GameObject; // JS var foo = (GameObject) Instantiate(someObj...); // C# var foo = Instantiate(someObj...) as GameObject; // C#
- Getter/Setterプロパティ
考察
このリストを作成するきっかけとなったのはUnityチュートリアルにJavascriptが多いためにC#でなくJavascriptを勉強しようと計画した人がいたためだ。それには一定のメリットがあり、特にプログラミングが初めてだという場合にチュートリアルからコピー&ペーストが出来るという側面がある。しかし、長い目でみるとそれは言語を選択する正しい理由にはならない。
事実はC#およびJavascriptが90%の部分でソックリである。ほとんどの場合、JavascriptをC#に変更するための箇所はわずかだ。そこで、差がわずかだとするならC#をなぜ選択するとしたらその根拠がポイントとなる。まあ、この議論を始めると宗教的な論争になりかねないのでここでどちらかに優劣をつけるつもりはない。
でも断言できることとしてC#を私が選択した理由はエディタの優位性だ。
MicrosoftはVisual C# Expressのフリー版があり、Unityと良く連携できている。Intellisenseの自動補完機能がありtooltipヘルプも関数パラメータが含まれる。強力なエディタはコーディングの生産性をあげる。現時点ではJavascriptで同等の機能をもったフリーのエディタはみたことがない。
--------
はて・・・、違いの点については理解できたつもりが、最後のVisual C# Expressの一文で飛躍したのでちょっと分からなくなってしまった。
以下のUnity Wikiでも設定方法はあるが、はたしてMonoDevelopの自動補完よりはるか優れているとのことなのだろうか?そのあたりは今後で検証してみたい。
http://wiki.unity3d.com/index.php?title=Setting_up_Visual_Studio_for_Unity#Using_Visual_C.23_Express_As_the_code_editor
Unityでどうせ覚えるならやはりC#でOK!
0 件のコメント:
コメントを投稿