見出し画像

プログラミング的思考とは?

 まず、プログラミングとは何者か?

思いついたこと・考えたこと・イメージしたことをデジタルの世界で実現すること、それがプログラミングです。

 デジタルの世界というのは、コンピュータの中だったり、インターネットの中だったりするわけですが、もっと広く言うと、電気で動いている物なら大抵それに含まれます。
 ところで、そこで何かを実現するのは実は意外と簡単なのです。なぜなら自然条件に左右されないから、そして人の感情みたいなものに動かされないから。
 ロケットを打ち上げるには、風の強さや向き、空気抵抗、部品の強度・配置・バランスなどいろんなことが影響します。ですから、それらすべてに注意を払わなきゃいけない。計算上はうまく打ち上げられても、本当に成功するかどうかは、何度も実験してみなくちゃ分かりません。
 人と人が話し合って何かを決めるには、それぞれの人の立場・事情・感情を汲み取らなければならない。とはいえ、それらははっきり目に見えるものじゃないし、当人に分かっているとも限らない。そして、それらが陰に陽に決定に影響するから難しい。
 デジタルの世界にそういうものはありません。だからデジタルの世界では、思いついたこと・考えたこと・イメージしたことが案外たやすく実現できるのです。現実社会で実現するより、実ははるかに簡単なのです。実験も根回しも要らない。筋の良いアイデアはすぐに実装されます。
 デジタルの世界と言いましたが、そんなに狭い世界じゃありません。実はすごく広大です。身の回りにはたくさんのデジタル機器があります。しかも今やそれらの多くがインターネットにつながろうとしています。車やインターホンやエアコンなど。やり方次第ではペットの餌やりや庭の水まきだってネットにつながります。遠くにいるロボットとだって、ロボットがネットにつながってさえいれば、一緒に楽しくおしゃべりできうる。それを実現するのがプログラミングです。
 プログラミングを通して、あなたが思いついたこと・考えたこと・イメージしたことは大抵何でも実現できます。ザックリ言えば、そういうことです。さて、何ができるでしょう? 何をしたいかな? 何ができたらうれしい? そんなことをイメージしてみましょう。そこからプログラミングが始まります。

 次に、プログラミング的思考とはどんなものか?
 プログラミングとはコードを書くことだけではありません。それは「思いついたこと・考えたこと・イメージしたことをデジタルの世界で実現する」ための一連の作業を指します。すなわち、あるときは顕微鏡を覗き込むような目線でコードを書き、あるときは望遠鏡で遠くを見つめるような目線でゴールを見据え、またあるときは空を飛ぶ(あるいはドローン)の目線でシステム全体を俯瞰する。このように

「目線が遠く(ゴール)と近く(コード)と全体(システム)とを自由に行き来する」こと

これがプログラミング的思考です。

 そう考えると、プログラミングする上で最も大事なことは「言葉にする」ことと言えるのではないでしょうか。自分は何を実現したいのか、それができると何がどのように変わるのか、それを実現するための条件は何か、そんなことをまず自分で考えて納得して、そして仲間と共有する。その上で、コンピュータに理解できる言葉で分かりやすく語りかける。この一連の作業のあらゆる場面で「言葉にする」ことはとても重要です。

  その力を養うために私がお薦めしたいのはExcelです。自分でモデルを作り、正しく動くように関数式を組み立て、他人に視覚的に伝えるためにグラフ化する。この流れの中にプログラミングに必要な要素が一通りそろっています。
 ところで、Excelは表計算ソフトというより、シミュレーション・ソフトです。私はそう認識しています。現象をモデル化するのは、人。Excelに指示を与えるのも、人。その指示に従って、計算・処理するのがExcelです。人がモデル化してコンピュータがシミュレーションするという意味では人工知能も同じです。
 以上のことから私は思うのです。人工知能(AI)を学ぶには「Excel → 統計 → 人工知能」と進むのがたぶん最も近道ですよ。一人で黙々やるより、みんなでワイワイ・ガヤガヤ、力を合わせてやりましょう。

この記事が気に入ったらサポートをしてみませんか?