それはC++のClassは絶対的に値型、C#なら参照型。これはどこでよく分かるかというと、データの取り扱いで、C++はnewのキーワードは(T*)mallocのSyntax Sugerでしかない感じ。それゆえ、Newを受けるのはT*なので常に扱いが->になるので、若干冗長になる。
あとはC#が常にobjectの継承になるので、基本的にGenericが実現可能なのに対して、C++はdefaultでは継承関係にはないので、これは明示的に実装するしかない。ただし、これよりもC++で重要なのは、TemplateClassやTemplateMethodにあるでしょう。これによって継承によるコードの重複を抑えることが出来るようになります。C++はそもそも考案された段階では現在ほどのメモリ量やCPU速度がなかったので、Genericが考えられてない、と思う。それよりも後に考えられたC#はGenericやTemplateなどのメタプログラムへの拡張がよく考えられていると思う。
それゆえに、C++とC#は使うべき分野が違う。高次のプログラミングにはC#、組み込み系などのリソースに限界がある場合にはC/C++が向いているのだろう。
C/C++での組み込み系でひとつ問題がありまして、DOSは16bitの限界があったはず…また32bitでのCUIベースのシングルスレッドC言語環境が調べてもないです。いまどきDOSを使っているところがまだあるのかといわれると、存在しているとしか言えません。ただ重要さの順位から言うとシングルスレッド、32bit、CUIな環境。…環境がないので、たぶんISO Cの仕様を満たすアセンブラかCのコードを生成して、OSを構築していくしかないような気がします。あー、工業用のマイコン出している会社がそういうOSつくらんかなぁー
0 件のコメント:
コメントを投稿