コードゴルフとは

プログラミングとは

世の中には、プログラミングという行為がある。コンピュータ上で動くプログラムをつくる営みを指して、そう呼ぶ。

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 というサイトを訪れるといい。

サイト上で、多種多様なプログラミング言語で競い合うことができる。

出題は、頻繁に行われているので、すぐに始められる。

副次的メリット

コードはどれだけ短くなるのか。それは神のみぞ知る。複数人が同じ文字数の、短い回答に辿り着き、長いあいだ記録が更新されない状況でも、突然、さらに短くなるケースはいくらでもある。諦めずに、しつこく励んでいれば、きっと短くなる。ならずとも、真剣な努力は、プログラミング言語の特性の理解を深め、プログラミング力を向上させるであろう。

おわり

つづく。