いつだって誰かに話したいことは山ほどあるんだ…

今日は昼まで眠ってしまった。
昨日の時点で体調が少しおかしくなっていて、かなりの睡眠の追加を要した。

いつか記したことがあるが、私は長く眠ると夢を記憶する。
短い眠りではそもそも夢を見ないのかも知れない。

今回はそれで、ある夢を記憶した。

稀なケースで、私の好きな人が出てくるものだった。
それもこれまでの夢の中では一番しっかりと付き合っていた。
それでもまだ慣れてないのか、私はどう行動するかを非常に悩みながら行動していた。
それでも私は楽しそうだった。
場所は恐らく日本ではなかった。
海外に一歩も踏み出したことのない私がこんな夢を構築するのは無理があったのか、理論の破綻が多かったのか、あまり完成度の高い夢ではなかった。

――――

ここからは現実の話だ。
ある先生が授業中に、授業に関連する遊びのようなものとして面白いものを教えてくれた。

1分計っている間に1から10までの中から自分の無意識に思いつく数字をただひたすら紙に書き、統計をとるというものだった。そうすると、自分の好きな数字がわかるというものだ。

私は言われたとおりただ何も考えずに、ひたすら数字を書いた。

そして統計をとった。

驚いたことに、私の書いた1から10までの数字は全て平均的に出現していた。
全て誤差2程度で約10回現れ、ぶれも全体的に分散していた。
そして書かれていた10種類のそれぞれの数字の個数の合計が丁度100だった。

私は無意識でもコンピュータ並に正確な確率で乱数を発生させてしまったのではないかと思ってしまった。

私の無意識は全ての平均値を導こうとしている。
ただの偶然かも知れないが、色々考えさせられてしまった。

――――

話す相手によってその場で導き出される話や概念は全く異なり、どれも貴重なものばかりだ。

通信の生きの良い友人と話しているときに出てくる話にも面白いものが多い。
その中の一つを今回記しておこう。

プログラミングを学ぶ上で、いやプログラミングに限った話では無いかもしれないが、
独学で見かけ上高速に勉強を進めている人と、教科書にそって地道にかなりの時間をかけて勉強を進めていく人がいる。

この両者の違いは何だろうか、どちらが良いのだろうか、という話があった。


工学部の学生には物作りが好きな人が多い。だからこそ工学部にいるとも言える。
プログラミングも物作りだ。そこで、同じ物作りの範囲で他の何かに例えてしまうと意外と当てはまって面白い。

工学部の学生は物作りをすることに誇りを持っている。できることなら身の回りのものも全て自作したいほどだ。
例えば少し遠くに行きたいとき、我々は車に乗ることがある。
この車を自分で作れないか、というようなことを考えるのが工学部の学生である。

勿論、工学部の皆が自分の家の車を自作したいと思っているわけではないが、例えば情報工のある学生がソフトウェアを自作したいと思うように、車でなくても似たような状況はいくらでもある。


そこで今回はひとまず車の話に例えてみよう。

学生達は学校で、まさに1から車の作り方や概念を教わっている。

何故ならそれに興味を持って、いつかは作りたいと思っているからだ。
そして自分で作ることによって誰かの役にも立ち、自分の役にも立ち、生活もできる。
そんな夢を抱いているかも知れない。

この夢さえ例えることができる。つまり車に乗ってどこか行きたい目的地があるということだ。

まずはどんな材料が必要なのか知らなければならない。
学校に来る前からちょっと知っていた知識も織り交ぜながら、知らなかった部品や材料や手順などを学んでいく。

そして或る程度まで学ぶと漸く、簡単な動くものが作れるようになり始める。
だが夢見ている格好いい自動車にはまだ程遠く、それでも就職する頃には、あるいはその後にでもいつかは作れるのだと夢見ているかも知れない。

これが、教科書にそって地道にかなりの時間をかけて勉強を進めていく人の例である。


一方で、独学で見かけ上高速に勉強を進めている人はどうなっているのか例えると以下のようになる。

とりあえず学校にいる学生には間違いない。学校でも1からの講義に参加していることもある。
(以下に展開される行動で得た知識については実は学ぶ必要はない)

夢だって地道に勉強している人と同じだ。車に乗ってどこかに行きたいし、車を自作したい、つまり自力で行きたい場所がある。

ところがこの種類の人は我慢できなかった。

目の前に既に誰かが作ったとてもいい車があるじゃないか。
今自分で作るよりこんなに速くて安い車があるのに、使ってみない手はないじゃないかと。

そして誰かが作ったとても速い車を買う。
(情報工ではこれは何か立派なプログラムのソースコードにあたるだろう。オープンソースなら買う必要さえなく手に入る)

そして時にはその速い車がどのようにして出来ているのか気になって分解してしまう。
そして分解したものを組み直して動かして、また分解する。
時には分解して取り出した部品だけで動かしてみたり改造してみたりする。

時には買ってきたその車でとりあえず目的地まで行くことを試みるかもしれない。
そしてもしその車でも無理ならば、自分でもっと遠くまで行ける車を作れないか、または改造できないかと試みる。

この時点で見かけ上はとても高速だ。何故なら既に走っている上に目的地がどうの、それを超えるだのという話になっているからだ。

そして分解や改造や、それまで見てきた完成品に関する知識を元に、今度は1から自分で作ってみるかも知れない。

どうだろう。完成形が思い浮かべられる点だけでも有利ではないだろうか。
これが無視できないほど大きな差であると感じている人は少なからずいるらしい。



実はもう一つ同じ事を記述する例え話がある。

これは友人からのものだが、
例えば地道な学生はいきなり油田を掘り起こそうと、弱い腕と弱い装備で頑張って地面を掘り始めているかも知れない。

だがこれでは掘るだけで相当の時間と労力を消費してしまう。

だからとりあえず、既に油田を掘り当てている人のところで働く。

とりあえず良い装備を借りて、とりあえず知識も借りて、掘っていく経験を積む。

そして余裕が出てきて、筋力もついて知識もついてから、装備も知識を元に調えて、今度は自分で掘り当てる作業に入る。

地道な人と比べて、始める時期が少しくらい遅くなったとはいえ、充分に追い越せる可能性があるのではないか。

――――

学校の課題でPL/0の言語でプログラミングをしている。

ところが最初の課題なので、標準のコンパイラでできる範囲でプログラムを組まなければならない。

その際に、制約が多すぎてあまり凝ったものが作れなくて大変な思いをすることになってしまった。

私はこういうものにはこだわる性質があるため、困った。

通信工にいた頃に書いていたコードを流用してPL/0向けに書き直し、
なんと円周率を計算させようと思ってしまったのがそもそもの間違いだった。

実は標準状態のPL/0では整数以外の変数を扱えない。
勿論、少数さえ扱えない。
そこで相当の無理をさせるコードを数日かけて書いていた。

しかし結局それは諦めざるを得なかった。
しかし諦めきれず、何か規模の大きなコードを書こうと試行錯誤していた。

(追記:円周率を実現出来そうな方法を当日中に思いついたが、もう提出してしまったのでこれ以上変更はしない。若干心残りではある。)

ところが標準状態のPL/0ではたった100行程度を超えたコードを書くと、文法にエラーがなくてもtoo many codeエラーでコンパイルできなくなってしまう。

そこで海外のシーンクリエイターに憧れた頃の精神が目覚めてしまった。

この容量の中にどこまでのものを詰め込めるか。
今回はそれに力を割くことに方針変更した。
勿論、円周率のために用意した関数は残す。
基本的にジョークプログラムになってしまったが仕方がない。

mixi側にはコードを載せよう。
ちなみに実行結果はこうなる。

start compilation
start execution
11111111111111111111111111111888888888
11111118888888881111111111111111888888
11111188888888888111111111111111118888
11111188888888888111111111111111111188
11111111888888811111188888888111111118
11111111111111111111188888888111111188
11111111888888811111188888888111111118
11111188888888888111111111111111111188
11111188888888888111111111111111118888
11111118888888881111111111111111888888
11111111111111111111111111111888888888

3 1415866384

*この記事はスパムに狙われたため、コメントを受け付けない設定にしました。

You may also like...