計算論的思考 (Computational Thinking) という21世紀のリテラシー

コンピュータ科学者のように考えるということは, コンピュータをプログラムできるということ以上の意味を持つ. 複数のレベルの抽象思考が必要である. — Jeannette M. Wing

Jeannette M. Wingによるエッセイ Computational Thinking (計算論的思考) を紹介します。その内容は、「計算論的思考 (Computational Thinking) は21世紀のリテラシーである」と読めます。力強いマニフェスト(宣言文)です。じつに慧眼で、まさに膝を打ちました。

ちなみに、「この文章を構成する文のうち何パーセントを理解できたか」という指標で、CSリテラシーを測れそうな文章でもあります。一文一文がCS的に深い意味を持っていて、情報密度の高い文章です。社内勉強会で輪読、教え合いの教材にするのに適していると思います。うちでもやりたい。(註:言わずもがな、「CS」とは「コンピューター・サイエンス」のことです)

プロのプログラマーでも、CSを体系的に勉強したことがなければ、この文章の内容がほとんど分からないかもしれません。いいバロメーターじゃないでしょうか。

頼むからプログラミングを学ばないでくれ (Basel Farag, 2016年5月17日, TechCrunch日本版) という文章でも同じようなことが語られています:

プログラミングを学ぶことと、それを生業とすることの間には高い壁があるのだ。
ソフトウェア・エンジニアリングは儲かる仕事だ。だが「コーダー」から「エンジニア」に進化するのは簡単な話ではない。

プログラミング教育で「文法的に正しく、バグのないようにプログラミングすること」を教えるのは、大して重要な教育目的ではありません。そんなことは、プログラマーという職業に就く人だけに訓練すればいい。瑣末な事です。

万人のリテラシーとして重要なのは、「問題を理解し、適切にモデリングし、適切な解法をデザインすること」です。そのとき、コンピュータに何ができて、何ができないかを踏まえていること。それが計算論的思考です。

「計算論的思考の弱いプログラマー」と「計算論的思考ができるノンプログラマー」がいたら、「安価なプログラマーを使ってノンプログラマーが稼ぐ」という分業体制になるのは自明です。経済学でしばしば用いられる古典的なたとえ話ですが、「書くべき文章コンテンツを持っている弁護士」と、「指示通りに機械を操るタイピスト」との関係を考えてみればわかるでしょう。

これからプログラミング教育が充実していき、計算論的思考を身につけた人材が社会に増えていくと予想できます。そこで最も危機感を持つべきは、「計算論的思考の弱いプログラマー」です。つまりCSを学んでいないプログラマーは将来ヤバい。

「プログラムが書ける?それがどうした」という時代が来ます。「リテラシー」ってそういうことですから。その時代になって「人から指示された通りにプログラムが書けます」といっても、タイピスト並みの価値しかありません。そういう「コーダー」の職はAIで置き換えられるでしょう。

プログラミングはプログラマーにとっては重要ですが、万人にとっては大して重要ではありません。計算論的思考こそ、人々がコンピューターから最大限の恩恵を受けるために万人が身につけるべきリテラシーなのです。

プログラミング教育に携わる人々は、この前提から出発しなければならないでしょう。いっそミスリーディングな「プログラミング教育」という呼称をやめて、今後は「計算論的思考」(コンピュテーショナル・シンキング)という言葉を使って議論するようにしてはいかがでしょう。出発点としてJeannette M. Wingのエッセイは必読ということで。

インフォメーション・アーキテクトからは以上です。