ここをクリックしてお気軽にお問い合わせください!

天才プログラマーは-5する。

僕は仕事上、プログラムを組むことがあります。今は設計ばかりして、あんまりプログラミングする事は減ってきたんですけれど今でも触れるようには技術を磨いています。

まぁ、新人の頃はひたすらプログラムに徹していた訳なのですけれどね。

僕がプログラムの世界に入ったのは早くて小学生の頃にはすでにプログラムを組んでいたんですよ。今でこそ当たり前かも知れないけれど、1987年には僕はすでにプログラムを組んでいました。

プログラマーの世界にはとんでもない天才が存在します。アイデアもそうだけれど、効率を求めると常人には分からないようなプログラムを組んでしまう人が居るのです。後で他の人がそのプログラムを見ても「?」になってしまうようなプログラム。一般的にはそういうプログラムは保守性(他の人が見ても直せるように書く)から見て正しい行為ではないのですけれど、性能対策とかメモリの容量の制限からそういうプログラムを書かないと行けない場合があるのです。

Learning img1 25

僕がちょっと前にプログラマーについて読んだ本に下記のような記述がありました。僕は天才にはなれないと思った瞬間です。

例えば、キャラクターを4を押すと左へ、6を押すと右へ移動させるプログラム。昔はパソコンにはテンキーってのがあったので理解しやすいと思いますが、今ではガラケーを想像してもらえると簡単だと思います(それでも古いか)。

パソコンの世界は、左上が縦も横も0になります。それが下に行くほど縦の値が増えて、右に行くほど横の値が増えます。これが前提。

そうすると、キャラクターを1歩右に移動させるためには、横軸に1を足し、左に移動させるためには横軸から1を引くことになります。

簡単にプログラムを書いてみると、
IF KEY=”4″ THEN
X = X – 1
ELSEIF KEY = “6” THEN
X = X + 1
ENDIF.

となる。ここではKEYってのが押されたボタンだと思って下さい。
これが一般的なプログラムである。「4を押されたらX(横軸)から1を引いて、6を押されたらXに1を足す」と言うプログラムです。比較的わかりやすいと思います。

これが天才プログラマーになるとプログラムは1行になります。

X = X + (KEY – 5)

です。
「ほげ?」です。
「どこから”5”が出てくるの?」です。
でも、これが実に理にかなっているのです。

例えば、押されたKEYが6なら、6 – 5 = +1になる、4なら、4 – 5 = -1になる。上でIF文を使ったプログラムとまったく一緒の事ができるんです。たった一行。IF文も使いません。

これを見た瞬間、「すげー。」と単純に思ってしまったんですけれど、100人のプログラマーが見て、下の方のプログラムを理解できる人ってどの位いるんだろうか。説明されればわかるとは思うんですけれどね。
facebookのザッカーバーグとか、googleのプログラマとかはこういうアルゴリズムを簡単に思いつくんだろうなぁってね。
だからプログラムは面白い。

これを趣味にしている人も頷けるわなー。

いやー、プログラムの世界ってすごいなぁ。と思ったエントリーでした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です