質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • C

    3685questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

c言語の次は?

解決済

回答 4

投稿

  • 評価
  • クリップ 1
  • VIEW 1,381

reotantan

score 246

いま現在c言語の基礎的な事を一通り学び終えたところです。そしてc++やjavaにいくか、さらにc言語の理解を深めようか迷っています。
ある人はjavaをやってからc++をやった方がいいという意見もあり、cからc++にすぐに移った方がいいというものもあります。
c++の強みというのは何でしょうか?
c言語との違いを比べて、記述してもらえるとありがたいです。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+1

c++かjavaで悩んでいるということはまだ必要にかられていない状況ではと思います。
今後Railsでの開発を求められればrubyが必要になります。
学ぶことが必要になる言語がでるまで、C言語の理解を深めるのがよいのではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/28 22:47

    rubyもかじってみたのですが、とりあえずcに専念するのがよさそうですね
    ありがとうございました

    キャンセル

  • 2015/08/28 22:59

    得意言語を一つ持つとメリットが多いのでがんばって学んでみてください。

    キャンセル

checkベストアンサー

0

c言語の基礎的な事を一通り学び終えたところです。
そしてc++やjavaにいくか、さらにc言語の理解を深めようか迷っています。

結論から先に言うと、その三者の中ではJavaがもっともおすすめです。
その理由についてはまず、三者の言語を比較してみましょう。




まず、C言語と、C++とJavaグループで大きな違いがあります。
後者には、オブジェクト指向(OO)をサポートする機能があります。
たとえば、コンストラクタでクラスからインスタンスを生成するとかです。


べつにC言語でそれらを自分で実装すれば
CでOOもできなくはないですが、本当に使いこなすには
コンパイラなど言語仕様の深い理解が必要なので、
すくなくとも初期の学習には向かないです。

また、どの言語も最終的には機械語に翻訳されるので、
OOでないと実現できないという(低水準の)機能もないですが、
大規模プログラムを組む(組んで保守や拡張をし続ける)
には、OOでないと現実的には難しいです。

その難しい理由も難しいですが、かんたんにたとえて言うと、
一戸建ては木造でも建つが、高層マンションには鉄筋コンクリが必要、
みたいな規模と工法の違いです。

ですので、組み込みなどでCのみ使う開発環境もあるにはありますが、
プログラマとなる人の多くは、C++やJava(またはWeb系言語)へ進みます。




ではC++とJavaはどう違うか、という話ですが、
最強を目指すのがC++で、
最善を目指すのがJavaです。


C++では便利そうな機能は何でも詰め込み、
何を使うかはプログラマの選択に任されます。

Javaでは危険性のある機能は禁止します。
言語があらかじめお膳立てをします。

C++のほうが実行速度など性能が高いですが、
それだけ学習コストも大きくなっています。

C++はCと互換性がありますが、それでも、
本格的な習得にはふつう何年もかかります。

そうなるのはたとえば、C++だとメモリ管理など
低水準レイヤを自分で操作するからです。

Javaだと自動(ガベージコレクション)でやってくれます。
C++がマニュアル車だとすると、Javaはオートマチック車です。


昔はJavaだと遅かったです。重くてアプレットも流行りませんでした。
C++でないと実用的な速度で動かないという状況がよくありました。

しかし、コンピュータの性能は年々高くなるので、
今はC++よりJavaを使うほうが増えています。
JavaがAndroidの開発言語なのも大きいです。

3Dゲームなど性能が要求される分野はC++が多かったですが、
それも最近はJavaに似たC#にだんだん置きかわってきています。




さて最初の話に戻ると、やはりJavaがおすすめだということです。
面白みに欠けるが欠点は少ない言語なので、迷ったらJavaが無難です。

プログラムは一行でも間違っていると正しく動かないので、
多少面白みに欠けても、優等生的で欠点が少ないJavaが市場で選ばれたのです。

逆にもし、C++をすすめる状況があるとしたら?
それは明確な目的があるときです。

たとえば、将棋でボナンザなど有名プログラムに勝ちたいとか。
これは相手との勝負なので、性能差が重要になってきます。
とすると、習得に何年かかっても、
C++で組まないと勝てる可能性はまずないでしょう。


なお、ご質問がC、C++、Java、という三択だったので、
その中からJavaと答えましたが、もし無制限であれば、
RubyなどLL言語も面白みがあって使いやすいです。
大規模にはJavaのほうが向きますが。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/29 01:28

    すごく分かりやすく、納得できる内容でした。
    周りの人間が勉強するならjavaが良いといっていた理由が少しはわかった気がします。
    回答者様の考えでは(片方に傾いているが)2言語を同時に勉強するべきか、
    一言語に慣れるべきか、どちらが初心者には正しい勉強方法だと思いますか?

    キャンセル

  • 2015/08/29 02:37

    >2言語を同時に勉強するべきか、一言語に慣れるべきか
    私は一言語派です。問題を分割して各個撃破するのが良いです。
    たとえば、英語と中国語を同時に学んだら、早く覚えるかというと疑問です。

    言語を切り替えると頭の切り替えに時間が掛かりますから、
    学習であれば少なくとも1ヶ月くらいは継続して同じ言語を使いたいところです。
    (仕事や授業などの場合は、そう自由にならないでしょうが)

    ただこれが、英語とスペイン語のように
    関係が近い言語だと微妙になってきます。

    HTMLとCSS、JavaScriptとPHPなどのサーバサイド言語のように、
    同時に複数必要になる言語でしたら、べつに構わないと思います。

    しかし、やはりC++の場合は、片手間で覚えられるほど易しい言語ではないです。
    C++だけに専念して何年もかかるような感じなので、多言語の同時学習には向きません。

    キャンセル

  • 2015/08/29 12:34

    わかりました、一つに専念するようにします。
    何度も有益なアドバイスをありがとうございます

    キャンセル

0

自分はどちらに関しても素人ですが・・・

どちらに進むか迷われるのは、何をしたいかがまだハッキリしていないからではないでしょうか?
osmoc-1970さんのご回答のように、必要が生じるまではC言語の理解を深めるのも実際的な方法だと思います。

C++とJavaは、昔から絶えず比較されて来ましたが、それぞれ目的の異なる言語ですので、互いの特徴を並べることはできても、どちらが優れているとは言い切れません。
諸先輩に尋ねると、返って来る答えは二つに分かれるはずですが、それはどの先輩も、自分のやりたい、あるいはやらねばならないこと、つまり目的に合わせて選らんだ言語を使い込んでいるので、自分の使っている言語を「良い」と勧めるのは自然なことだからです。

俗に、 でも I でもなく、字型の学習方法が良いと言われます。つまり、幅広い知識は必要だけれども何かひとつ「得意分野」を持つべき、ということです。

プログラムの基礎的な概念をしっかり身に着けるのに、どの言語でなければダメということはありません。むしろ、アルゴリズムのような基礎をしっかり学習したいなら、むしろC言語が向いていると思います。

そのうち、オブジェクト指向を使う必要性が生じた時点で、何をやるかに合わせて進む方向性を決めても遅くありません。ひょっとしたら、その時点でもっと別の選択肢が登場するかもしれませんし。

その上で、 の部分の知識のために、参考になりそうなページのリンクを貼り付けておきますので、お時間がありましたらご参照ください。

CとC++の違い
→ 焦らず C言語 を極めてみる価値を理解できると思います。

C言語とC++を比較してそれぞれの長所と短所を…
→ それぞれの長所と短所が箇条書きでまとめられています。

JavaとC++の比較
→ 両言語の「歴史的背景」から特徴が説明されていて解りやすいです。

以上、ご参考になれば幸いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/29 01:30

    なるほど、納得です。
    まずはc言語にしっかり向かい合っていこうと思います。
    ありがとうございました

    キャンセル

0

C言語とJava言語の両方を押さえることで、今後の技術習得を効率的にすることができます。
ですが、プログラマーは一つの言語に固執する人が多いです。言語はあくまでも道具なので、目的に対して最適な道具を選択できるようになるべきです。
そのために重要なことは各言語の違いを理解し、受け入れることです。
質問の回答に戻ると、次は全く方向性の違うJavaを学習することをお勧めします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/29 12:33

    javaですか、各言語の違いを説明できるくらいにいつかなりたいですね。
    ありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    javaの正規表現でjava.lang.StackOverflowErrorになってしまう原因と解決...

    正規表現が長すぎるのか、比較文字列が長すぎるのか、それとも別の原因があるのか全然わかりません。 初心者なので教えてくれると助かります。

  • 解決済

    一元配列を二次元配列の任意の列に代入したい

    戻り値として一元配列double[]を返すメソッドを作りました。 そのメソッドの戻り値を、あらかじめ用意しておいた二次元配列の任意の列に代入したいのです。 これが任意の行であるな

  • 解決済

    java.util.ArrayList;について

    コード public static void main(String[] args) {                  int num = 5;         int i

  • 解決済

    図形が表示されません

    以下のコードで実行してみると、ウインドウは表示されるのですが図形が表示されません。何が原因でしょうか?また、どうすれば改善できるでしょうか? import java.awt.*;

  • 解決済

    ボタンを動的に作る方法

    ブックマークを管理するGUIアプリをSwingで作ろうとしています。 まずJsonで管理しようと思いJsonにサイト情報を追加するコードを作りました。 それからGUI部分を作ろうと

  • 解決済

    イメージを表示するタイミングを調整できません

    下記のソースコードで実行してみたところ、自分ではAの画像が最初に背景のように表示されてその1秒後にBの画像が出ることを想定していたのですが、実際に試すと最初に何も表示されていないウ

  • 解決済

    Serviceクラスの引数について

    Controllerの引数はFormクラスで受け取ればよいと思うのですが、 Serviceクラスの引数/戻り値は何(Dto, Entity, Form, other)で受け渡しする

  • 解決済

    コーディングについて

    独学でJavaを勉強しています。 まだ基本知識があるくらいです。 抜粋してありますが、 numが1ならmethodA()、methodB()を2回おこなう。 それ以外なら1回。

同じタグがついた質問を見る

  • C

    3685questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。