見出し画像

電気脳はPrivate Subの夢を見るか? (2)

それが英語であれフランス語であれVisual Basicであれ、新しい言語を習得するのは本当に難しく、骨が折れる。

クラスもインスタンスも全く理解できなかったあのころから1ヶ月が経過し、どうにかやっとオーバーライドとオーバーロードの違いがわからない域にまでは辿り着かんとしている。毎日ぽつりぽつりコードを触りつつ、知らない単語ひとつにつき5〜10のサイトを参照したり、かなり流暢だが要所要所で日本語が脱臼を起こしている不可解な翻訳文に首を傾げたり、茹でたスパゲッティをネストで水切りしてソースをかけて食べたりしていれば、もはやデジタルとアナログの区別はつかない。あと「名前空間」という名前はスタンド攻撃かなにかと勘違いしやすいのでやめてほしい。

確かなのは、面倒くさがり屋のほうがプログラミングには向いているということだ。
プログラムを組むことによる最大の利点は「効率化」言い換えれば「単純作業の自動化」だと思う。たとえば1×1を計算し、その答えを1倍し、その答えをさらに1倍する…という作業があったとする。暗算にせよ算盤や電卓を叩くにせよ、人間にこの作業をやらせると途中で(あるいは最初から)作業自体が持つ先天的な不毛さに気づいてしまい、やる気をなくす。あるいは飽きてやめる。あるいは、気がふれる。せめて足し算ならなあ…と愚痴をこぼす者もあるかもしれない。
しかし、プログラムを介すればこのような不満は解消される。かわりに意味が現出するようなこともないが、とにかく解消される。以下のような簡単なコードを書くだけで、電力が供給されているかぎり1日でも1週間でも1か月でも、コンピュータがこの生き地獄に飽きることはない。

Dim a As Long = 1
While a = 1
a *= 1
End While

かくして「面倒な単純作業の繰り返し」をコンピュータに一任し、そこから解放された人間はクリエイティブな作業にのみ専念できる。というのが多分、エンジニアの夢見た理想の世界だったんじゃないかと想像する。

現実には、コンピュータが正確無比なアルゴリズムを経て等間隔にベルトコンベヤで流してくるショートケーキの中央に苺を乗せる夜勤のバイトで人間の睡眠時間が削られたりしていて、嗚呼モダン・タイムスは遠きにありて思ふもの、帰るところにあるまじや、ってな気分にもなってしまうが、語学学習的なモチベーションからプログラミングを始めた者にとって、この作業は結構楽しいもぐらたたきゲームだったりする。

'1.バグ(論理の欠落)は必ず存在する。
    Dim bug(n) As bug

'2.バグには必ず要因がある。
    For Each bug As Caused In Program

'3.要因を取り除けば必ずバグは取り除ける。
    bug.dispose()

'4.ただし、必ず1に戻る。
    If bug < 1 Then
        bug = 1
    End If

    Next

ひたすらこの4つを繰り返す。構文を覚える。とにかく書いてみる。反復に次ぐ反復そして反復。そうだ、これが「勉強」というものだった。大学受験を思い出す。でも思い出してみたらあんまり勉強していなかった、その頃は。

「理論と順序、そして表現さえ間違っていなければ必ず答えにたどり着ける」ということがプログラミングの強みであり、救いでもある。その答えを求めて知識を総動員し(努力)、ネット上で解説を書いている人がいれば読んで知恵を拝借し(友情)、うまくいかなかったプログラムが正常に動作した時の(勝利)! 往年の少年ジャンプ三原則がここでも生かされている。

それと同時に、バグは絶対になくならないともいう。僕の敬愛するゲームデザイナ/イラストレータのnano-Ray氏曰く、「バグは、仕様です」。けれども言い換えれば、それは永遠に考え続けることができるという証でもある。「1000回遊べるRPG」というキャッチコピーが昔あったが、その感覚に近いかもしれない。1000回バグれるVisual Basic。

この記事が気に入ったらサポートをしてみませんか?