『教養としてのプログラミング講座』清水亮

プログラミング(的な思考)を学ぶことで、プログラマー以外の人にどのようなメリットがあるのかを中心に述べた本。

 

〈プログラミングを学ぶと身に付くもの〉
・論理的なものごとの考え方
・情報を適切に分類し、活用する方法
・最小の手間で正確な仕事をこなすための思考法
・知らない人と知恵を共有する方法

 

仕組みづくりとか、マニュアルづくりをするための論理的思考力が、プログラミングで鍛えられるのだろうと僕は解釈した。

 

占いもプログラムであると紹介されている。

 

実は占いこそが人々が古(いにしえ)から慣れ親しんだ、優れたプログラムではないかと私は考えています。
たとえばあなたが占い師だったとして、占ってあげた相手が、占いの結果を全く信用してくればければ、その占いは大失敗ですよね。
どこで誰が占おうと、出た結果を信頼させる文脈を作れるか。そのために何世代にもわたって洗練され、構築された手順が占いなのであり、これはプログラムとも相通じることがあります。
占いには無数の流儀がありますが、簡単な血液型占いについて考えてみましょう。たとえば[表9]の占い結果さえあれば、あなたは立派な占い師となって誰かの性格をいい当てることができるはずです。

【表9 簡単な血液型占い】
〈相手がA型なら〉
「あなたは真面目で几帳面な反面、少々ものごとを真剣に考えすぎなところがあります」と占う

〈相手がB型なら〉
「あなたはマイペースで孤独を好むタイプですが、時々寂しくなって甘えたくなる瞬間があります」と占う

〈相手がO型なら〉
「あなたは大雑把な性格で面倒見が良く、誰からも好かれますが、時折、相手に鬱陶しいと感じさせてしまいます」と占う

〈相手がAB型なら〉
「あなたは独創的な人物で、他人と群れるのを嫌う一方、常に理解者と探し求めています」と占う

どうでしょう。相手は意外と結果を信じてくれたのではないでしょうか。

実はこの表、「誰しもがあてはまることを、もっともらしく割り当てる」という占いの常套手段にのっとって作成してあります。そしてそれこそが、占いプログラムの基本文法なのです。

 

誰にでも当てはまることを言うのが占いの定石というのは、みんな知っている(気付いている)ことだろうが、それでも血液型の話は超人気の話題だ。飲み会などで話すには当たり障りなく、結論的なものが出ないテーマなので長時間それなりに盛り上がれるからだろうと僕は思っている。

 

以下、メモ。

プログラミングでは、しばしば「フールプルーフ(お馬鹿をしても平気)」という言葉が使われます。これは「そのプログラムを想像し得る限りの最悪な使い方をしても、決してシステムを破壊しえない」といった設計方法のことです。

 

プログラマー的な思考法の基本中の基本、それはアルゴリズム。アルゴリズムの意味を簡単に説明すると、ある問題を解くための手順を、誰でも確実にこなせるよう、一つの「形」に整理したもののことを指します。
アルゴリズムという言葉は、9世紀に中東で活躍した数学者、アル=フワーリズミーの名前に由来しているといわれます。

 

パーソナルコンピューターの父、アラン・ケイはいくつかの名言を残していることでも知られています。
そのうちの一つが、

“The best way to predict the future is to invent it”
(未来を予測する最善の方法は、それを発明することである)

 
教養としてのプログラミング講座 (中公新書ラクレ)