結城浩の連ツイ今朝見かけたこれ。いう話は好きなので便乗してみる。ちなみに,結城浩さんの通称「デザパタ本」はずい分昔に買っている。プログラミング言語の「母国語」プログラミング言語との付き合い方というのはいろいろあってですね。自分の母国語という言語はある。それから現在学んでいる最中の言語というのもある。仕事用の言語やら、他の人とのコミュニケーション用言語というのもある。そのあたりは、自然言語とちょっと似ている。Javaの本は書いたけれど...個人的に母国語と言えるのはアセンブラとC言語。私の場合はコードを脳内でインストラクションに翻訳する。手続き型の言語ならこの「翻訳」をほとんど無意識でできる1。手続き型の言語であれば知らない言語でも見ればだいたい理解できる。逆に,関数型のような非手続き型言語はあまり得意ではないのだが,簡単なものであれば手続き型に翻訳できるので,簡単なものを組み合わせて考えることで,まぁ何とか理解することはできる。まりまわるつそういえば,竹本泉さんの作品に『ちまりまわるつ』シリーズというのがある2。このシリーズの世界では「魔法」が科学的(?)に体系化されていて,工場で生産できるようになっている。人力(?)で魔法を使う「魔法使い」は(工場で生産できない高度な魔法を使うことのできる一部の大魔法使いを除いては)古臭い職業として子供たちからは敬遠されている。魔法使い達は能力でランク分けされていて,低ランクの魔法使いは簡単な呪文で簡単な魔法しか使えない。ここからが竹本泉作品らしいところで,簡単な呪文しか使えない魔法使いも呪文を組み合わせることで高度な魔法を使うことができるのだ(ただし高度な魔法は制御が難しいので,ふつうは使わせてもらえない)。プログラムに例えるなら,高級言語で1行で書けるプログラムをアセンブラで数十ステップで書くような感じだと思えばよい。いう世界設定を少女漫画でさらっと描いてしまうところが竹本泉さんの凄いところである。いうわけなので個人的に「学んでいる最中の言語」というのはない。見て理解できるかできないか。いや,ぺーぺーの新人の頃はアセンブラやC言語を必死こいて学んでいたが,一度基礎ができればあとは全部「応用編」なのである。私は職業プログラマなので当然「仕事用の言語」というのは存在するが,「コミュニケーション用言語」というのはないな。『数学ガール』冒頭のミルカさんの登場シーンはなかなかインパクトがあるが,あんな感じだろうか。プログラマにとって最も信頼できる言葉は「動くコード」なので,ある意味で「仕事用の言語」が「コミュニケーション用言語」と言えるかもしれない。職業プログラマは非プログラマとも話ができないといけない。いうか,大抵の顧客はそう。顧客の「言語化されない意図」をいかに聞き取れるかが重要。ホンマ「コミュニケーション用言語」なるものがあるなら欲しいよ。自然言語と同じようにプログラミング言語を使う人(要はプログラマ)には、その言語に対する愛情がこもる(愛憎がこもる)。エンジニアリングや効率の話題と思っているのにいつのまにか忠誠心や貢献度みたいな話になることも。Javaの本は書いたけれど...仕事でプログラミングを行う際に言語を選べることはほとんどない。顧客が指定してくることもあるし(顧客がコード資産を持っている),プロジェクト管理者が指定してくることもある(すでにある資産を使おうとする)。ない場合でも要求と予算と期間とプロジェクトの面子によって(つまりそれを使うメリットとか関係なしに)言語が決まってしまう。