Das Beste vereint? Wie die Programmiersprache Julia den Markt erobern will
Marktfolger haben es in der Regel schwer, sich gegen die etablierten Marktführer zu behaupten und ihre eigene Erfolgsgeschichte zu schreiben. Sie haben aber auch einen entscheidenden Vorteil: Sie können aus den Stärken und Schwächen der anderen lernen. Genau diesen Aspekt haben sich die Entwickler der Open-Source-Sprache Julia zunutze gemacht und sind angetreten mit der Vision, ein „Best-of“ bestehender Programmiersprachen zu entwickeln.
„Why We Created Julia“
2012 haben die vier Informatiker und Mathematiker Jeff Bezanson, Stefan Karpinski, Viral B. Shah und Alan Edelman nach dreijähriger Entwicklungszeit die erste Open-Source-Version von Julia veröffentlicht. Mit dabei: Ein Manifest, in dem sie ihre Hintergründe und vor allem ihre ambitionierten Ziele offenlegen. Ihr Ansatz war es, die gesammelten Erfahrungen in der Arbeit mit unterschiedlichen Programmiersprachen in eine neue Sprache umzuwandeln, welche die besten Elemente von C, Matlab, Java, Ruby, Perl, Python und R – also die Vorteile dynamischer und statischer Sprachen – miteinander vereint.
Der Vergleich: Julia, R & Python
Welche ist die beste Programmiersprache für Data Science? Wir haben die drei führenden Data-Science-Sprachen miteinander verglichen.
Fokus auf Performance und Lesbarkeit
Der Fokus der Entwickler lag auf einer hochperformanten Sprache, die den Anwendern möglichst wenig abverlangt. Also die Geschwindigkeit von C/C++ in Kombination mit der Usability von Sprachen wie Python. Ermöglicht wird das auch durch die heutigen Compiler wie LLVM, auf denen die Sprache aufbaut und die den Julia Quellcode vor der Ausführung kompilieren. Auch hier hat Julia als Marktfolger den Vorteil den Zeitgeist deutlich leichter aufgreifen zu können. Virtualisierung und Lastverteilung: Das Big-Data-Zeitalter und die vielen auf Performance angewiesenen Anwendungsfälle, wie Machine Learning und Simulationen, sind das Einsatzgebiet für Julia. Die klare und modern anmutende Syntax erleichtert den Einstieg für neue User und erhöht die Lesbarkeit. Gerade im Data-Science-Kontext, in dem Transparenz und Nachvollziehbarkeit entscheidend für die Akzeptanz und weitere Verwendung der Analysen sind, ist eine gute Lesbarkeit wertvoll.
Hierbei spielt auch eine Rolle, dass sowohl die Standardbibliothek als auch geschwindigkeitsrelevante Zusatzbibliotheken direkt in Julia geschrieben werden können und so Sprachbrücken zu kompilierten Sprachen entfallen.
Folgendes Beispiel zeigt wie Julia von Anfang an auf verteiltes Rechnen auf unterschiedlichen Prozessoren oder Clustern setzt:
using Distributed# fetch the count of processes currently available
count_of_processes = nprocs()# add some more processes
# addprocs(4)“““
# π – calculationCalculates Pi with the Taylor series
by spreading the formula over several processes.“““
function distributed_pi_calculation(prec)
return pi = @distributed (+) for i = prec: -1: 1
if i % 2 == 0
-4.0 / (2 * i – 1)
else
4.0 / (2 * i – 1)
end
end
end# usage of the function
distributed_pi_calculation(1_000)
# Loading packages ‚Distributed‘
using Distributed
# fetch the count of processes currently available
count_of_processes = nprocs()
# add some more processes
# addprocs(4)
„““
# π – calculation
Calculates Pi with the Taylor series
by spreading the formula over several processes.
„““
function distributed_pi_calculation(prec)
return pi = @distributed (+) for i = prec: -1: 1
if i % 2 == 0
-4.0 / (2 * i – 1)
else
4.0 / (2 * i – 1)
end
end
end
# usage of the function
distributed_pi_calculation(1_000)
Typen, Funktionen und Makros: Der technische Kern von Julia
Der technische Kern der Sprache ist das Typ-System von Julia. Diese Sprachkonstrukte, die viele Anwender sicherlich an Structs in C erinnern, sind hierarchisch aufgebaut und „dynamisch typisiert“. Insgesamt gibt es in Julia über 500 vordefinierte Typen. Diese spezialisierten Typen sind auch ein wesentlicher Schlüssel für die Performance von Julia.
Funktionen werden über die Argumente ausgewählt (multiple dispatch), sodass der Sprachumfang erweitert werden kann, indem zum Beispiel eine Addition von definierten Typen implementiert werden kann.
Auch das Set an Möglichkeiten im Bereich der Metaprogrammierung ist groß. Hierzu gehören zum einen Makros, mit denen sich Ausdrücke in Julia syntaktisch umformen lassen und „Generated Functions“. Besonderes Merkmal letzterer ist die Tatsache, dass man beim ersten Aufruf statt der Argumente nur die Typen erhält und man daraufhin einen Ausdruck zurückgeben kann, der zum Funktionskörper wird.
Die Entwicklung ist positiv
Anfangs auf den wissenschaftlichen Bereich fokussiert, eignet sich Julia längst auch für allgemeine Programmieraufgaben. Wie auch bei R, speist sich der Funktionsumfang von Julia aus den zusätzlich verfügbaren Paketen. Über 3.000 von ihnen sind der Beleg für die mittlerweile erreichte Vielschichtigkeit der Sprache, aber auch für die immer weiter wachsende Community, die sich für die Erstellung und Weiterentwicklung der Pakete verantwortlich zeichnet. Der eingesetzte Paketmanager auf Basis von Git macht es Entwicklern einfach, bestehende Pakete zu testen und selber die Entwicklung voranzutreiben.
Julia geht in den Produktiveinsatz
Die positive Entwicklung von Julia macht natürlich auch vor Unternehmen nicht halt. Amazon, Google, Microsoft und Co. setzen bereits in Teilen auf Julia. Mozilla verteilt Fördergelder, um Julia in den Browser zu integrieren. Auch im Finanzsektor erfreut sich Julia seit einigen Jahren wachsender Beliebtheit. Im aktuellen TIOBE-Index (Oktober 2020) für Programmiersprachen liegt Julia auf Platz 32. Derzeit steht Julia bei über 20 Millionen Downloads – die massiven jährlichen Steigerungsraten von teilweise über 100 % zeigen, dass die Relevanz von Julia weiter zunimmt.
Informationen für den Einstieg in Julia
Wie beginne ich die Arbeit mit Julia? Gibt es gute Entwicklungsumgebungen? Wo finde ich Neuigkeiten zur Sprache? Wir haben die wichtigsten Informationen für Julia-Einsteiger zusammengetragen:
- Download der aktuellsten Julia-Version: https://julialang.org/downloads/
- Entwicklungsumgebung (IDE): Explizit für die Nutzung von Julia entwickelt Juno oder Jupyter
- Aktuelle News zu Julia: Julia Bloggers, auf Twitter @JuliaLanguage
- Zentrale Veranstaltung für Julia-Anwender: JuliaCon
- Anbieter zusätzlicher Features und Angebote rund um Julia: Julia Computing
Anmerkung: Dieser Beitrag wurde im Oktober 2020 aktualisiert.
Einstieg, Datenmanagement, Analysen: Werden Sie mit eoda zum Experten.