コード
ゴルフは、コンピュータプログラミングの一形態であり、参加者が与えられた
アルゴリズムをいかに短く表現するかが競われるコンテストです。この競技では、バイナリサイズではなく、
ソースコードの文字数がスコアとなるため、プログラマは精密かつ独創的な技術を駆使する必要があります。また、しばしば「
Perl golf」など、特定の
プログラミング言語に基づいた名称がつけられることもあります。コード
ゴルフは、ショートコーディングやコードパズルとも呼ばれることがあります。
歴史
この「
ゴルフ」という用語は1999年、
Perlのニュースグループで初めて使われたとされています。その後、
RSA暗号の実装がたった5行の
Perlプログラムで行われたことで、この形態のプログラミングが普及しました。さらに、
APL言語のハッカーたちによる非公式なコンテストも存在し、今では多くの
プログラミング言語がこのスタイルで競われるようになっています。何より、PHPでは1287文字で機能的な
ウィキが実装された実績もあり、コード
ゴルフ用の言語も設計されるに至りました。
語源
「コード
ゴルフ」という名称は、プレイヤーが目指すのが低いスコアであることから、通常は高いスコアを目指すスポーツや競技である
ゴルフから由来しています。これはこの競技のユニークな特性を反映した呼び名です。
短縮テクニック
ソースコードを短縮する技術としては、いくつかの戦略があります。例えば:
- - コメントや空白を削除する。
- - 変数の宣言を省く。
- - 関数をできるだけ用いず、コードを直接記述する。
これらの方法により、参加者はより効率的にコードを短くまとめることが求められます。
コード
ゴルフに特化した
プログラミング言語もいくつか存在します。特に有名なものにはGolfScriptやFlogscriptがあり、シンプルかつ短いコードを書くための特性を持っています。これらの言語は
チューリング完全で、コード
ゴルフ以外にはあまり実用的ではなく、難解さも特徴的です。バイナリラムダ計算もコード
ゴルフに応じた形式で設計されています。 さらに、難解
プログラミング言語の情報も多くのサイトにまとめられています。
出題形式
コード
ゴルフの問題は一般的に、特定の
プログラミング言語を指定しない形で出題されることがありますが、指定を設けることも可能です。このようにすると、特定の言語に合わせた新しい高効率なデザインが生まれる場合があります。例えば、
REBOL言語の派生としてREBMUが存在します。また、オンラインやライブのコンテストでは、時間の制約も設けられることがあり、参加者にとってはプレッシャーとなります。
コード
ゴルフは様々な
プログラミング言語で行われており、以下のようなトーナメントがあります:
- - Anarchy Golf (オンライン): 多数の主要言語と難解言語を含む。
- - JAGC (オンライン): PerlやPythonなどが含まれる。
- - Shortening codes (SPOJ内): 複数の主要言語。
- - PPCG (Stack Exchange): 指定された言語を用いた問題。
これらのトーナメントは、コード
ゴルフのコミュニティにおける競技の活性化にも貢献しています。他にもさまざまな実施機会が存在し、プログラマーたちに新たな挑戦を提供しています。コード
ゴルフはただの競技ではなく、創造性と技術を試す舞台でもあるのです。