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

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

ただいまの
回答率

90.36%

  • C++

    4069questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

C++の学び方などについて

解決済

回答 2

投稿

  • 評価
  • クリップ 2
  • VIEW 240

Negligible-n

score 5

C/C++はJavaなどの元になっている?という意見などがあり、また個人的に興味もあったので学ぼうと思ったのですが、C++は学んで損はありますか?
C++を学ぶ前に(Cの知識はもちろんですが)どのようなことを知っておくと良いのでしょうか?
また、おすすめのサイトや書籍などがあったらその名前とどのように使っているかを簡単に教えていただけるとありがたいです。もしC++以外で良いのがありましたらそれも教えて下さい。

  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • yohhoy

    2019/02/11 15:54

    あなた自身の他プログラミング言語経験・スキル情報を追記された方が良いと思います。

    キャンセル

  • Negligible-n

    2019/02/11 16:00

    失礼します。結構スコアが高かったのでもし良ければ意見をお願いします

    キャンセル

  • yohhoy

    2019/02/11 16:02

    バックグラウンドもわからない方に対しては、「本当に興味があるならぜひチャンレンジしてみては」としかお伝えできません...

    キャンセル

  • Negligible-n

    2019/02/11 16:20

    すみません
    ありがとうございます

    キャンセル

回答 2

checkベストアンサー

+3

C/C++はJavaなどの元になっているのは違いますよ。
Javaの元になった言語がc言語が正解です。

c++なら検索すればある程度は身に付けれますよ。
ツールはvisual studioがおススメです。

http://wisdom.sakura.ne.jp/programming/cpp/
ある程度なら↑で十分。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/02/11 15:58

    C++について調べているとosの知識が必要とか書いてありましたが具体的にどのような事なのでしょうか?ポインタはなんとなくは理解出来たのですが…

    キャンセル

  • 2019/02/11 16:03

    osの知識はコンパイラーなどの言語作りたい場合などにはいります。
    それは貴方が何をしたいのかによって、変わってくるので「要りません」とは容易に言えません。

    ポインタが理解できたのならc++の登竜門であるc言語はばっちりだな。
    後はクラスとかの話をすればある程度は身に付くはずですよ。

    キャンセル

+3

こんにちは。

C/C++はJavaなどの元になっている?という意見などがあり、

JavaやC#はC/C++の構文に強く影響を受けています。といいますか、C++の難しい部分をまるっと削除し、学習を容易にし、かつ、多少の速度を犠牲にして生産性を上げたようなイメージかと。
デメリットとしてはVMがないと動かないのでVM自体を書く意味がないです。OSのカーネルを書くのも実用的ではないでしょう。

また個人的に興味もあったので学ぼうと思ったのですが、

プログラマとしてのスキルアップのためにはたいへん有用と思いますよ。

C++は学んで損はありますか?

悩ましいです。C++はかなり学習難易度が高いので、ある意味人を選んでしまう言語と思います。
CプログラマがC++を学ぶことは常に有用と思いますが、ゴールがJavaの場合は微妙です。
JavaはC++に比べると格段に学習が容易ですので、同じ時間をかければそれだけ広く深く学べます。
Javaがゴールでしたら、コンピュータの仕組みを学びやすいC言語までで十分かも知れません。

C++には、各種参照やテンプレートなど難しくてJavaやC#には存在しない概念が盛り沢山です。これらは速度的な妥協をしないで生産性を上げる仕組みです。その分、学習難易度が高いです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/02/11 16:58

    その辺なんも考えずにC++でゲーム作ってた人間(主に私)からすると、各種参照やテンプレートなんか知ってて当たり前みたいになってました。そんなに難易度高いですかね...

    キャンセル

  • 2019/02/11 17:28

    回答ありがとうございます!
    Javaは有名なので例として挙げただけです。ゴールはC++と考えていましたのでやってみようかと思います!

    キャンセル

  • 2019/02/11 17:42

    stdioさん
    通常の参照とconst参照の相違だけでもそれなりかと。更に右辺値参照を使いこなすのは結構ハードル高いと感じてます。テンプレートはオーバーロードや部分特殊化、明示的特殊化、明示的実体化、暗黙的実体化なども難易度高いと思います。これらを簡単に把握できる人も存在するとは思いますが、私にとってはかなり難易度が高かったです。
    確かにこれらを容易に把握できる人もそれなりにいると思いますので stdio さんもその一人かも。

    Negligible-nさん
    おおっ!! C++の世界へいらっしゃい。応援します。
    私も解説を書いてますので、もし、よろしければ見てみて下さい。
    https://theolizer.com/cpp-school-root/

    キャンセル

  • 2019/02/11 17:43

    どうでもよいかもしれませんがほとんどの言語は手段でしかありません。
    ですので、まずはC++で何を最終目標にするかを考えましょう。

    キャンセル

  • 2019/02/11 17:52

    >>テンプレートはオーバーロードや部分特殊化、明示的特殊化、明示的実体化、暗黙的実体化なども難易度高いと思います。

    私にとって「テンプレートは基本扱いにくいゴミ」としか認識してませんね。
    もともと型にうるさいC言語の世界で型が要らないとか矛盾したこと言ってるから、基本使わないようにしてます。使うところを見極めて、出来れば使わないように心がければテンプレートは敵とは限りませんからね。その点auto型はある程度制限効いてて使い易いですね。

    キャンセル

  • 2019/02/11 19:05

    テンプレートは、型を与えた結果、不適切なコードが生成されようとしたら、概ねエラーになります。しかも任意の型に対してコンパイル時に検出できます。更にC#やJavaのジェネリクスと異なりコンパイル時に展開されますから、実行時のオーバーヘッドが最小限です。これにより、テンプレートを使いこなせばこなす程、信頼性がより高くより高速なプログラムをより短時間で書けるようになります。(便利ですよ。)

    しかし、頻繁に使うわけではないですし、多少速度を犠牲にするか手間を惜しまなければ使わないでも済みますので、 プロジェクトの性格によってはなるべく使わないという方針も「有り」と思います。

    キャンセル

  • 2019/02/12 09:41

    まぁ、頻繁に好き好んで使う物ではないので、案外わすれがちになってしまうのが現状です。
    便利と言われてもテンプレートが実装される前のC++を使っていた私からすると、型が決まってないと言われるだけで心配ですね。VBAのVariant型の様な扱いをしてしまいがちです。
    VBAは基本Variant型禁止言語ですからね...

    キャンセル

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

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

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

  • C++

    4069questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。