ページ 11

C++を覚えるためにC言語は必要ないんですか?

Posted: 2016年4月05日(火) 08:11
by neet
C++を覚えてネットアプリを作ってみたくて、まずは簡単そうなC言語から勉強してるんですが
「C言語の変な癖がついて分かりにくくなるからC++からやったほうが良いよ」というのを見かけて気になってしまって…
C++というものはC言語を覚えなくても理解できるものなのでしょうか?
ちなみにプログラミング言語の学習はC言語が初です

Re: C++を覚えるためにC言語は必要ないんですか?

Posted: 2016年4月05日(火) 09:05
by hide
c言語ができない人がc++を使いこなすのは不可能でしょう。
まともに学んだ場合の難易度の差が非常に大きいです。
ただ、古くて参考にすべきでない部分も多いのでそこは気をつけるべきです。
個人的にはc言語の入門書が余裕になったらやりたい分野に合わせて新しい言語を選択すへきとは思います

ちなみにネットアプリが何を指すかちょつと判断しかねるのですが、
本気で爆速サーバー0から作ってみせるぜ!とかでなければ
c++を学ぶのは間違いかと思われます。
ただの通信ならばc++である必要はありませんし
サーバーならばJavaやRuby等が良いです。
また、WebならばJava Scriptでしょう。

Re: C++を覚えるためにC言語は必要ないんですか?

Posted: 2016年4月05日(火) 12:44
by YuO
変な癖はともかく,
  • C++は(ライブラリの部分で仕様を参照しているとはいえ)Cとは異なる言語である
  • まがりなりにも使えるようになってから振り返ると,C++のプログラムを書く上で「C(固有の)の知識」が必要になることはまずない
といった面から,いきなりC++を学んでもよいとは思います。
ただし,現実的にいきなりC++を学んだ人というのはとても少ないため,C++から勉強する場合に必要な良質の資料が手に入らない,という問題がありますが……。

Re: C++を覚えるためにC言語は必要ないんですか?

Posted: 2016年4月06日(水) 01:35
by tk-xleader
 確かにC++は"概ね"C言語のスーパーセットになっています。そして多くの人がC言語を学習してからC++を学んだということから、C言語を学んでからC++を学ぶというのが一種のセオリーみたいになっているところがあります。ただし、C言語の学習を一旦経た方がいいかどうかは、時と場合によります。

 C言語では常識的なコードがC++では忌避すべきコードと考えられているようなことも多々あるのです。「C言語を学ぶと変な癖がつく」というのは、C言語では普通だけどC++では避けるべきコードを書いてしまいがちになるということから来てるんだろうと思います。ただし、C++はC言語に毛が生えた程度のスタイルでも使えるようには設計されています。

 ただ一方でC++からはC言語のコードを普通に呼べるわけで、Cインターフェイスを持つAPIやライブラリを呼ぶということになれば、APIスタイルというのは言語的特徴が如実に反映されるものなので、C言語の知識が必要だろうと思います。逆に、モダンなC++スタイルのAPI/ライブラリであれば当然C++の文化をそれなりに理解してなければならないわけです。

 「C言語の学習を経るべきかどうか」というのは、どのようなスタイルのコードを書き、また利用するかということによるということです。ただ、モダンなC++スタイルのインターフェイスを持つライブラリもそれなりに充実してます。ネットアプリということになれば、Aceやboost.asioなどのモダンC++スタイルのライブラリがわりとあるはずです。GUIとなるとQtやWxWidgetsなどが候補に挙がります。となれば、必ずしもC言語の知識が必要とはいえないだろうと思います。

Re: C++を覚えるためにC言語は必要ないんですか?

Posted: 2016年4月07日(木) 03:06
by neet
すいません遅れました^^;
とても濃い回答ありがとうございます。初学者なのであまり深いところは分かってませんが、うーんC言語を飛ばすか飛ばさないかは人によって違うんですね
でも多くの人はC言語からやってその後にC++をやってると聞いて自分の学習が無駄ではないことが分かって安心しました
とりあえずC言語の入門書くらいは余裕ってところまでいったらまた再び考えて見ようと思います
ありがとうございました。