Was ist Code „Golf“?

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Aus dem großen Archiv von „Dinge, über die Chris viel zu lange völlig verwirrt war und die er jetzt halb versteht, also kann er auch darüber bloggen“: Code Golf. Ich hörte jemanden sagen: „Ich habe es von meinem eigenen Golfspiel so klein bekommen.“ Ich kniff die Augen zusammen, verwirrt und ließ es einfach so stehen, weil es nicht wichtig genug schien, um danach zu fragen. Vielleicht Slang für „Arbeit“ oder „Tüfteln“.

Das ist eigentlich gar nicht so weit hergeholt. Die ganze Idee ist, Code auf so wenige Zeichen wie möglich zu reduzieren und ihn dabei funktionsfähig zu halten. Beim (echten) Golf gilt: Je weniger Schläge man braucht, um den Ball ins Loch zu bringen, desto besser ist man. Beim Code Golf gilt: Je weniger Zeichen man verwendet, desto besser ist man.

Manchmal ist Code Golf Teil eines Wettbewerbs (oder *Turniers*, um im Jargon zu bleiben). Manchmal ist es nur zum Spaß. Manchmal ist es nützlich. Manchmal besteht das Format darin, eine bestimmte Herausforderung oder einen Algorithmus zu lösen oder mit gegebenen Eingaben eine bestimmte erwartete Ausgabe zu erzielen.

Die Verständlichkeit von „gegolftem“ Code geht dabei völlig verloren. Der Code soll nicht verstanden werden, er soll kurz sein und funktionieren. Es ist üblich, sich ein Stück gegolftem Code mit völliger Verwirrung anzusehen. Hier ist eins:

function(a){a='0x'+a.slice(1).replace(a.length>4?a:/./g,'$&$&')|0;return[a>>16,a>>8&255,a&255]}

Das ist ein Stück JavaScript, das eine Hex-Farbe nimmt und die RGB-Werte daraus zurückgibt. Schwer zu erkennen, wenn man es nur anschaut! Es stammt von Jed Schmidt auf seiner Seite 140byt.es, die Tweet-große Stücke von JavaScript präsentiert, die funktionale Dinge tun.

Im Fall von JavaScript kann gegolfter Code gelegentlich nützlich sein, da er weniger Code bedeutet, der über das Netzwerk gesendet werden muss.

Wikipedia hat einen Artikel über Code Golf und sagt, dass es 1999 mit Perl begann. So ziemlich jede Sprache, die man sich vorstellen kann, kann man „golfen“ (es ist schließlich nur ein Konzept) und wahrscheinlich gibt es dafür sogar Turniere. Sowohl Reddit als auch StackExchange haben dafür eigene Unterseiten.

Abgesehen davon, dass es einfach Spaß macht, kann es eine Übung darin sein, ein tieferes Verständnis der Sprache zu entwickeln und die eigene Logik und Problemlösungsfähigkeit zu dehnen.

Code Golf muss nicht formalisiert sein, es kann einfach etwas sein, das man zum Spaß macht. Wenn man ein paar Codezeilen von etwas abspart, an dem man gerade arbeitet, hat man es „gegolft“.


Als relevante Nebenbemerkung: Eine Sprache, in der ich bisher wenig Golf gesehen habe, ist SVG. SVG eignet sich aber irgendwie perfekt dafür, da es so mathematisch, deklarativ und referenziell ist. Dieser Pen hat mich darauf gebracht:

Siehe den Pen Arrows von fuddl (@fuddl) auf CodePen.

Ich habe mich auch daran versucht

Siehe den Pen SVG Golf von Chris Coyier (@chriscoyier) auf CodePen.