コンピュータとソフトウェアは、まぎれもなく、私たちの生活の重要な部分を占めている。私たちの多くは、ソフトウェア開発者としての仕事を楽しみ、天職を見つけ出して満足しているだろう。
でも、学校でのコンピュータ教育、大学でのコンピュータサイエンスはどうだろうか? Officeとアルゴリズムを学べば十分なのだろうか? 基本的なプログラミングの概念を理解している人は、業界外にどれくらいいるのだろうか? これは全員が学ぶべきものだろうか、それとも、そんな必要はないだろうか?
2013年12月9・5日のコンピュータサイエンス教育週間、非営利団体のCode.orgがBarack Obama大統領、Bill Gates氏、Mark Zuckerberg氏、Richard Branson氏、Jack Dorsey氏といった著名人からのサポートを得て、プログラミングの基本概念「命令、繰り返し、条件分岐」を全員に学んでもらう大きなキャンペーンを開始した。初日だけで、400万人もの人たちが学び、1億行に相当するコードが書かれた。
そこではblocklyのドラッグ&ドロッププログラミングの愛嬌のあるバージョンが使われている。スプライトとしてAngry BirdsとPlants vs. Zombiesを使い、Gates氏が「if文」を説明したり、Zuckerberg氏が「繰り返し」について話すビデオがちりばめられた、20のシンプルな課題を提供している。
たった数分間と相当の反復により、最年少の生徒ですら、ソフトウェアを構築する基本概念を理解することができる。これはすごいことだ。
声を大にして主張したい。プログラマである親は全員、休日前の気の抜けた時間を使って、生徒の学校に働きかけよう。hourofcode.comの取り組みを子供たちにプロモートし、子供たちがこの1時間の課題を経験する余地と機会を作るのだ。学校がサポートしてくれなくても、家や図書館でもできる。課題はPC、Mac、タブレット、スマートフォン(私はこれで試した)など、最近のブラウザを備えたデバイスなら何でも動くはずだ。
今週、米国のAppleおよびMicrosoftの主要なお店で、「Hour of Code」ワークショップが開かれる。Code.orgのチュートリアルはMicrosoft、Google、Twitter、Facebookのエンジニアによって開発され、20の言語で利用できる。
私たちにとっては小さなことだが、これでプログラミングがいかに簡単かを理解できた人にとっては大きなことだ。だが、これは単なる出発点にすぎない。Code.orgはそれについても考慮しており、さまざまな方向性のチュートリアルと引き続き学ぶためのポインタを提供している。
コンピュータリテラシーに関する議論はずっと続いてきたもので、「ソフトウェアクラフトマンシップ」ムーブメントにもつながりがある。コードを教えることに関する記事や活動は、ますます増えて重要になってきている。
codeschool、code academy、Khan Academyのプログラミング講座といったオンラインプログラムや、シカゴのdevbootcamp、開発者に高校の授業で話をしてもらう、コードを学びたい人のためのミートアップといったオフライン活動もある。
プログラミングをもっと簡単に学ぶための手段としては、Logo以来、最近だと、ScratchやRobot Turtlesなどがある。興味深いことに、こうした言語の多くは本質的に関数型であり、並行して動作し、ミュータブルな状態がない。これはスプレッドシートにも同じことが言える。Simon Peyton Jones氏が指摘するように、スプレッドシートはこれまで最も普及した(関数型)プログラミング言語だろう。Adam Wiggins氏も、プログラミング教育における「ゼロセットアップ」とタスク指向の必要性について書いたエッセイで、スプレッドシートを賞賛している。
コンピュータ教育という重要なトピックが、もっと親や先生、行政から注目を集め、子供たちがソフトウェアやソフトウェア開発を理解する方法が変わることを望んでいる。結局のところ、彼らが世界を動かすコードを書く次の世代になるのだから。