コードゴルフとは
プログラミングとは
世の中には、プログラミングという行為がある。コンピュータ上で動くプログラムをつくる営みを指して、そう呼ぶ。
YouTube という動画投稿・閲覧サイトがある。ビデオ再生画面で、再生ボタンを押せば、動画が再生され、一時停止ボタンを押せば、一時停止する。この処理は、プログラミングによって実現されたものだ。
マウスのクリック、画面のタップ。それらをしたとき、コンピュータに、「クリックした」「タップした」という信号が送られる。
ボタンのプログラミングでは、その信号をどう扱うかをコンピュータに命令(するコードをファイルに記)し、「再生させる」「一時停止させる」はたまた「暴れ回る」などの処理を規定する。
ショートコーディングとは
プログラミングによって記されるコードは、分かりやすさを優先して冗長に書くこともできるし、洗練性を重視して短く書くこともできる。まるで、人間の読み書きする言語と同じで、感謝の表明を「ありがとうございました」と書くか「㌧」と書くかの違いのようなものである。
たとえば、以下のコードを見てみよう。
var message = "Hello, world!"; print(message);
このコードは、JavaScript というプログラミング言語で書かれた、画面上に「Hello, world!」と表示するプログラムと成る。
以下のような流れだ。
- var でこれから 変数 を作成することを表す
- 実際に、message という名前で、変数をつくる
- 代入演算子
=
を用い、message の内容として "Hello, world!" という文字列を代入する - 画面上に文字を表示する能力を有す print 関数に message を渡して呼び出す
- 「Hello, world!」という一文が画面上に表示される
このコードは十分に短いが、一文を表示するという目的を達成するためだけなら、さらに短く書くことができる。
このように
print("Hello, world!")
コードを短く書くことを、ショートコーディングという。
コードゴルフとは
一体、究極に短縮されたコードというものは、どれくらい短いのだろうか。
その追究は、コードゴルフというゲームの中で行われる。
コードゴルフでは、1 試合ごとに、先述の Hello, world! のよう、何を出力するかをまず設定する。これを「出題」と呼び、出題されたものを「問題」と呼ぶ。
参加者は、その目標を達成するためだけのコードをできるだけ短く書く。そうして提出された回答は、他の参加者には公開されず、何文字で書いたのかだけが示される。「自分のコードはまだ長すぎる。どうしてそんなに短く書けるんだ」という驚嘆の発生は、このゲームの醍醐味の一つである。
制限時間以内に、最も短く書ければ、勝利となる。
やってみよう
コードゴルフするなら、Anarchy Golf というサイトを訪れるといい。
サイト上で、多種多様なプログラミング言語で競い合うことができる。
出題は、頻繁に行われているので、すぐに始められる。
副次的メリット
コードはどれだけ短くなるのか。それは神のみぞ知る。複数人が同じ文字数の、短い回答に辿り着き、長いあいだ記録が更新されない状況でも、突然、さらに短くなるケースはいくらでもある。諦めずに、しつこく励んでいれば、きっと短くなる。ならずとも、真剣な努力は、プログラミング言語の特性の理解を深め、プログラミング力を向上させるであろう。
おわり
つづく。