C/C++は基礎となる、きめ細かく、強力な言語ですが、学習曲線が急です。Pythonのような新しい言語に押され、やや老朽化していますが、AIoTデバイスの台頭とC++コミュニティが新しいバージョンをリリースし続けることで、この言語は活性化しています。
この記事では、C++の学習を入門、熟達、上級の3つの段階に分け、それぞれの段階に対応する学習方法とリソースを提供し、各パートで習得すべき知識ポイントをまとめ、復習と自己チェックができるようにします。この記事は、より多くの人々を助けるために更新されます。
紹介
新しい知識を学ぶには、早く始めることと完全な知識体系という2つの鍵があり、どちらか一方がなければ成り立ちません。スタートが遅いと、初心者はやる気をなくし、やる気をなくす効果があります。また、完全な知識体系がなければ、初心者は象を感じる盲人にすぎず、深く進もうと思っても難しく、長い間入門段階にとどまるだけです。私は様々な学習方法を比較して、オンライン授業はこの2つの良い方法と互換性があるので、この部分の主な推奨オンライン授業は、人間の認知曲線に沿って、知識を統合するために、高頻度かつ単純な演習を通じて、学習効率を向上させます。
言語そのもの
C++とCは異なる言語ですが、通常は一緒に研究されます。 C++はCの機能と完全に互換性があり、Cをベースにオブジェクト指向の機能を追加しています。
このパートで習得すべき主なポイントは以下の通りです:
- 基本構文:変数、条件、ループ、文字列、配列、関数
- ポインタ操作、メモリ管理:この2つの項目は、C / C + +の魂であり、言語の耐久性の鍵ですが、それはまた、諸刃の剣であり、良い使い方で大幅にプログラムの速度を向上させることができ、悪い使い方では、メモリリーク、さらにはプログラムのクラッシュにつながるでしょう!
- オブジェクト指向プログラミング:クラスの定義と使用、継承と派生、この機能はコードの優れた再利用とカプセル化を保証し、大規模なプロジェクト開発には必須です。
プログラミング言語をマスターしたら、次はオペレーティング・システムに対処しなければなりません。
応用練習
OSはWindowsとUbuntuの2大陣営がありますので、用途に合わせて選んでください。Windowsでプログラミングをする場合、Visual Studioは設定なしで使えるほど強力で、しかも無料なので、この部分は飛ばしても構いません!ここでマイクロソフトの雄牛[bleep-]を言います。
このコースのユーザーエクスペリエンスは、Zheng Liのコースほど親切ではありませんが、Linuxシステムの下でプログラミング操作を体系的に習得するには十分です。喬林先生の説明は詳しくありませんが、システムは完全で、初心者が非常に短期間でLinuxシステムの完全な知識を確立するのに役立ちます。説明は十分に詳細ではないため、問題が発生し、それを学ぶために検索エンジンで理解していません。
このパートで習得すべき主なポイントは以下の通りです:
- オペレーティングシステムでのソフトウェアのコンパイルと実行:コンパイラ、メイクファイル
- 一般的なシステムコール: system, getenv
ソフトウェア設計
アルゴリズムとデータ構造、コンピュータネットワーク、オペレーティングシステムは、コンピュータ試験に必要な3つのコースだけでなく、コンピュータ全体の礎石です。プログラマのこれらの3つの部分の知識を培うことは、それが他の言語やアーキテクチャ設計を学ぶことであるかどうか、深い内部の強さを習得するようなものです、より快適になり、半分の努力で2倍の結果。
アルゴリズムとデータ構造
習得すべき知識ポイント
- アルゴリズムの複雑さは、big-O記法を用いて分析されます。
コンピュータ・ネットワーク
入門の場合、このセクションは完全に飛ばしてもかまいません。ネットワーク・プログラミングを伴わない練習であれば、一時的にわからなくてもかまいません。必要であれば、まずTCP/IPの5レイヤーのネットワーク構造をマスターしておくと、ネットワークの問題に遭遇したときに、どのレイヤーが間違っているのかをすぐに特定し、素早くトラブルシューティングを行うことができます。
知識ポイント
- TCP/IP 5レイヤーネットワークアーキテクチャ
- よく使われるトランスポート層プロトコル:TCP UDP
- 一般的なアプリケーション層プロトコル:HTTP
オペレーティングシステム
知識ポイント
- コンピュータアーキテクチャ:CPU、メモリ、ハードドライブ、I/Oデバイス
- メモリースタックと関数呼び出し
- プログラムコンパイルのプロセス:編集→コンパイル→リンク→実行