プログラマーはアルゴリズム思考をどのように向上させることができるでしょうか?

プログラマーはアルゴリズム思考をどのように向上させることができるでしょうか?

[[255991]]

継続的な学習と継続的な開発は、主流の IT 業界のプログラマーにとって日常的なことです。現代のテクノロジーは非常に速いペースで進化しており、常に自己学習と探求を続けることによってのみ、時代の変化に対応できます。プロの IT 実務家であっても、IT 初心者であっても、アルゴリズム思考を養う必要があります。優れたアルゴリズム思考を持つことの直接的な利点としては、面接で成功する可能性が高くなることや、日常の問題をより速く処理できることなどが挙げられます。

アルゴリズム的思考とは何でしょうか? それは、設計されたいくつかの優れたコードを繰り返し暗唱して暗記することではなく、問題を抽象化する能力、つまり、抽象的な問題から実際のコーディングやプログラム設計に移行して問題を解決する能力を自分で練習することです。単にいくつかのアルゴリズムを暗唱するだけでは、思考能力は向上せず、せいぜい熟練したコーダーにしかなりません。したがって、他の人が設計した優れたアルゴリズムを見ると、そのアルゴリズムの背後にある「曲がりくねった」思考の道筋を探る必要があります。思考の道の困難を乗り越えることによってのみ、アルゴリズムを永久に保持し、1 つの事例から推論を導き出したり、独創的なアルゴリズムを設計したりすることが可能になります。

個人的には、アルゴリズム的思考を向上させるためには、まず次のようなさまざまな厄介な問題について深く考える必要があると思います。

  • 旅行中にレンタカーを借りたい場合、特定の場所の駐車場に車が空いている確率はどれくらいでしょうか?車を持っている確率は天候や気温などの要因によって変わりますか?

  • 家に帰る前に携帯電話のアプリを使って家のエアコンを起動できればいいのですが、私はマニアなので既製品を使いたくありません。クラスメートに自慢するときに目立つように自分で作りたいのですが?

これらの問題を明確にした後、私たちはどのようにして小さなプログラムを書いて、自分たちでそれらの問題を解決するかを考え始めることができます。このとき、使い慣れた言語があれば、それは非常に適しています(たとえば、私は個人的にPythonが好きです。使用できるライブラリが多く、始めるのがとても簡単です)。そうでない場合は、各言語に適したシナリオを見ることができます。ただし、個人的には日常生活にもっと沿っていると思うクローラーやデータ分析に関連するプロジェクトの場合は、 Python 3から直接始めることを検討したほうがよいでしょう。後でRaspberry Piを使用してスマートホーム関連のプロジェクトをいくつか実行したい場合は、 Pythonも非常に適しています。

Pythonの学習には、さまざまな能力レベルをカバーできる非常に成熟したコースがたくさんあります。ここではCourseraを強くお勧めします。   ビデオ コースでは、ローカルのIPythonまたはLeetCode Playgroundを使用してデバッグと練習を行うことで、良好な結果を得ることができます。

例えば

アイデアを見つける

最初の質問を例に挙げてみましょう。駐車場の車両の状況を知りたい場合は、ネットワークの知識が必要であり、APPと関連ソフトウェアサーバー間の通信プロトコルを理解する必要があります。具体的なインターフェースを理解した後、特定のポイントの車両の数を定期的に判断するループを含むプログラムを作成できます。このプログラムはPythonで完成でき、関連するライブラリは2つを超えず、基本的にはrequests jsonライブラリです。

一般的に言えば、データを取得したい場合、コードは次のようになります (再帰によってポイントの車両情報を取得します)。

このような操作では、 import requestsimport jsonインポートするだけで済みます。

データの保存

対応するデータを取得したら、ファイルまたはデータベースを使用してコンテンツを永続化し、後で分析することを検討できます。このとき、 pymongoライブラリを使用できます。わずか数行のコードで、データが適切に保存されます。 (ここでは、公式アカウントの以前の記事「Python + MongoDB - 小規模プログラム用のツール」を参照できます)

Python でのインポート:

データ テーブルを指定して接続します。

追加、削除、変更、確認:

レコードを挿入します:

外部ディスプレイ

最後に、データの可視化を考えてみましょう(結局のところ、このコンテンツは他の人に見せるためのものです)。練習したいだけなら、シンプルにMatplotlibを検討してください。他の人に見せる必要がある場合は、Chart.jsを試してください〜

最後に、これらの操作が完了したら、プロセス全体を記録した記事を書くことができます。これを行う利点は次のとおりです。

  • 分析から実際の実装まで、小規模プロジェクトを自力で完了する能力を証明します

  • 関連する人々を引き付け、コメントを通じて開発の提案を得て、独自のプロセスを最適化します。

  • この探索を記録することは、独自のドキュメントライブラリを蓄積することと同じです。

さらに、この種の問題は普遍的であると思われる場合は、世界最大のゲイ出会い系サイトである GitHub にコードを置くことを検討できます。関連するユーザーディスカッションを得られるだけでなく、個人のソーシャルメディアで自分自身を宣伝することもできます。同様のニーズを持つユーザーを引き付けることができれば、GitHub アカウントの人気が高まるだけでなく、より多くの友人を作り、より多くのプロジェクトを作成する動機付けになり、より関連性の高いプロジェクト経験を積み、ポジティブなサイクルを完成させ、問題を発見し、アイデアを見つけ、問題を解決するアルゴリズムの思考プロセスにさらに慣れることができます。

<<:  AI時代の「ハードコアプレイヤー」になりたいなら、これらの8つの予測を知っておく必要があります

>>:  世界的な「AI+教育」の波が到来、第3回AIAEDグローバルAIインテリジェントアダプティブ教育サミットのハイライトは「ネタバレ」

ブログ    
ブログ    

推薦する

...

ジェネレーティブ AI がデータ センターの要件をどのように変えるか

データ センターとは何ですか。どのように使用しますか。具体的には、データ センターにはどのような種類...

Python による AI 音声クローン作成のエンドツーエンド ガイド

AI 音声クローニングは、音声の固有の特徴を捉えて正確に複製する技術です。この技術により、既存のサウ...

...

AIディープフェイク技術の2つの側面

著者 | 李世馨翻訳者 | 朱 仙中編纂者:Qianshan人工知能に関する議論にはしばしば論争が伴...

EUがAIを活用して社会イノベーションを推進する方法

[[377176]] 2020年の新型コロナウイルスの世界的な蔓延は、人類にとって永遠の記憶となるこ...

自然言語処理の他に、Word2Vec で何ができるのでしょうか?

機械学習の手法を使用して問題を解決する場合、適切なデータを持つことが重要です。残念ながら、生データは...

Go 言語 - データ構造とアルゴリズム プロジェクト

[[404457]]この記事はWeChatの公開アカウント「roseduanの執筆場所」から転載した...

インテリジェントロボット:ハイエンド製造レベルの重要な指標

[51CTO.com からのオリジナル記事] ロボット製造は現在、知能ロボットの時代である 2.0 ...

百度が「AI+X」を実践、AI教育が未来に向けて加速

3月25日〜26日、「新たな始まり、新たな発展、新たなシステム」をテーマにした第3回中国コンピュータ...

...

最も偽のGANモデル! Facebook、史上最強の移行機能を備えたIC-GANをリリース

[[425904]] GAN モデルは優れていますが、トレーニング データに対する要件が高すぎるため...

Tフロントライン | テンセントAILabとの独占インタビュー:「点」から「線」へ、実験室は単なる実験以上のもの

ゲスト:石淑明執筆者: Mo Qi校正:趙雲「ほとんどの研究は一つの点を中心に展開する傾向があるが、...