プログラミングってなあに?

これは『電撃王』や『電撃プレイステーション』に載せていたコラムの中で思い入れが深いものや、付け加えをして今出すと面白いと思ったものをアップトゥデートして載せていくシリーズ。
今回は、1996年の電撃王に載せたコラム。

■■■

僕の本職はと言えば‥いわゆるゲームのプログラマ。この仕事の一般におけるイメージを簡単にまとめると、
(1)コンピュータの事を知っている。
(2)理数系である。
こんなモンになるんじゃなかろうか?

書いた当時は掛け値なしで、ゲームプログラマだった。これがこのあとディレクターだのIT屋だのイロイロな要素が入り、今では「ゲームデザイナーで、プログラムも書ける人」ぐらいだろう。スクリプトレベルでは現役のコード屋だけど、C++では現役とは言いがたいレベルだw
会社でオールアセンブラでゲーム作ったって話をしたら超尊敬された。伝説の時代からやってきた人間らしいw
なんつーかかんつーか、移り変わりの速い世界に生きているとイロイロとへこむことがあるもんだw


プログラマなんだから、コンピュータの事を知っているのは‥さすがに当り前だし、さらにこの界隈は「情報理論」とか「誤差理論」とか「オブジェクト指向」なんて、ド偉く大層、かつ数学の香りがムンムンと漂う言葉で飾られている事が多いから「数学=理数系」と考えが働き「プログラム=数学=理数系」となるのも至極当然だとは思う。
だけど、プログラミングって奴は、理数系の部分も存在するのは間違いないけど、本当は文系の思考の部分が大きい‥と、僕は思っている。
なぜか?
まず、コンピュータをワケの分からない何かだ、なーんて思わなくて、たったの一つの言語しか理解出来ないヘンな外国人と考えてみよう。
名前がないのも不便だから、仮の名前を「コンピュータ君」と呼ぼうじゃないか。
しかも、あなたは、そのコンピュータ君と一緒に仕事をすることになってしまった!
ところが、このコンピュータ君、とんでもない奴なのだ。
途方もないスピードで仕事をこなすのはいいけど、ほんの些細な言い間違いも許してくれなくて”Unexpected Identifier”だの”Illigal expression”なーんて言って仕事を止めちゃうし、バカ正直なもんだから「1000回、この作業をしなさい」ってのを間違って「1000『万』回、この作業をしなさい」と言ってしまっても、疑うこともなく1000万回仕事をしてしまう、常識がないにも程がある人間。
そんな彼に、自分の思ったとおりの仕事をこなしてもらおう、なんて思うと『一言一句まで正しく理解される言葉で、まさに一分の論理的な破綻なく、やって欲しい事を教える』
これしかないでしょ?
これが「プログラミング」って奴の正体。
つまりプログラムは単に「コンピュータにやって欲しい事をコンピュータに分かる文章を書く」作業なのだ。
ただ、その『文章』が、いわゆる文章のイメージから想像し難いほど特殊で記号化された形だから、読む訓練を積まないと何が書いてあるのかすら理解出来ないだけ。
英語を読めない人にとっての英語の文と同じで、「その言葉を知らない人」に読めなくても、文章であるに変りはないんだよね。
さて「プログラム=コンピュータに分かる文章」だから、文章の性質をプログラムはそのまま持っている。
一つの事に対して無限と言っていいほどの表現方法があるし、正しくコンピュータに理解される限り、そのどれを使っても正解。
確実に正しく読める内容的に整った文もあれば、確かに読めるんだけど、一歩間違えれば誤読されてしまうようなヤバい書き方をしている文もある。
トリッキーな表現を使って短く書かれた文章もあれば、長いけれど、きっちりと書いてある文章もある。
ここまで来れば想像もつくだろうけど、当然、名文もあれば駄文もあるし、プロの間では名作とか芸術的作品とか称されたりするものもあるわけ。
こんなわけで、僕はプログラマはどっちかって言うと文系の思考をするもんだし、数学者よりは作家とかライターの方に近い、と思っているんだよね。
え?
『文章』ってからには読者がいるはずだろうって? プログラマは読者とは認めないぞってか?
読者なら、それこそ星の数ほどいるさ。
まさにコンピュータの一つ一つがプログラムの読者。
絶対に誤読もしないし、そのうえありがたいことに作家の文に読みあきることもない究極の読者なんだよ。
そして毎日彼らは、小さな声で言い続けている。
僕らにもっと文章を読ませろってね。

■■■

オチのあたりの書き方は、今見ると顔から火が出るぐらい恥ずかしいわけだけど、まあこれを消してしまうとえらくオリジナルから離れてしまうので、一応そのまま残した。
それはともかくとして、この文で書いた内容は、今でも変わらない持論だ。
理数系・文系って単純な二分法は好きではないけれど「数学的な(抽象的な)論理能力」が得意なのか、それとも「文章のつながりなどを考える具象性のある論理的(そして情緒的)な能力」の2つには違いがあり、前者を得意な人や後者を得意な人がいるのは確かだと思う。

ちなみに数学が本当に得意な人の話を聞くと、数式を見ると頭の中にナゾの具象性があるイメージが出来上がり、それでなんとなく全体像が掴めるということだ(僕らが数式からグラフ書くような作業を、はるかに抽象性の高いレベルで行えるらしい)。なんでそんなこと出来るんだ、とマジで思うw

もちろんグラデーションはあるし、だいたい人間ハンパじゃないぐらいバラバラなので「論理」そのものも複雑だけど、ものすごく乱暴に分けると上記の2つの能力があって、このどちらが得意なのかが、結構仕事の得意不得意に影響して、プログラムはどちらかというと、後者の、つまり一般的には「文系」とされる能力がベースだと僕は思っているのだ。
そうじゃないと、自分が(僕は数学は苦手で訓練で克服した口)プログラマとしてメシを食えてきた理由が説明できないんだよねw

LinkedIn にシェア
Pocket

4件のコメント

  • AGENT: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
    今の時代の C++ プログラマーって、別世界に生きる人間だからなぁ……w

  • AGENT: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
    かなり昔から、プログラム (program = 手順) を編む (programming) は、文系的な作業だと思ってたので、ものすごく合致する話ですね。
    「てにをはを間違えただけで、まったく異なる挙動を取る」は、人間でもコンピューターでも一緒ですが、コンピューターは、これを正確に行う。そこに推測はない。
    それだけなんですよね。

  • AGENT: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; Sleipnir/2.9.8)
    古い昔に機械制御のプログラマーをしていたときに、先輩に、「C言語も言葉のひとつだよ」と教えられたのを思い出しました。

  • AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0
    まあずっと理系、といわれる側に分類されていることに疑問のある仕事でして、プログラム。
    確かに「理数」が出てくるのは確かですけど、出てきたら理系ってわけじゃないだろ? ってのが基本的な考え方で、これは今でも本当に変わらないですね。

コメントは現在停止中です。