Golo – eine neue Programmiersprache für die Java-Plattform

Hartmut Schlosser

Die Java-Plattform ist wieder um eine Programmiersprache reicher geworden. Golo heißt der jüngste Spross der JVM-Sprachenlandschaft, eine „leichtgewichtige dynamische Sprache“, die das „Explizite über das Implizite“ stellen soll. Schauen wir einmal, was es mit dieser etwas rätselhaften Selbstbeschreibung auf sich hat.

Zunächst einmal ist festzuhalten, dass Golo eine schwach typisierte, dynamische Sprache ist, die vollständig von den InvokeDynamic-Features aus Java 7 Gebrauch macht. Entstanden ist die Sprache als Forschungsprojekt unter der Leitung von Julien Ponge, Lehrbeauftragter an der Universität INSA Lyon. Golo wird gar als Showcase dafür beschrieben, wie eine Sprachen-Runtime effektiv von InvokeDynamic Gebrauch machen kann.

Seine Daseinsberechtigung zieht Golo aus der Notwendigkeit nach Leichtgewichtigkeit. Ponge wollte eine möglichst einfache Sprache schaffen, die sich in wenigen Tagen erlernen lässt. Denn die Lernkurve für Java oder Groovy sei sehr hoch für Neulinge in Sachen Sprachdesign und Implementierung – und Studenten fallen eindeutig in diese Kategorie, schreibt Ponge.

Und so muss man Golo wohl auch verstehen – als Sprachexperiment, das sich in einem sehr frühen Stadium der Entwicklung befindet. Dem Gründer Ponge ging es darum, mit einfachen Mitteln Erweiterungen für existierende Sprachen schreiben zu können. Zwar böten Sprachen wie Ruby oder Groovy sehr gute Extension Points, um Spracherweiterungen zu implementieren. Aber meist tendierten die Quellcodes solcher Projekte dazu, sehr lang zu werden. Eine kleine Sprache komme diesem Ansinnen besser entgegen.

Golo verwendet die Standard-Klassen des JDK, was den Einsatz in mehrsprachigen Projekten vereinfacht. Quellcode wird in „Module“ geschrieben, eine „Hello World“-Anwendungen nimmt dann folgende Form an:

module hello.World  

function main = |args| {  
 println("Hello world!")
}  

Kompiliert wird das ganze über den goloc Compiler, der JVM Bytecode in .class-Dateien erzeugt. Zur Compile-Zeit wird keine Typenüberprüfung vorgenommen.

Funktionen sind ein Grundelement der Sprache, auch Closures werden unterstützt. Parameter werden wiefolgt übergeben:

function addition = |a, b| {   
 return a + b
}  

Kontrollstrukturen werden wie gewohnt imperativ aufgesetzt:

if goloIsGreat() {
   println("Golo Golo")
}

if (someCondition) {
   doThis() 
} else if someOtherCondition {
   doThat()
 } else {
   doThatThing()
 }  

Was das Tooling angeht, so wird bereits Unterstützung für Vim, Sublime Text 2 und IntelliJ IDEA angeboten. Entwickelt wird die Sprache unter der Apache-2.0-Open-Source-Lizenz. Alle Details zur Sprache bietet der ausführliche Language Guide.

Zu finden ist Golo auf der eigenen Projektseite http://golo-lang.org/ und auf GitHub. Im Webbrowser kann man Golo über eine Google-AppEngine-Version ausprobieren.

Und dann sind wir gespannt auf Ihre Kommentare zur Sprache. Julien Ponge weist jedenfalls darauf hin, dass er die Sprache durchaus als ernsthafte Errungenschaft ansieht, die zu einer Bereicherung der Java Community werden könnte. Dennoch solle man die folgenden Grundwerte nicht außer acht lassen:

There is no limit as long as you stick to our core values:

be fun,

be respectful,

don’t take what you do too seriously.

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.