コードゴルフ[1分スピーチ]

コードゴルフと言う競技プログラミングがある。
コードゴルフは、出題された問題に対して最も短いソースコードを書くと言う競技だ。
ショートコーディングとも呼ばれ、いかに短い打数でホールを回るかを競うゴルフになぞらえ、いかに短い打鍵数でコードを書くかを競うのでコードゴルフと呼ばれる。

短いプログラムを書けばいいという、言うは易く行うは難しの典型のようなゲームで、トップクラスのレベルは非常に高い。
まず、コードを短くするためには、問題に対する最適なアルゴリズム、あるいはその問題にしか使えないアルゴリズムを導き出す。
そのアルゴリズムは簡単な問題ほど常軌を逸していて、文字を計算したりとかわけのわからないことをし始める。

そんな狂ったアルゴリズムをプログラミング言語の仕様ではなく、コンパイラの実装の許す限り余分なコードを削って短くする。
コンパイラの拡張機能や暗黙の解釈を利用して、書かなくて良いものは消し、省略できるものは省き、1バイト縮めるために別のプログラムを書いて検証したりする。

もちろん、コードゴルフで書かれるようなコードは全く利用できない。まずエラーを吐きまくるし場合によってはメモリ違反や実行時エラーもあるからだ。だが、コードゴルフで得られるアルゴリズム感や、コンパイラの仕様に関する知識は無駄にはならない。

プログラム(情報工学?)の世界でよく言われることに、プログラムにもパレートの法則(80:20の法則)が当てはまり、80%のリソースが20%のコードで消費され、残り80%のコードで20%のリソースを消費すると言われている。そのため、コードを最適化・高速化するときにはそのリソースを多く使用する20%を最適化するべきであると言うことらしい。
そう言った、チューニング・パフォーマンス改善のコードを書く技術はこう言った競技プログラミングで養うことが出来ると思う。


(766文字)

Pocket

,

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)