web-dev-qa-db-ja.com

私は初心者です。 C ++ 11の学習を直接開始できますか?または私は古いC ++を学ぶ必要がありますか?

私は初心者で、プログラミングの知識はほとんどありません。

新しいC++ 11を扱っている本から直接C++を学ぶのが良いのでしょうか、それとも古くて最高のC++の本を勉強すべきなのでしょうか?

C++ 11を学ぶ前に、C++について少し知識がありますか?または私はそこから直接開始できますか?

C++ 11から直接起動すると問題が発生しますか?いいえの場合は、C++ 11に関する本をいくつか提案してください。

37
Dhananjay

初心者、特に他の言語でこれらの機能を使用した経験のある人にとって、C++ 11をよりわかりやすくする多くのユーザビリティの強化があります。 C++ 11のその他の変更は上級ユーザーのみが関心を持つため、主に違いを教えるように設計された本を手に取ると、圧倒される可能性があります。入手した本がC++の完全な初心者向けに設計されていることを確認してください。

とは言っても、既存のコードはたくさんあるので、最終的には古い方法を学ぶ必要があるでしょう。プログラマーが選択すれば、新しいC++ 11コードにも古い方法が含まれます。私は生活のためにC++を書いていますが、私の会社はまだ評価中 C++ 11互換のコンパイラーに慣れていません。

40
Karl Bielefeldt

C++ 11の使用を開始するために古いC++を使用する必要はありません。C++ 11には新しい機能がありますが、使用はオプションです。 C++ 11の機能を使用する方法を知っていることには利点があるかもしれませんが、古いバージョンの特異性を知っていれば、レガシー(11より前)のコードベースを操作するときに不利にはなりません。

C++を学ぶ は学習を始めるのに適した場所であり、 付録B は基本を学習した後にC++ 11の機能を教えます。

一部の人々がJava/CSharpなどをより簡単な代替言語として提案している理由を私は見ることができますが、CSharpに移る前に少しC++を学びました、そしてそれのために私は悪いプログラマーではありません、反対のプログラミングスキルは言語よりもはるかに深い構文/機能性とC++の強固な基盤により、他の命令型のOOP言語を簡単に学ぶことができます。

10
Joel

C++11の多くの改善にもかかわらず、C++はまだ簡単な言語ではありません。 Javaは、一部の人が思うほど簡単ではありませんが、非常に優れたパフォーマンス(多くの場合、C++とほぼ同じくらい速い)でより簡単な言語であり、より優れたIDEを提供します (おそらくVisual C++は現在のJava IDEですが、Linuxではうまくいきません)、より包括的な標準ライブラリ(JDK)、より多くのライブラリ(例休止状態[〜#〜]ジー[〜# 〜]Luceneなど)とメモリリークなし(まあ、ほとんどなし–まだメモリを構築できます) Javaでのリークですが、C++で行うよりも困難です)公平に言えば、最新のC++11を使用すると、メモリリークを回避するのがはるかに簡単になります。

C++ 11には、ラムダ、autoキーワード、移動セマンティクスなど、多くの優れた機能があります。確かにC++98よりもはるかに優れた言語です。 C++11現代のC++スタイルの要素 の新機能については、Herb Sutterによるこの概要を参照してください。

要約すると、私は誰もが少なくともC++をいくつか学ぶべきだと思います。過去10年間JavaScalaRubyまたはPythonでプログラミングしていて、CまたはC++に触れたことがない場合は、 C++11についてC++11を学び、プログラミングのスキルを向上させるときがきたと思います。

おそらく今後数年間はC++をあまり使用しないでしょう。Javaよりも強力な言語が必要な場合は、おそらくScalaを使用しますが、C++11を詳しく調べて、新機能、特にマルチスレッディングと並行処理に関するものを学び、理解する。

注意:本番環境で使用する予定がない場合でも、新しいプログラミング言語を学ぶことは常に役立ちます。

9
Jenny Casarino

言うのが難しい。

古いC++は地雷原であり、そのような獣をナビゲートする方法を学ぶのは素晴らしいことです。また、なぜ物事がどのように行われるのか、またさまざまな構成の意味するところを理解するのにも役立ちます。

繰り返しになりますが、古いC++は、コードを記述するときに必要なものではありません。

しかし、それでもなお、古いC++は、多くの業界がさらに20年間にわたって力を注ぐことになるでしょう。

C++ 11は大好きですが、今のところスタートアップでしか使えません。大規模なレガシーコードベースではありません。また、C++ 11に直接ジャンプすると、厄介なC++パーツの未開発のスキルが残る場合があります。高度なC++ 11コンストラクトがリークするか、構文的には正しいが論理的には正しくない方法で使用されているため、クラッシュすると逆効果になります。

8
Coder

深呼吸して、これを読んでください 記事 ピーターノーヴィッグ.

読んだ?さて、あなたが初心者なら、あなたは小さなステップから始める必要があります。 -ここに言語を挿入-後で来る可能性があるので、初心者向けのコンピュータサイエンス導入コースについては Coursera または dacity を確認してください。

それが完了したら、ゆっくりとK&RのThe Cプログラミング言語 に設定している場合は、 '言語。

基本に取り組み、残りは間に合います。

2
lwm

C++に関する最近の入門書では、C++ 11についても取り上げられています。私は、スクリプト言語で作業した後、ほぼ10年間C/C++ではなく Sam's Teach Yourself C++ を読み、それが本当に役に立ったと感じました。私はすぐにC++の中心的なアイデア(多くのSTLを含む)に精通し、C++ 11とは異なる多くの詳細に気づきました。

他のいくつかのポスターが述べたように、C++ 11は、autofor(int &i : m_vector){}などのスクリプト形式の追加により、多くの点で以前の標準よりも簡単です。 PythonまたはMatlabのような言語では、C++ 11は以前の標準よりもいくぶん「自然」です。

また、C++ 11のコンパイラ互換性は( ほぼ )完全であるため、「コンパイルするには最新すぎる」というコードが問題になることはもうありません。

要するに、それを行います。

1
mmdanziger

私の時代、Cは、特にプログラミングの初心者にとって、C++の前提条件と見なされていました。言語が何をするのか、なぜそのように設計されているのかを理解する必要があるからです。 Cは、古くならないプログラミング言語のすばらしい十分なアイデアをたくさん手に入れました。したがって、これが最良のスタートだと思います。

そして、プログラミングに関する基本的な見方をした後、次の行動として何をすべきかを選択する必要があるかもしれません。つまり、できるだけ深く学ぶために言語を選択する必要があります。どれだけ深くても、他の言語でどれだけ深くできるかを決定できます。つまり、学習した言語がいくつあっても、最も深い言語が常に最初に掘り起こした言語になります。私は、Javaについて調査を行い、カーネルの機能をより理解するために、自分でいくつかのJavaのモデルを作成しました。

その後は、プログラミング言語のテクノロジーを完全に理解しているので、好きなことを学ぶことができるかもしれません。 C#、Go、Python= Scalaでも学習を開始しました。楽しい/仕事のために多くのプロジェクトを実行しました。個人の記録は言語の学習を開始してから3か月です。開発中のプロジェクトの1.0頭になるまで。

私の場合、最初のプログラムから15年以上が経過し、それが何であるかさえ思い出せません。私はあなたが十分に懸命に働けば、間違いなく私より良く、速くなると信じています。

0
WinstonWu