なぜすべての IT プログラマーがアルゴリズムを学ばなければならないのでしょうか?

序文

Google AI Research Institute の Shen Zhuoran 氏は次のように考えています。

実際の業務ではほとんどのコンテンツはアルゴリズムを一切使用しておらず、追加、削除、確認、修正、API接続、データ形式の調整などが行われます。さらなる作業は通常、アルゴリズムよりもシステム設計に関連します。アルゴリズムを単独で実装する必要があるのは、低レベル、最先端、または非常にパフォーマンスに敏感なシナリオの場合に限られますが、これらのシナリオではアルゴリズム以上のものが必要になります。実際、仕事でアルゴリズムを使いすぎないように注意する必要があります。ソフトウェア エンジニアリングの目的は、理解しやすく、共同作業し、保守しやすいコードを作成することであり、「スマート」に見えるコードやより効率的だがはるかに複雑に見えるコードを作成することではありません。
しかし、アルゴリズムが重要ではないと言っているわけではありません。実際の仕事におけるアルゴリズムの知識の最も重要な役割は、特定のアルゴリズムが存在することを知り、システムの基礎となる原理を理解したり、必要に応じて適切なアルゴリズムの実装を見つけて参照したりできるようにすることだと思います。

アルゴリズムは重要ですが、ポジションが違えば習得する度合いも異なります。フロントエンドとクライアントサイドの開発には、いくつかの基本的なアルゴリズムをマスターするだけで十分です。インターフェース層から切り離され、CPU、キャッシュ、メモリ、I/Oなどを扱うことが多いバックエンドの場合は、アルゴリズムを十分に検討する必要があります。

しかし、私が言わなければならないのは、面接でアルゴリズムの能力を重視するインターネット企業が増えているということです。

特に大規模な工場では、コード位置を記述する以上、手作業でコードを破ることを非常に重要視します。

実際、アルゴリズムの能力は、面接官がプログラマーにしっかりした基礎があるかどうかを判断するのに役立ちますし、プログラマーの問題を解決する能力を側面から見ることもできます。

[----プログラマーの向上を支援します。記事の最後にある以下の学習教材はすべて無料です。----】

アルゴリズムはアルゴリズム的思考とほぼ同等であり、役立つか役に立たないかを目的とした学習ではないことがわかります。それは、すべての人の認知力を高め、問題を解決する能力を向上させることです。

より良いアルゴリズムを学ぶ方法

書籍やインターネット上のコースを読むことで、一般的に使用されるさまざまなアルゴリズムやデータ構造の原則について学ぶことができます。

入門書では「Big Talk Data Structure」と「Comic Algorithm」がおすすめです。少し上級者向けには、「アルゴリズム 4」と「アルゴリズム入門」を読むことができます。

質問の磨き方については、最初に答えを探すのではなく、たとえ悪くても自分で気づくのが良いと思います。次に、答えを見て、より良い解決策を見て、理解を学び、なぜそれが自分より優れているのかを分析し、それを本当に理解すれば、他の人の最適化ポイントを見つけることができます。実際、それは結果志向なので、そのプロセスは非常に興味深いものになるでしょう。

古典的なアルゴリズムを学習するには、大きくいくつかのセクションに分かれています。

第 1 段階: 特定のアルゴリズムについて、まずそのアルゴリズムがどのような問題を解決するのかを理解する必要があります。それは特定の機能を達成するためのものである場合もあれば、時間計算量や空間計算量などのいくつかの側面で優れている場合もあります。研究されているこのアルゴリズムの目的を理解してください。

第 2 段階: 次に、このアルゴリズムの生存環境、つまり、現在学習している内容が他の知識に依存しているかどうかを確認する必要があり、まず基礎となる知識を理解して習得する必要があります。これらすべての問題が解決された後、アルゴリズム自体を学び始めます。アルゴリズムを理解するのは大変な作業です。最初は必然的に多くの混乱に遭遇します。たとえば、著者が語っていることの重要性を疑問に思うことがよくあります。 ? これらのコンテンツとこのアルゴリズムの間にはどのような関係があるのでしょうか? モヤモヤすることがよくありますが、実は作者の伏線は、アルゴリズムの主な内容を説明するための基礎を築くためにあり、それを受け入れて理解することで初めてアルゴリズムの本質に少しずつ触れていくことができるので、忍耐力が必要です。重要です。

第 3 段階: アルゴリズムの主要なプロセスを読んでも、まだ混乱を感じることがよくあります。主な理由は、このプロセスの何が良いのかわからないからです。これは次の段階に入り、優れた機能に対する作者の理解を理解します。またはこのプロセスの効率。上記の説明と証明。これはアルゴリズムの最も本質的な部分、つまりアルゴリズムの主要なプロセスを深く理解することで得られる恩恵であり、人間の理解力が最も発揮される部分です。

第 4 段階: 上記はアルゴリズム学習段階のプロセスであり、次のステップでは、アルゴリズムのコード実装を検討し、テスト ケースを設計してコードを実際に実行し、アルゴリズムの利点を次の観点から分析します。コードの実行時間、これもアルゴリズムへの理解を深めるためのもので、アルゴリズムを理解するプロセスです。

第 5 段階:最後は、トピック演習の方法で学んだアルゴリズムを使いこなし、アルゴリズムに対するある程度の感受性を持てるように、対応するトピック演習に協力することです。特定のトピックを見たときに、そのトピックの特性に従ってアルゴリズムとの対応関係を生成できること、つまり、1 つのインスタンスから他のケースについて推論を引き出すことができること。

1.Pythonの全方位学習ルート

IT担当者としては進まなければ後退するので、自分自身を高めることを忘れないでください。最新のプログラミングのトレンドにもっと注目してください。情報化時代の今、数万のデータを処理する必要があります。データ分析スキルは、現場のプロフェッショナルにとって標準装備となっています。

ハードスキルとは、Python、SQL、その他のツールの使用方法など、データ分析に従事するために必要なスキルです。ソフトスキルは主にいくつかの思考方法や一般的なデータ分析方法です。

ここに画像の説明を挿入

Python の学習を始めたばかりの場合、完全な学習ステップを計画していなければ、Python を学習することは基本的に不可能です。Python のあらゆる方向性を整理して、さまざまな分野の知識をまとめました。(高解像度の写真と以下の素材はすべて記事の最後で無料でご覧いただけます)

データ分析に従事するには、Python、SQL、その他のツールの使用方法など、いくつかの難しいスキルが必要です。

ここに画像の説明を挿入

2. 学習ビデオのフルセットを開始する

動画を見て学ぶ場合、手を使わずに目や頭を動かすだけではなく、理解した上で使うという科学的な学習方法があり、このような時にハンズオンプロジェクトは非常に適しています。

ここに画像の説明を挿入

3、Pythonの操作例

Pythonの学習は数学の学習と同じです。問題を解かずに本を読むだけではだめです。手順と答えを直接見ると、すべてをマスターしたと誤解されますが、実際にやってみると、まだ迷ってしまいます。問題が発生します。

したがって、Python を学習する過程では、チュートリアルを 1 〜 2 回読むだけで、より多くのコードを手動で記述することを覚えておく必要があります。

ここに画像の説明を挿入

4.Python採用プロジェクト実戦

高収入の仕事や高収入のアルバイトを見つけるためには Python を学ぶ必要がありますが、以下に企業で活用できる実践的なプロジェクトをいくつか紹介しますので、これらを学べば誰もが満足のいく仕事を見つけることができると思います。

ここに画像の説明を挿入

11 Django フレームワーク

ここに画像の説明を挿入

16 WeChatパブリックアカウント
ここに画像の説明を挿入

18 クローラーモジュールの一般的な使用法

ここに画像の説明を挿入

21 データ分析

ここに画像の説明を挿入

22 機械学習
ここに画像の説明を挿入

他にも、私が独自に作成した Python 入門のグラフィックチュートリアル、コンピューターがないときに携帯電話を使用して知識を学ぶことができるもの、理論を学んだ後、コードを入力して検証の練習をすることができるものなどがあります。中国語版Pythonのライブラリ情報やMySQL、HTMLタグなどもファンにプレゼントできるものです。

データ収集

これらはあまり価値のあるものではありませんが、リソースがない、またはリソースがあまり良くない学習者にとっては非常に良いものです。使用できる場合は、WeChat で以下の CSDN 公式認定の QR コードをスキャンしてください[無料アクセス]↓ ↓↓ 。

ここに画像の説明を挿入

良い記事をお勧めします

Python の展望を理解する: https://blog.csdn.net/SpringJavaMyBatis/article/details/127194835

Python のパートタイムの副業について学ぶ: https://blog.csdn.net/SpringJavaMyBatis/article/details/127196603

おすすめ

転載: blog.csdn.net/weixin_49895216/article/details/131509919