このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

子供と大人、あるいは技術的成熟度

子供の行動(文字通りの幼稚な行動)や、ある分野の初心者が犯す間違いパターンをみていると、人間の能力や傾向性に対し何らかの示唆を得られたりします。稚拙な行動というのは、たいてい「自然さ」を持っていて、自然だからこそ多くの人が同じパターンに陥るのでしょう。そのパターンが具合が悪いものなら矯正したほうがいいでしょうが、矯正には人為的/意図的(あるいは意志的)トレーニングが必要です。

ウチの子供達の話

長男が小さいときオバアチャンと電話で話していて、目の前のテレビにロボットが出てくると「ほらっ、いまロボットがでてきたでしょ、あのロボットはね…」とか説明を始めてオバアチャンを困惑させていました。次男が今より小さいとき、夢のなかにおにいちゃん(長男)が出てきたらしく、朝起きると「おにいちゃん、夢のなかであんときさー …」とオシャベリをはじめました -- 自分とおにいちゃんは同じ夢を共有していると思っていたわけ。「兄弟で夢を共有」って、言葉だけはなんかステキですけどね。

子供の思考や行動では、他人の視点が入りません。みんな自分と同じものを見て、同じ体験をしているという前提なのです。遠くにいるオバアチャンがいつも自分と同じテレビを見ているとは限らない、あるいは、おにいちゃんと自分は別な夢を見るんだと気付くようになるのは後のことです。

一面的な見方ではありますが、「自分と他人は違う環境、違う体験の世界にいること」「自分の視点や自分の判断が普遍性を持たないこと」を認識できるようになることが、子供から大人への成長とも言えるでしょう。

子供っぽい技術者達の話

さて、子供じゃなくて大人、主に技術者の話です。年齢的には大人でも、駆け出し技術者/プログラマを見ていると、思考・行動パターンは子供達とよく似ています。もちろん、日常的な思考・行動ではなくて、技術的な思考・行動の話です。

プログラミング経験が浅くて、移植性について考慮できる人は稀です(もし、最初からポータブル・コードを書けるなら超優秀です)。自分が今使っているコンピュータにあるファイル/インストールされているプログラムが、「他人のコンピュータにもあるとは限らない」ということさえイメージできません。パス名の構文が違うこと、ファイルシステムの構造やレイアウトが違うこと、プロセスの扱いが違うこと、シェルの能力が違うこと、場合によってはレジスタ長やエンディアンやパディングが違うことなど、配慮すべきことはいろいろありますが、「自分と他人は違う環境、違う体験の世界にいること」を会得するには随分と時間がかかるのではないでしょうか(それゆえに、意図的トレーニングが必要)。

現在では、仮想マシンや仮想環境により移植性の問題に悩む必要が少なくなりました。また、プログラミング言語が高水準になり、低水準機構を気にしなくてもよくなりました。これら仮想化/抽象化の技術は、幻影を見せる技術です。幻影の世界に棲んでいると、それが幻影であることを忘れてしまいます。もっと困ったことは、幻影の世界が他にもあることさえ忘れてしまうことです。

メモリが無尽蔵にあり、好きなときに好きなだけ使えて、後始末不要なら言うことありません。そんなメモリのエルドラドが存在するかにみせる(幻影を作る)仕掛けは存在するし、もちろんその恩恵は素晴らしいものです。しかし、有限のメモリをヤリクリしている実情をスッパリ忘れていいかどうかは疑問です。JavaSmalltalkErlangは、いずれも仮想マシン方式ですが、それらが見せる幻影の世界が同じはずはありません。まったく異なった幻影の世界があることは知っておいたほうがいいでしょう -- 次男が見た夢は、実は長男とは共有できてないのです。

世界の中心が複数あり、世界の周縁はたくさんある

僕はたまにこのダイアリーで、プログラミング言語っぽい話をしますが、特定のプログラミング言語を想定しない一般論もあります。そのときでも、特定プログラミング言語に無理矢理に引きつけて解釈する人もいるようです。「おらがプログラミング言語じゃ、そうじゃねーぞ」みたいな反応は、さすがにゲンナリ/グンニャリします。あなたの「おらがプログラミング言語」の話なんてしてねーよ。

特定プログラミング言語/システムのファン/信奉者になるのは良いのですが、あまりに党派的/一神教的になると、「自分の視点や自分の判断が普遍性を持たないこと」に気づきにくくなると思います。視点や価値観を相対化するために、マイナーなプログラミング言語やシステムをいじってみるといいかも知れませんね。マイナーのいいところのひとつは、「自分が世界の中心にいる」なんて錯覚を持ち得ないことです。

文脈と解釈は変わりますが、まったく同じ文言をもう一度繰り返しておきます: 一面的な見方ではありますが、「自分と他人は違う環境、違う体験の世界にいること」「自分の視点や自分の判断が普遍性を持たないこと」を認識できるようになることが、子供から大人への成長とも言えるでしょう。