特定の問題の解決方法をコンピューターに教えるためのコーディングを開始する前に、通常は、自分で問題を理解し、解決策を見つけてから、コンピューターにその問題への対処方法を教える必要があります。計算論的思考はこのプロセスをより速く、より簡単にするための手法ですが、プログラミングだけに限定されるものではなく、私たちの生活のさまざまな部分に応用できます。
Computational Thinking (CT) は、業界の専門家が「成功への規範」および「重要なスキル」と呼ぶ概念です。比較的単純ではありますが、CT は単なるソフトウェア プログラミングを超えて役立ちます。この用語は、1980 年に数学者でコンピューター科学者のシーモア パパートによって、プログラミング関連のさまざまな問題やタスクをより効率的に解決する方法として初めて提案されました。
CT は、複雑な問題を管理しやすい一連の小さな問題に分割すること、および問題の本質と解決策をコンピューターが実行できる方法で表現することを含む一連の手法です。
計算論的思考はどのように機能するのでしょうか?
技術としての計算論的思考は、分解、一般化/抽象化、パターン認識/データ表現、アルゴリズムの 4 つの主要な手法で構成されます。正しい順序で (問題に) 適用すると、それらはすべて同じように重要で効果的です。
分解
まず分解から始めます。分解とは、問題を 1 つずつ解決しやすい多数の小さな問題に分割することです。
抽象化(一般化)
次に、特定のタスク/問題に進み、それを解決するために重要な情報のみに焦点を当て、残りはすべて無視します。
パターン認識 (データ表現)
次のステップでは、現在取り組んでいる問題と、以前に解決された (解決策が利用可能な) 他の問題との間の類似点を探します。目標は、現在のタスクに適用できるパターンを見つけることです。
アルゴリズム
そして最後に、これまでのステップを適切に適用した結果を基に、段階的に問題を解決するためのアルゴリズムを開発します。その後、アルゴリズムはコンピューター (または人生におけるタスクを解決する究極のコンピューターである脳) によって実行されます。
計算論的思考の使用
大多数のソフトウェア開発者が定期的に取り組んでいる問題やタスクに対処するときに CT を使用する方法を知ることは、コーディングのキャリアを通じて非常に役立ちます。
ここでは、コーディング タスクや、私生活で対処する可能性のあるほとんどすべての深刻な問題に、計算論的思考を適用し始める方法についての簡単なガイドを示します。
分解の適用
分解は非常にシンプルですが強力なテクニックであり、一見すると複雑すぎるように見えるため、先延ばしやその他の困難を引き起こすことが多い問題やタスクに対処するのに役立ちます。ここで重要なのは、分解を定期的に使用できるように脳を訓練し、タスクを解決しやすい多数の小さなタスクに分割することです。分解は非常に単純で明白な方法のように思えるかもしれませんが、分解を知らない人がいかに多いかに驚くでしょう。そのため、大きなグローバルなタスク (Java の学習など) に取り組み始めることが非常に困難になっています。例えば)。
抽象化の適用
抽象化の適用方法を知ることは、そのテクニックを知っていて、それを無意識に使えるように脳を訓練していれば、強力な能力となります。抽象化とは、他のすべてを無視して、タスクを解決するために必要な情報のみに焦点を当てることです。分解と組み合わせて使用すると、基本的には人生のほぼすべての問題や課題にアプローチできる方法です。厳密にプログラミングされたタスクを扱う場合、抽象化は集中力を高め、脳がすぐに消耗するのを防ぐのに役立ちます。
パターン認識の適用
パターン認識は、脳が使い慣れていて使いやすい思考パターンを適用することで、タスクをより速く解決できるため、コーディングにおいて非常に重要なスキルです。これは、生活全般の問題に適用できる強力なテクニックでもあります。生活の中で直面している問題を分析し、生活の中で満足のいくパターンを見つけて(借用し)、それを現在の問題に移してみてください。
アルゴリズムの適用
考えてみると、私たちの生活はすべてアルゴリズムの形成にかかっています。私たちはそれらを習慣と呼びます。私たちの脳は、より効率的で実用的であるという理由だけで、毎日習慣に依存する傾向があります。唯一の問題は、私たちのほとんどが無意識のうちにこれを行う傾向があり、その結果、間違った有害なアルゴリズム(私たちはそれらを悪い習慣または依存症と呼びます)を形成してしまうことがよくあることです。有用なアルゴリズムを意識的に形成する方法を知ることは、非常に有益なライフ スキルとなり、目標を達成し、成功することができます。プログラミングに関して言えば、最も迅速かつ効率的な方法で特定の問題を解決するためのアルゴリズムを作成する方法を知っているかどうかが、コーディング方法を知っているだけの人と経験豊富なプロのコンピューター プログラマーを区別するものです。
GO TO FULL VERSION