- ベストアンサー
C,C++,C#には共通点があるのでしょうか?
Cという言語に+や#が付いているだけ、と考えるとC言語がベースで、それに何か変更を加えてC++やC#に派生した、と思っているのですが、実際なにかつながりはあるのでしょうか? C++を始める前にCをマスターしてから、というアドバイスをよく見かけますが、それもCがベースだからということなのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
この手の話では以下の読み物がオススメです http://www.mwsoft.jp/column/program_top10.html 私の理解では、 C: 機械語を高級にしたもの C++: Cに、言語仕様的にオブジェクト指向を拡張したもの Objective-C: Cに、マクロ的にオブジェクト指向を追加したもの Java: C++の構文を下敷きに、JVM という仮想環境向けに簡単にしたもの C#: Javaの構文を下敷きに、.NET という仮想環境向けに複雑にしたもの CとC++は関連があるので、難解なC++/ObjCを覚える最初の段階としてのCは、良い考えだと思います。 C/C++とJava/C#は無関係なので、Cを覚えても無駄でしょう。
その他の回答 (2)
- kemiotto-new
- ベストアンサー率20% (1/5)
どの言語を覚えるべきか、という問に対する答えには成らないかと思いますが、そもそもコンピュータ言語とはどういうものかとか、その辺の話を軽く流します。 今も使われているかと思いますが、アセンブラ等を扱うと、処理速度よりも開発効率を求めた時、スタックに情報を積むルールを定めれば、汎用性、延いては開発効率が速くなるという大人の事情により、それを突き詰めれば、それを暗黙の内にやれば良いという話に成り、それがC言語等だったりする訳ですが、そのC言語も構造体を引数に渡すルールを厳密にすれば(それが this の正体だったり)、汎用性が出てくるという話になり、暗黙の内にやれば、やはり大人の事情によりC++のような言語が生まれたり、それも効率を考えて色々暗黙の内にやれば、スクリプトに至る訳です。そのスクリプトにしても、やはり暗黙の技術論が出てくれば、jQuery みたいな物が出てきたり…。ある意味どこまでも落ちていけます。 どの言語を覚えるべきかと言う話に無理に合わせるなら、どうなんでしょうね。その辺の歴史を考えてコンパイラの仕組みを理解できるC言語は良い選択肢かも知れません。とは言え、その覚え方の方向を間違うと、問題が発生するかも知れません。例えば、C言語とC++言語の間には技術の域を超えて、思想的な違いが徹底的にあります。 これは今時為になる話なのかなぁ…。 まあ、コンパイラの構文解析の仕組みを理解したら良いと言う考えに至るのであれば、スクリプトを自分で作る方策を模索し、どの言語でそれをやるか、まあ、これはなんでも有り(と言っても無理な言語もありますが)なので、強いる物は無いと思います。何でしたら javascript でスクリプトも作れる訳で。 ああ、答えに合っていないですね。ごめんなさい。
お礼
C#がCとは別物とわかったので、C、C++に専念しようと思います。 といってもしばらくは仕組みなりを覚えないといけないわけですから、他の言語やってる暇はないですよね。 Javaも少し興味があるので余裕ができたら挑戦してみようと思います、回答ありがとうございました。
- zwi
- ベストアンサー率56% (730/1282)
C++はC言語にオブジェクト指向やジェネリックプログラミングが機能追加されたものだけど、C#はマイクロソフトの戦略上の名前でDelphiやJavaの方が機能的には近い。C#にC言語の影響は無いわけではないが直接的な繋がりがないと思ってもらったほうが良いかも。 C++はC言語を内包していてC言語から派生したので、ほぼC言語のプログラムをコンパイルできるがC#には無理。
お礼
C#がCと別物だとは思いませんでした、てっきり++のような派生だと… C/C++を本格的にやろうと思います。余裕ができたらJavaとかも考えてみようと思います。ありがとうございました。
お礼
C#の前にC~みたいな流れがないのは別物だからなんですね。 JavaやC#は仮想環境やら、なんだか複雑な気がしますので、C、C++に絞ってみようと思います。 それぞれの言語の方向性といいますか、そんなようなものが少しわかった気がしました、ありがとうございました。