Ich habe den Terminplaner, den ich bereits in Java, Groovy und Common-Lisp programmiert habe, auch mal in Ruby programmiert. Die Line-of-Code habe ich für den Vergleich mal etwas professioneller ausgewertet. Hier das Ergebnis:
Sprache | Anzahl Dateien | Line of Code (ohne Kommentare) |
---|---|---|
Java | 7 | 296 |
Groovy | 7 | 230 |
Ruby | 7 | 236 |
Common-Lisp | 6 | 140 |
Die Ursachen dafür, dass die Lisp-Lösung so wenig Zeilen hat, habe ich hier bereits früher erklärt.
Die Lösungen in Groovy und Ruby sind erwartungsgemäß ungefähr gleich lang. Neben der Länge fallen aber noch viel mehr Ähnlichkeiten auf.
Folgender Code steht im Groovy-Beispiel:
public Collection getTermine(String besitzer, boolean zeigeAuchAbgelehnte) {
return termine.inject([]) {result, termin ->
termin.fuegeZuTerminlisteHinzu(result, besitzer, zeigeAuchAbgelehnte)
result
}
}
Im Ruby-Beispiel finden wir den entsprechenden Code:
def termine(besitzer, zeige_auch_abgelehnte)
@termine.inject([]) { |result, termin|
termin.fuege_zu_terminliste_hinzu(result, besitzer, zeige_auch_abgelehnte)
result
}.sort
end
Natürlich ist die Syntax unterschiedlich, aber diese Unterschiede halten sich durchaus in Grenzen. Die Syntax für Closures ist beispielsweise fast identisch und das API der Collections ebenfalls. Auf jeden Fall finde ich, dass Groovy und Ruby größere Ähnlichkeiten aufweisen als Groovy und Java – jedenfalls, wenn man in Groovy auch mit Groovy-Style programmiert.
Diese Medaille hat zwei Seiten: Der Umstieg von Java auf Groovy ist fast so schwer wie von Java auf Ruby. Wenn man allerdings Groovy oder Ruby beherrscht, ist der Umstieg auf die jeweils andere Sprache relativ einfach.
Den vollständigen Quellcode zum Beispiel kann man sich bei github herunterladen.
Tagged: Ruby Image may be NSFW.
Clik here to view.

Clik here to view.
