Weil Julia neu ist, befinden sich einige Aspekte der Sprache noch in Entwicklung. Die sehr gute Dokumentation [6] ist einen Blick wert. Weil die Dinge noch im Fluss sind, empfiehlt es sich das jeweils aktuellste Release aus dem Netz zu beziehen. Im Moment unterstützt Julia
Die folgenden Beispiele wurden auf einem Limulus-Cluster [7] mit einer Intel i5-2400S-CPU und 4 GByte RAM unter Scientific Linux 6.2 gerechnet. Wer Julia nicht kompilieren möchte, kann es online ausprobieren [8] . Wer eine eigene Version haben möchte, braucht ein Arbeitsverzeichnis mit mindestens 2 GByte freiem Plattenplatz. Dort gibt man ein:
git clone https://github.com/JuliaLang/julia.git
Ist der Download beendet, hat man ein neues Julia-Directory. Anschließend wechselt der Anwender dort hinein und gibt
»make
«
ein – dann hat er Zeit für einen Kaffee oder eine Runde mit dem Hund. Der Build dauert eine Weile, besorgt sich aber alle nötigen Pakete selbst. Ist alles durchgelaufen, sollte sich ein Julia-Binary im Arbeitsverzeichnis finden. Um Julia zu starten, genügt
./julia
Erscheint dann nicht der Titel aus Listing 1 versucht man es mit
Listing 1
Julia Header beim Startup
./julia -q
Am besten baut man den Pfad zur ausführbaren Datei nun in seine PATH-Variable ein.
Wie bei vielen interaktiven Tools kann man jetzt Ausdrücke eingeben wie:
julia> sqrt(2*7)+(6/4) 5.241657386773941
Wie oben schon erwähnt sind sowohl eine User Manual wie auch Library-Referenz online abrufbar und helfen bei der Erkundung von Julia. Weil Julia auf HPC-Umgebungen ausgerichtet ist und Parallelverarbeitung dort eine große Rolle spielt, ist das auch ein integraler Teil von Julia.
Hochspachen, die die Komplexität von MPI verbergen, erleichtern den Umgang mit Parallelverarbeitung. Das hat jedoch seinen Preis in Form einer verminderten Effizienz. Dieser Preis scheint oft gerechtfertigt, weil der Bequemlichkeitsvorteil den Effizienznachteil aufwiegt, aber das MPI hat nach wie vor seine Berechtigung.
Wie im Julia-Manual beschrieben bietet Julia eine einfaches, einseitiges Messaging-Modell: "Julias Implementierung des Message Passing unterscheidet sich von der anderer Umgebungen wie etwa MPI. Die Kommunikation in Julia ist generell einseitig, was heißt, dass Julia nur mit einem Prozessor in einer Zwei-Prozessor-Operation umgehen muss. Darüber hinaus handelt es sich bei diesen Operationen typischerweise nicht um Dinge wie 'Nachricht verschicken' und 'Nachricht empfangen', sondern sie ähneln eher dem Aufruf von Benutzerfunktionen."
Die Autoren heben außerdem hervor, dass Julia zwei eingebaute Primitive enthält: "… Remote References und Remote Calls. Eine Remote Reference ist dabei ein Objekt, dass von jedem Prozessor genutzt werden kann, um auf ein Objekt zu verweisen, dass ein bestimmter Prozessor speichert. Eine Remote Call ist eine Anforderung eines Prozessors, eine Funktion mit bestimmten Argumenten auf einem anderen (oder demselben) Prozessor auszuführen."