Electronics

2016.04.13

プログラミングを教えるのを止めて、コンピューター的思考を教えよう

Text by Tom Igoe
Translated by kanai

学校管理者や教育者たちは、今、すべての学生がコンピューターサイエンスを学ぶべきだと熱心に考えている。「私たちが住んでいる今のこの世界を考えてみてください。コーディングやその他の基本スキルを持つことで、何百、何千といういい仕事に就けるようになります」と語るのは、ニューヨーク市長のビル・デ・ブラシオだ。すべての人がプログラミングを学ぶべきだという考え方には同意するが、デ・ブラシオ市長の動機には同意できない。いい仕事を得るためにプログラミングを学ぶ必要はない。コンピューター的な思考を学ぶことで、自分の世界を理解し、説明できるようになるのだ。プログラムを学べば、さらに表現豊かな人間になれる。

私たちは、いろいろな形で自己表現を行う。そのそれぞれに核心となる要素がある。音楽家は音階、リズム、音色に依存する。視覚アーティストやデザイナーは、色、形状、スケールを使う。パフォーマーは動きと、ジェスチャーと、タイミングを使う。コンピューター的思考にもまた別の表現方法がある。そしてこれも、いくつかの核心的要素から構成されている。入力と出力でコンピューターを外の世界とつなぐ。変数と呼ばれる名称付きメモリーアドレスが、気温、預金残高、ボタンを押したか、などの重要な属性を記録する。条件文は、ひとつの属性が明らかに変化したときにどうするかを決める(たとえば、「もし私の預金残高が10ドルより低くなったら、自分にメールを送る」のように)。さまざまな形体の繰り返しループはシステムの入力の変化を継続的にチェックし、出力を更新する。関数は、複数の命令文をまとめた繰り返し使える作用だ。こうした概念が、どの形態のプログラムにも流れている。

ものを作るのが好きな人なら、コンピューターを使ってデザインしたり、またはコンピューターを組み込んだりするだろう。自分は初心者だと思っている人でも、こうしたツールを使う限り、プログラムを学んでいることになる。コンピューターのプログラムは数学の塊だと考えるのは間違っている。プログラムとは、状況を正確に説明することだ。そして、条件が変化したときに、どうするかを正しく指示することだ。

こんな日常の光景を考えてみよう。
» 気温が18度以下になったら暖房を入れる。
» ドラムソロが始まったら、ギターの音を絞って、ドラムセットにスポットを当てる。
» 左に跳んで、右に一歩。両手を唇につけて、両膝をくっつけて。

このすべてにコンピューター的な思考が含まれている。これらはプログラムだと言ってもいい

コンピューター的思考のできる人はプログラマーだとは限らない。美しく複雑な模様を描くイラストレーター、マインクラフトでクールなギズモを作る人、MIDIシンセで微分音を使ったクレイジーなジャズソロを演奏する人もそうだ。そうした人たちは、コンピューターに話をさせる方法を知っているだけでなく、何を言わせようかを想像できる人でもある。「どんな言語を学んだらよいのか」とよく聞かれる。それに正しい答はない。なぜなら、プログラミングを始めたら、いくつかの言語を学ぶことになるからだ。自分がコンピューターを使って楽しいと思えることを考えてみよう。そして、それを実現させるために必要な言語を選べばいい。新しい使い方が見つかるごとに、新しい言語を学ぶことになる。そうして、よりよいプログラマーになり、コンピューター的思考の持ち主となるのだ。

言語に長けた人とは、話したり書いたりするのが上手というだけではない。同様に、プログラミングだけがコンピューターサイエンスではない。だからプログラムを学ぶのだ。どんな表現方法でも、それを学びマスターすることで、世界を見る目が広がる。

原文