独学プログラマになるための包括的なガイド
パートII:プログラマのように考え、計画し、実行する
問題を解決し、解決策についての理P>

C++を学び、簡単なプログラムを書き始める
前の部分ですでにPythonを学んだことがあります。 Pythonは使いやすさのためにプログラマから多くの低レベルの詳細を隠しているので、プログラマに優しい言語です。 しかし、進歩したい場合は、C++でのプログラミングの基礎を学ぶことが絶対に必要です。
何に焦点を当てるべきか: C++でコードを書くと、マシンレベルの記述に向かっているので、よりプログラマのように感じられます。 構文とセマンティクスの違いを学びます。 静的および動的な型指定、メモリ管理、およびポインタの学習に時間を費やします。 条件、ループ、関数、データ型、およびPythonで学んだものをC++で再び実装する方法を学びます。 このすべてがギリシャ語とラテン語のように思えるなら、心配しないでください。 リソースセクションでは、すべてがあなたに明確になります。
エラーの処理:エラーが発生したときはいつでも、落胆しないでください。 最も経験豊富なプログラマでさえ、プログラムにエラーやバグがあります。 あなたがしなければならないのは、エラーを読み、迅速なGoogle検索を行い、コード内の問題を修正することだけです。 あなたがこれを行う間、あなたが間違いを犯した場所を理解し、あなたの理解を修正し、続行します。 時には、ドキュメントのビットを読む必要があるかもしれません。 次のセクションを確認してください。
ドキュメントを読むことはあなたのための第二の性質でなければなりません
Google検索を行うのと同じように、プログラマのスキルは、ドキュメ ドキュメントを読むことを学ぶと、コードにコメントを付けたり、読みやすいコードを書いたり、コードのドキュメントを書いたりすることも学びます。なぜあなたはこれを学ぶべきですか?
なぜあなたはこれを学ぶ必要がありますか? 多くの人が新しい技術を学ぶことに苦労し、学ぶための既製のコースを探しています。 これは初期段階では問題ありませんが、あなたの知識が深まるにつれて、あなた自身に餌を与えるための既製のチュートリアルは見つかりません。 あなたはドキュメントを読んで、あなたが必要なものを拾う必要があります。 再度、情報をろ過し、仕事を終らせる必要があるものを丁度取ることを学びなさい。
練習します。 繰り返す 練習だ今、あなたは練習を続けなければなりません。
今、あなたは練習を続けなければなりません。 Hackerrankに向かい、そこにウォームアップと実装セクションのすべての簡単な問題を解決します。 あなたが解決できない問題がある場合は、議論を読んで、社説を読んで、あなたがそれを自分で解決する方法を参照してください。 あなたが理解していない何かがある場合は、Googleを使用しています。前の部分で測定を行っている場合は、ここで問題はありません。
あなたが苦労しているなら、私はあなたが戻ってそれらのセクションを再訪することをお勧めします。 あなたはコードを書くのが得意にならなければならないので、この部分をスキップしないでください。 アイデアは、あなたの平易な英語の解決策をプログラミングの同等物に表現することに堪能であることです。 あなたが言語の詳細によって行き詰まっていないなら、あなたは進むことができます。 Pythonで書いたすべてのプログラムをC++でコード化します。あなたは競争力のあるプログラミングの周りの誇大宣伝に出くわすかもしれません、私はそれが良いよりも害を行うので、この段階でそれから離れて滞在することをお勧めします。 あなたはパートIIIを終了したら、あなたはそれを試すことができ、右行われた場合、それは途方もなくあなたの問題解決のスキルを高めることがで
再帰をよく理解する

計算機科学者の心は、再帰を理解する能力にあります。 再帰することは、それ自体の観点から何かを表現することを意味します。 ループを使用してできることはすべて、再帰的かつ非常にエレガントな方法で行うことができます。 これを直感的に理解し、リソースで提供したビデオを見てみてください。 あなたが再帰を十分に理解していないソフトウェア開発者であれば、すぐにそれを行うことをお勧めします。これまでのところ、あなたは低レベルと高レベルの言語を知っており、プログラムに対する”コントロール”の違いを十分に理解することができます。
Summary
これまでのところ、あなたは低レベルと高レベルの言語を知っていて、あなたが持っている”コントロール”の違いを十分に理解することができます。 今では、PythonとC++を使用して簡単なプログラムを書くことができ、両方の言語の違いを理解できるはずです。ここから、多くの人々は、それ自体で無駄な運動に過ぎないより多くの言語を学ぶことのマンネリに入ります。
ここから、多くの人々は、より多くの言語を学 私は初心者から尋ねられる最も一般的な質問の一つは、”どのように多くの言語を知っていますか?”これは、プログラミングの腕前をより多くの言語を知ることに関連付けるとき、初心者が一般的にどのように見当違いの初心者であるかを理解す プログラミングは、多くの言語を知ることではありません。 あなたが使用する言語は、あなたがあなたの問題を効果的に表現して解決するための単なる方法です。 この段階では、あなたは”プログラマ”ですが、それだけでは不十分です。 あなたは今、次のレベルにあなたのスキルセットを取るためにコンピュータサイエンスを学ぶ必要があります。
パートIII: 計算機科学のあなたのTryst
この段階の資源の固体理解はあなたの同等者グループのほとんどのプログラマーよりよくさせる。 あなたも、インドのほとんどの2nd/3rd年工学学生よりも良くなることがあります。 ここからのあなたの進歩は、このセクションの材料のためのあなたの渇きに依存します。 だから集中してp>

このセクションのトピックのほとんどは、学部コンピュータ工学コースの2年目にカバーされています。 このガイドの目的に最も合うように、私はそれらに少し違ったアプローチをしました。
これは通常の学部課程とどのように違うのですか? 通常の学部カリキュラムには理論が満載されています。 私がリソースセクションで提案したコースは、理論と実践の良いミックスを持っています。 これはエンジニアを志望するための良いことかもしれませんが、そこに素人のために、それは非常に有用ではありません。 あなたは理論が終了し、練習が始まる場所のトラックを失います。 私はあなたがまっすぐに行くと練習することができるように、理論的に学ぶために必要なものを正確に指摘します。 理論は、この段階でより良いコードを書くのに役立つツールに過ぎないので、あまりにも重く行き詰まってはいけません。楽しい事実:工学の私の第二学期では、私たちはDBMS(データベース管理システム)と呼ばれる科目を持っていました。 私は彼らのデータベース設計のための最高のER図を描くだろう人を見つけるために驚いたが、それは実際に実用的なアプリケーションのためのデータベース 彼らは図の詳細を正しく取得することに集中していたので、彼らは最初にそれをやっていた理由を忘れてしまいました。 彼らは、図がより良いデータベースを構築し、スケッチスキルを向上させるのではなく、図がそこにあると教えられたことがなかったので、私は彼らを責あなたはすでに無意識のうちに離散数学を使用してきました。
離散数学
あなたはすでに離散数学を使用しています。
離散数学 離散数学は、計算機科学で繰り返し使用されていた応用数学の分野の組み合わせです。 この分野の専門家は、それをすべて一緒にクラブにし、それに名前を付けることに決めました—私たちは今離散数学と呼んでいます。div>
女の子を心配しないで、彼女は最初のプログラムを書いた
女の子を心配しないで、彼女は最初のプログラムを書いた ![]()


離散数学を学ぶときは、私がパートiで概説したのと同じ原則に従ってください。 離散数学は、単に問題に取り組むためのあなたの処分でツールの数を増加させます。 あなたが数学の恐怖を克服したならば、あなたは私がリソースセクションでリンクしたコースを徹底的に楽しむでしょう。
データ構造とアルゴリズム
これはあなたの旅全体のバックボーンです。 実際には、あなたはすでにずっとデータ構造とアルゴリズムを使用してきました—再び無意識のうちに。 今、私たちはそれを形式化し、これをより詳細に研究します。

経験豊富なプログラマとして、あなたはどこでもデータ構造とアルゴリズムを使用します。 それを十分に理解することは、一般的な問題に取り組むための効果的な計算構造を構築するための数学的スキルとツールを拡張します。 また、コンピュータサイエンスのいくつかのテーマを解決するための青写真のようなさまざまなアルゴリズム設計技術を学びます。
多くのチュートリアルでは、アルゴリズムとデータ構造をまっすぐに学習するように指示されます。 私がこれをしなかった理由は、あなたが問題に対する固定された考え方とアプローチを持っているEinstellungに入るからです。 私を信じて、それはあなたが箱の外で考えていないので、あなたの思考を不自由にします。 これの終わりまでに、あなたは偉大な問題解決者とコーダーになります。
ベストプラクティス
ソフトウェアを書くことは、物事を成し遂げるために偶然にコードをまとめることだけではありません。 ほとんどのプロの環境では、コードベースで作業する唯一のプログラマではありません。 チームの全員がコードベースを簡単にプログラミングできるようにするには、特定のガイドラインと規則に従うことが重要です。 これにより、他の人が書いたコードを理解しやすくなり、その後、他の人があなたのコードを理解しやすくなります。 あなたがジュニアソフトウェア開発者であれば、このセクションに焦点を当てます。あなたは何ができますか?
あなたは何ができますか?
時間を理解し、乾燥した(あなた自身を繰り返さないで下さい)主義を練習に置くことを使いなさい。 これはあなたを遅くし、間違いを起こしやすくするので、反復的なコードを書いてはいけません。 便利なコメントやドキュメントを書くことができますどこにでも。 私が始めたとき、私はこれが愚かなことだと思っていましたが、ある日、古いプロジェクトを開き、私のコードがすべて理解できないことに気付きました。 プログラマとして、あなたは多くを暗記する必要はありません。 重要であるものを暗記し、必要とされるものを調べる。これは私が早期に始めたものであり、コードを整理するのに非常に役立ちます。 変更を追跡し、特定の機能を実装するために必要な変更を正確に把握できます。 また、すぐにバグを防止し、修正する方法を学びます。 私はGitが何であるかさえ知らない若いエンジニアをたくさん見ていますが、それは非常に悲しいことです。 彼らはバージョン管理を使用して彼らの全体のキャリアを過ごすでしょう—あなたがそれらの一人であれば、以下のリソースに直
オブジェクト指向プログラミング
プログラミングの完全に新しい方法への紹介。 これまでのところ、手続き型プログラミングを行ってきました。 今、私たちは完全に新しいパラダイムであるオブジェクト指向プログラミングにシフトします。 データのカプセル化と抽象化の概要は、このガイドがどのように設計されているかを理解するのに役立ちます。 OOPでは、すべてがオブジェクトであり、そのアイデアはインターフェイスと実装を明確に分離することです。 あなたもクラスと継承を学びます。 最後に、オブジェクト指向ソリューションの設計を開始し、問題を解決するための巧妙なブラックボックスを構築する方法を学びます。 Javaの学習は、この新しいプログラミングパラダイムを始めるための良い方法です。 PythonもOOPをサポートしているので、それを試してみてください!
Practise Hard
コードスニペットを書いて、このセクションのすべてのスキル/コンセプト/アルゴリズムを練習します。 あなたが取得した新しい知識で古いコードを書き換えます。 小さいプログラムを書き続け、あらゆる段階でそれから新しい何かを学びなさい。/div>

あなたが進行するにつれて学習を続けます。 私は非常に多くの異なる方法で電卓、ライブラリ管理システム、数値計算スクリプトを構築している、と毎回、私は別の何かを学びました。 あなたは最終的にすべてを修正するための黄金の弾丸がないことを認識するようになります。 人生はトレードオフに満ちています。 それが不完全さの美しさです。あなたはゲームを変えるソフトウェアを構築するのに十分以上のものを知っています。
概要
あなたはゲームを変更するソフ 次のステップに進むには、ここまでのすべてを内部化する必要があります。 ここから、より多くの理論はあなたに何の役にも立たないでしょう。 有用なプロジェクトを練習し、造ることに時間をもっぱら投資するべきである。 プログラミングは応用科学である-練習する時間の80%および理論を読む時間の20%を使うことを意味する80/20の規則に続いて下さい。
パートIV:それはあなたがいくつかのクールなものを構築するための時間です
あなたはTにここまでのガイドに従ってきた場合、あなたはよく先に行くと、あなたの履歴書に置くことができ、いくつかの素晴らしいプロジェクトを構築するために装備している、あなたの友人にショーオフ、あるいはあなたの仕事から収入を生成することができます。 この段階では、私は道に沿って物事を学ぶ方法を教えたいと思います。 あなたが取るか、またはに割り当てられるあらゆる新しいプロジェクトは新しい何かを学ぶことを要求する。 右の態度とのこれに近づくことは重要である。div>

プロジェクトを取り上げるたびに従うことができるガイドラインがいくつかあります。 私は自分自身のためにこのルーブリックを開発し、それがあなたの人々が新しいプロジェクトを取っているために便利であることを実現しました。作業している問題を特定し、詳細について非常に具体的にしてください。
- あなたの目的および目的について明確がありなさい。
- 既存または類似のプロジェクトを検索し、彼らが優れている場所と欠けている場所を特定します。 あなたのアイデアがどこに収まるか、プロジェクトがあなたが念頭に置いている目標や目標とどのように整列し、すべてのメモを作るかを見てくださ
- プロジェクトを行うために学ぶ必要があるすべてのスキルと、プロジェクトを完了するためにスキルを開発する必要がある範囲のリストを作 あなたの長所と短所を知っています。
- 必要なスキルを学ぶための計画を作成します。 あなたと始めるために必要なチュートリアルを助けるために右の人々を識別します。 あなたのプロジェクトを終らせるために技術の開発に専ら焦点を合わせなさい。 詳細に行くことに夢中になるのは簡単です。 覚えておいて、あなたはプロジェクトを完了し、博士号を書かないためのスキルを学んでいます。 それがあなたの目標でない限り。
- プロジェクトを開始し、あなたの目標と目標を更新し、あなたの強みと弱みについて非常に明確にしてください。 プロジェクトを実行可能なサブタスクに分割し、それぞれに客観性指標を割り当てます。 これは、完璧を追いかけて停止し、全体像に焦点を当てるときに知っておく必要があることを意味します。
- イライラして実行します。 すべてのあなたの目的が達成されるまで繰り返しなさい。
より良い学習者になるためのヒントやコツについては、これを読んでください。
あなたの既存の知識を考えると、あなたはウェブサイト、モバイルアプリケーション、ゲーム、小さなスクリプト、Chromeプラグイン、デスクトップアプリ、およ 私は次の記事でこれについての詳細を提供します。 あなたのベルトの下でいくつかの完了したプロジェクトを持っていたら、あなたはフリーランスに十分な開発者になり、あなたが学生なら収入の素晴ら あなたが別の分野から来ている場合、これはあなたに技術であなたの現在の仕事を強化することができるように十分な強固な基盤を提供します。 あなたの現在のスキルセットでできることは無限であり、ブログ投稿全体でさえそれを正義にすることはできません。