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

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

[[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がスマートグリッドにもたらす革新

スマートグリッドは、供給者から消費者に電力を供給する相互接続されたコンポーネントの複雑なシステムです...

...

ゼロからヒーローへ、OpenAIが深層強化学習リソースをリリース

OpenAI は、誰でも深層強化学習に習熟できるように設計された教育リソース「Spinning Up...

モノのインターネットはスマートな衛生設備を創り出し、都市環境の衛生を細かく管理します

旅行のピーク時に都市環境衛生がより大きな圧力に耐えられるか?清掃車両と清掃作業員をより適切に管理する...

AI推論の進化

AI推論市場はここ3、4年で劇的に変化しました。以前は、エッジ AI は存在すらせず、推論機能のほと...

...

オペレーティング システムのプロセス スケジューリング アルゴリズム (CPU 仮想化)

前回の記事では、オペレーティング システムが CPU を仮想化する方法についてすでに説明しました。今...

2022年の自動運転のトップ10トレンドが発表されました。データインテリジェンスシステムは、自動運転の商用化のクローズドループの鍵となるでしょうか?

「2022年は自動運転産業の発展にとって最も重要な年となるだろう。乗用車の運転支援分野での競争は正...

写真やビデオをロスレスで拡大しますか?これら2つのAIツールは持つ価値がある

編集者として、執筆という主な仕事に加えて、イラストレーションという非常に重要な問題を考慮する必要があ...

...

Google が AI で利益を上げている秘密は何でしょうか?

[[441488]]ビジネスプロセスはインテリジェントではないAI プロジェクトから価値を引き出す...

アルバータ大学のチームのプロジェクトは、しかめ面の細部まで完璧に再現した超リアルな肖像画を制作する

深層畳み込みニューラル ネットワークは、顕著なオブジェクトの検出に広く使用されており、最先端のパフォ...

6144個のTPU、5400億個のパラメータ、バグ修正、ジョーク解釈など、GoogleはPathwaysを使用して大規模なモデルをトレーニングしました

Google の次世代アーキテクチャ Pathways は、大規模なモデルのトレーニングに使用されて...