プログラミング・言語の特性は部材に喩えられる。モジュール化されたブロック然り、グルー然り、レゴ然り。これらは打鍵作業の触覚とメモリ確保の方法に拠って構築されたメンタル・モデルであり、俺の言語はお前の言語より素晴らしいことを主張するための売り文句として既に定着した感はある。部材の硬さや構造であれば言語仕様の羅列よりも把握しやすいであろ、という親心の垣間見える比喩だ。
ところが、この特性に基づいて部材と言語の対応を取った表は存在していない。わけで、今後表を作りたくなった場合に備えて覚書く。
主観基準はCを木工に喩えるメンタル・モデルだ。通常の切った貼ったは糸鋸やピラニアソーでザクザク切り刻んで木工用ボンドでベタベタ留めるイメージであり、互いの依存関係が強い場合はとんかちと釘で留めるのだ。ちなみに、木工用ボンドは関数のスタックと同義である。ほんで、メモリ・アドレスをハード・コーディングする場合はマクロで隠蔽し、それ以上の細工が必要になった場合はインライン・アッセンブラーと0xや&や*を彫刻刀で削りだして金物のメモリ・モデルへ強引に嵌め込む。
そうなると、アッセンブラーは寄木細工である。一定の形状を枝として伸ばしているレジスター同士、定石に従い組み合わせていく分にはよいが、色気を出して枝を削ってしまうとその後始末に苦労する点にシンパシーを感じる。削った後に残った空白、どうしても削れない枝であるFARポインターやNEARポインターの存在、後から彫刻刀で削るためにNOP平面を残しておく等のテクニックから、こうしたメンタル・モデルに至ったのだ。
また、機械語の印象は殆ど打鍵の感触で占められている。別の言語で機械語モニターを作ってからやっとターゲット・言語にできるその特性から、自前でジグを用意し、自前でボンドを薄め、自前で構造的に自立させる必要のある紙細工に類似した組立工程といえる。圧着時にジグから外れていないか、乾燥してヒケていないか──モニターのアドレッシングは妥当か、ハンド・アッセンブルしたレシートの裏と対応が取れているか──を観察しながら、ようやく完成品が出来上がる。
グルー・言語にょる作成過程は、小学生の得意技であるヤマト・糊──グルー──にょるコンセプチュアル・モデルの作成に類似している。ぐちゅぐちゅした糊を人差し指と親指の間に挟み、伸ばしたり縮めたりしながら粘度を上げていき構造物を作成できるまでの固さを確保する。糊自体はガッベージ・コレクションによって非常なる柔軟性をもつが、アスキー・コードで言う33番から64番までの妙な記号をあちらこちらに散りばめておかなければ構造の維持すら不可能である。最終的には鼻糞だか痰だかよくわからないものになって床にポイと捨てるところもそっくりだ。
あーもう飽きた。
LISPはよく言われるように粘土。わかるっしょ。
あと粘土に混入した固形の粒々を捏ねる事によって露出させ、そこにメモリ・モデルに対応した形状を彫り込むという比喩もどこかで使えるのではないだろうか。
あと部屋予約表を眺めていたところ、GSの人と面談なる名目で応接室を先取りされたと思ったら、それは人事部の仕業であった。これはこれは。