Codegolf ist ein Programmierwettbewerb, bei dem die Teilnehmer versuchen, einen bestimmten Algorithmus mit so wenig Quelltext wie möglich zu implementieren. Codegolf ist nicht zu verwechseln mit dem sogenannten „Sizecoding“, bei dem es darum geht, möglichst kleine ausführbare Binärdateien zu erzeugen. Manchmal wird Codegolf auch „Skriptgolf“ genannt oder, vor allem im Englischen, mit der zu verwendenden Programmiersprache verbunden (wie englisch „Perl golf“).

Geschichte Die Länge des kürzestmöglichen Programms zur Erzeugung einer bestimmten Ausgabe (in einer bestimmten Programmiersprache) wird Kolmogorow-Komplexität genannt, benannt nach Andrey Kolmogorov aufgrund seiner mathematischen Arbeiten zu diesem Thema im Jahre 1963. Häufig geht es beim Codegolf mehr um eine allgemeine zu erreichende Eingabe-Ausgabe-Transformation als um das bloße Erreichen einer bestimmten Ausgabe ohne vorherige Eingabe.

Die Bezeichnung „Codegolf“ wurde vermutlich das erste Mal 1999 im Zusammenhang mit der Programmiersprache Perl verwendet; und blieb wegen der Verbreitung der Sprache bei RSA-Verschlüsselungen zunächst in diesem Umfeld. Ähnliche informelle Wettbewerbe waren aber unter APL-Hackern bereits früher bekannt gewesen. Heute wird der Ausdruck unabhängig von der Programmiersprache verwendet, was teilweise sogar zum Entstehen von Sprachen nur für Codegolfwettbewerbe geführt hat. Der systematische Gebrauch solch kurzer Quelltexte wird in der Praxis als „Spartanische Programmierung“ bezeichnet.Jeff Atwood: Spartan Programming. In: Coding Horror, 8. Juli 2008 (englisch).

Hintergrund der Bezeichnung „Codegolf“ ist das Bestreben im Golfsport, eine möglichst niedrige Punktzahl zu erreichen, im Gegensatz zum Ziel einer hohen Punktzahl in anderen Sportarten.

Arten von Codegolf Viele Codegolfaufgaben fordern nicht eine bestimmte Programmiersprache. Meistens jedoch werden Einschränkungen gemacht, wie die Verwendung spezifischer Codegolfdialekte wie REBMUREBMU: Code Golf Language for Humans (einem Dialekt der Sprache REBOL) oder Zeitlimits, um so die Aufgabe interessanter und herausfordernder zu gestalten.

Spezielle Codegolfsprachen Mehrere Programmiersprachen wurden für den expliziten Gebrauch beim Codegolf entwickelt. Die bekanntesten unter ihnen sind GolfScript und Flogscript. Beide sind turingvollständig und bieten umfassende Möglichkeiten zum Ausdrücken komplexer Prozesse in wenigen Zeichen Quelltext. Ein Nachteil dieser Sprachen ist ihre schwere Lesbarkeit, die sie für den praktischen Einsatz ausschließt; man nennt sie daher unter anderem auch „esoterische Programmiersprachen“. Weitere Beispiele sind die Sprachen Pyth und CJam.Liste spezieller Codegolfsprachen:

Ein Beispiel in GolfScript, das die ersten fünfzig Stellen von Pi ausgibt: ;'' 6666,-2%{2+.2/@*\/10.3??2*+}* `50<~\; -> 3141592653589793238462643383279502884197169399375

Wettbewerbe Folgende Wettbewerbe erlauben mehrere Programmiersprachen: Anarchy Golf, JAGC, Shortening codes, Code Golf & Coding Challenges, CodinGam, Code Golf. Der Wettbewerb 4clojure.com gestattet nur Clojure, VimGolf nur Vim.

Siehe auch Datenkompression Perlwettbewerbe

Weblinks StackOverflow.com: Fragen markiert mit 'code-golf' CodeGolf.StackExchange.com: Fragen und Antworten zu Codegolf Codegolf mit regulären Ausdrücken: Eine Fanvariante des Codegolfs ShortestWikiContest

Einzelnachweise

Kategorie:Programmierwettbewerb