Code Golf

Wissen kompakt: Code Golf ist ein Wettbewerb zwischen Programmierern, bei dem derjenige gewinnt, der eine Programmieraufgabe mit den wenigsten Zeichen löst.

Code Golf – die Lösung mit den wenigsten Zeichen gewinnt

Code Golf ist ein Wettbewerb zwischen Programmierern. Wie beim Golfen, bei dem Sportler versuchen, einen Ball mit möglichst wenigen Schlägen in ein Loch zu spielen, gewinnt derjenige, der eine Aufgabe mit möglichst wenigen Zeichen löst. Verglichen werden meist Implementierungen in einer vorab definierten Programmiersprache. Auch das Setzen von Zeitlimits zur Einreichung von Lösungen ist nicht unüblich.

Der Ursprung von Code Golf geht auf eine Perl-Community zurück, in der Entwickler begannen, in einem Thread eine grundlegende Aufgabe mit immer kürzerem Code zu lösen. Im Juli 2000 wurde die First Annual Perl Golf Apocalypse ausgerufen.¹ Heute wird Code Golf auch Skriptgolf genannt, da in den Wettbewerben häufig Skriptsprachen wie Ruby, Rust, Phython, PHP,  JavaScript, Lisp etc. zum Einsatz kommen. Alternativ wird manchmal auch von Spartanischer Programmierung gesprochen.

Was ist der Nutzen beim Code Golf?

Wo liegt der Nutzen beim Code Golf für Softwareentwickler?

  • Die Teilnahme an einem Wettbewerb macht vielen Entwicklern Spaß.
  • Es ermöglicht den Vergleich der Lösungen verschiedener Entwickler. Ein solcher Vergleich ist normalerweise in der Softwareentwicklung selten möglich, denn meist arbeiten Teams gemeinsam an einer Lösung oder einzelne Entwickler kümmern sich um einzelne Aufgaben bzw. Anforderungen.
  • Es hilft bei der Verbesserung von Fähigkeiten, bspw. wenn Features von Programmiersprachen genutzt werden, die nur selten oder auch gar nicht verwendet werden.
  • Es könnte auch ein Training für ein Whiteboard Coding sein.

Und wo liegt der Nutzen für Unternehmen? Natürlich haben Unternehmen Interesse an guten Softwareentwicklern und performanten Lösungen, aber vor allem haben Sie Interesse an Lösungen, die gut nachzuvollziehen und zu warten sind. Entwickler verwenden nicht nur bei einem Code Review viel Zeit mit dem Lesen von Code, der von anderen Entwicklern implementiert wurde, sondern beschäftigen sich häufig – bspw. bei einem Refactoring – mit Codezeilen, die sie selbst früher geschrieben haben. Für einen Wettbewerb mag es sinnvoll sein, Variablen- oder Funktionsnamen auf einzelne Buchstaben zu kürzen – wie es bspw. so mancher Minifier macht – oder auf Kommentare zu verzichten, im professionellen Kontext werden sich Kollegen und Auftraggeber aber selten darüber freuen. Sicherlich macht es Sinn, die Anzahl von Variablen zu minimieren, persistente Variablen zu vermeiden oder kurze, sprechende Variablennamen zu verwenden – stets aber mit dem Blick auf die Nachvollziehbarkeit und Wartbarkeit einer Software.

Code Golf - die Lösung mit den wenigsten Zeichen gewinnt

In gewisser Weise gibt es eine Ähnlichkeit von Code Golf und Code-Kata. Eine Code-Kata ist eine Übungsaufgabe, bei der das Erlernen neuer Fertigkeiten und die Entwicklung von erfolgreichen Routinen im Mittelpunkt stehen. Ein Unterschied liegt darin, dass es bei einer Code-Kata mehrere Lösungen zu finden gilt, während es beim Code Golf um die Implementierung mit den wenigsten Zeichen geht.

Was macht t2informatik?

Was macht t2informatik? Kleiner Tipp: Es hat etwas mit Softwareentwicklung zu tun!

Hinweise:

Die Inhalte auf dieser Seite dürfen Sie gerne teilen oder verlinken.

[1] Annoucing the First Annual Perl Golf Apocalypse

Wenn keine bestimmte Programmiersprache in einem Wettbewerb vorgegeben wird, ist auch die Entwicklung eigener Programmiersprachen möglich. Hier finden Sie eine Liste sogenannter esoterischer Programmiersprachen bzw. Golfing Languages.

Übrigens: Wir suchen Softwareentwicklerinnen und Softwareentwickler.

Hier finden Sie eine schöne Sammlung mit Code Golf Beispielen.

Und hier finden Sie ergänzende Informationen aus unserer Rubrik Wissen kompakt:

Wissen kompakt: Wie funktioniert ein Code Review?

Wie funktioniert ein Code Review?

Wissen kompakt: Wie gelingt ein Refactoring?

Wie gelingt ein Refactoring?