Erfahrungen mit Julia – Alternative zu Python, Matlab und R?

KoksKaktus

Cadet 2nd Year
Registriert
Okt. 2024
Beiträge
24
Hallo zusammen,

ich bin auf die Programmiersprache Julia (https://de.wikipedia.org/wiki/Julia_(Programmiersprache)) aufmerksam gemacht worden und frage mich, ob hier im Forum bereits jemand praktische Erfahrungen damit gesammelt hat.

Chat-GPT sagt: "Julia ist eine moderne, hochperformante Programmiersprache, die speziell für technische und wissenschaftliche Berechnungen entwickelt wurde. Sie kombiniert die einfache Syntax dynamischer Sprachen wie Python mit der Ausführungsgeschwindigkeit von kompilierter Software (ähnlich wie C). Julia eignet sich besonders gut für numerische Simulationen, Datenanalyse, Statistik und maschinelles Lernen."

Bisher habe ich vor allem mit Matlab gearbeitet, gelegentlich auch mit Python, insbesondere im Bereich numerische Simulation, Prozessoptimierung sowie bei statistischen Methoden wie PCA und Partial Least Squares.

Julia scheint ja gerade in diesen Anwendungsgebieten einige interessante Vorteile zu bieten – etwa durch die Kombination aus hoher Rechenleistung (fast auf C-Niveau) und einer relativ einfachen Syntax.

Mich würden eure Eindrücke interessieren:
  • Nutzt jemand Julia bereits produktiv?
  • Wie ist euer Eindruck im Vergleich zu Python, Matlab oder R?
  • Gibt es Stolpersteine oder Dinge, die man zu Beginn wissen sollte?
Ich freue mich auf den Austausch!

Englischer Wiki-Artikel: https://en.wikipedia.org/wiki/Julia_(programming_language)

Viele Grüße,
KoksKaktus
 
Julia kenn ich nicht, hab aber kurz drüber geschaut.

Meine erste Frage wäre: "Will man in dem Anwendungsgebiet wirklich eine Sprache benutzen die kompiliert werden muss?"

Matlab und Python haben den Vorteil, dass die Sprache nur interpretiert wird. Du drückst also auf "Play" und alles läuft sofort los bis zum ersten Fehler oder zum Ende. Hast du einen Fehler drin, änderst du es schnell ab, drückst wieder auf Start und es läuft direkt wieder.

Kompilieren heißt, du drückst auf kompilieren und dein Programm wird, je nach Status, ein paar Sekunden bis Minuten gebaut, bis du es dann starten kannst. Gibt es einen Fehler kompilierst du es nach Änderung nochmal.

Gut, die Performance ist evtl. etwas besser mit Julia, allerdings wenn du z.B. ML mit Python machst, dann benutzt du am Ende nicht Python sondern steuert vorkompilierte C Bibliotheken an. D.h. die Performance ist nicht unbedingt schlecht.

Am Ende ist vermutlich die Frage wo die Produktivität liegen soll. Willst du schneller beim Eingeben/Ändern/Fehler beheben sein, dann sind interpretierte Sprachen meiner Meinung nach deutlich besser.
Willst du höhere Ausführgeschwindigkeit, dann ist Julia sicher gut.

Ich selbst bevorzuge es wenn Probleme gelöst werden müssen die nicht zeitkritisch sind, sondern das Programmieren einfach nur ein Hilfsmittel zur Datenverarbeitung ist, dass ich selbst produktiver bin und dafür das fertige Programm halt langsamer läuft und würde immer zur Interpretersprache greifen.

Das wäre jedenfalls mein grundsätzlicher Gedanke zu der Frage ob Julia gut ist oder nicht. ;)
 
  • Gefällt mir
Reaktionen: KoksKaktus
@KingLz Julia muss nicht kompiliert werden, sondern wird zunächst als Skriptsprache wie Python benutzt. Das "kompilieren" passiert im Hintergrund, sodass das gleiche Julia-Skript bei mehrfache Ausführung "schneller" wird, in dem Sinne, das bei der ersten Ausführung Dinge kompiliert und optimiert werden, die danach verwendet werden können.

Julia ist im naturwissenschaftlichen Kontext inzwischen sehr weit verbreitet und kann dort durchaus (Performance-)Vorteile gegenüber beispielsweise Python bieten. Die größten Performancegewinne bekommst du dabei dadurch, dass du Teile deines Codes Typenfest definierst und der Julia-Interpreter das dann entsprechend optimieren kann. Das sind die Situationen, in den Julia-Performance (fast) auf C-Niveau sein kann. Mit Python kannst du das über Cython übrigens auch erreichen, ich finde das aber umständlicher.

Praktisch ist auch, dass die Python-Integration recht gut ist, und du in Julia fehlende Bibliotheken (gerade zu Anfang war das zum Beispiel matplotlib zum plotten) aus Python importieren und direkt in deinem Skript verwenden kannst.

Nachteiilg ist aber, dass es halt schon diese Nische von naturwissenschaftlich/numerischen Aufgaben besetzt, aber keine ganz "erwachsene" Programmiersprache ist. Wenn du also beispielsweise APIs von entfernten Services ansprechen möchtest fehlten mir zumindest vor ein paar Jahren noch viele Funktionalitäten für HTTP(S) Requests, sodass ich da Python bevorzugen würde.

Aber probier es einfach aus, gerade die ersten Schritte machen echt Spaß und auf https://julialang.org/learning/tutorials/ findest du einiges an Resourcen (Der Zero2Hero-Workshop ist von einem ehemaligen Kollegen von mir, dessen Vorträge ich eigentlich immer empfehlen kann).
 
  • Gefällt mir
Reaktionen: KoksKaktus
Ich hatte 2019 mal kurz Julia getestet, allerdings keine Projekte umgesetzt. Wenn man von Matlab/Python kommt stört einem das Kompilieren. Wenn ich mich richtig erinnere, wurde daran gearbeitet um es weniger nervig zu machen.

Ein anderer Punkt, der mir in Erinnerung geblieben ist, ist dass der Name einfach nur dämlich ist. Bei einer Google-Suche bekommt man häufiger nicht relevante Ergebnisse.
 
  • Gefällt mir
Reaktionen: KoksKaktus
@zett0 Aber es musste doch auch 2019 shcon nicht kompiliert werden? Julia-Code wird in Skripten geschrieben, die ganz wie in Python mit julia script.jl ausgeführt werden, bzw. hast du die REPL für interaktives Coden (analog zu (i)python). Jupyter Notebooks zum Beispiel sind genauso möglich.

Die Problematik mit dem Namen ist da. Von Python, Java, C, C++, ... kommend stört natürlich auch die an Wahnsinn grenzende Entscheidung 1-basiert zu arbeiten, aber wer Matlab nutzt, ist das natürlich gewöhnt. ;-)
 
  • Gefällt mir
Reaktionen: KoksKaktus
OLF schrieb:
Aber es musste doch auch 2019 shcon nicht kompiliert werden? Julia-Code wird in Skripten geschrieben, die ganz wie in Python mit julia script.jl ausgeführt werden, bzw. hast du die REPL für interaktives Coden (analog zu (i)python). Jupyter Notebooks zum Beispiel sind genauso möglich.
Ich hatte eine IDE genommen und da hat das Kompilieren von wenigen Zeilen für meinen Geschmack zu lange gedauert. Wie das mittlerweile ist kann ich nicht sagen.
OLF schrieb:
Von Python, Java, C, C++, ... kommend stört natürlich auch die an Wahnsinn grenzende Entscheidung 1-basiert zu arbeiten
Das ist das beste Feature von Julia überhaupt, keine Ahnung warum in der Programmierung so viele etwas Unlogisches bevorzugen 😉
 
  • Gefällt mir
Reaktionen: KoksKaktus
Julia wird kompiliert. Alles was performant ist ist kompiliert worden. Es wird "Just in Time" (JIT) kompiliert, bei Javascript z.B. wird das heutzutage auch häufig gemacht (je nach Kontext). Vieles was hier in dem Therad zu dem Thema steht ist nicht korrekt oder irreführend.

Kompilieren bedeutet, dass der Code in Maschinensprache übersetzt wird, direkt oder indirekt. Bei Julia konkret wird LLVM als Backend verwendet, d.h. Julia Code wird in Code umgewandelt, der vom LLVM Compiler verstanden wird und dieser kompiliert dann.

Julia unterstützt explizit REPL und hat umfangreiche Funktionalitäten da drum herum. Ist also nicht so wie bei AOT (Ahead of Time) kompilierte Sprachen (wie z.B. C++), wo das prinzipbedingt nur sehr eingeschränkt möglich ist.

KoksKaktus schrieb:
Julia scheint ja gerade in diesen Anwendungsgebieten einige interessante Vorteile zu bieten – etwa durch die Kombination aus hoher Rechenleistung (fast auf C-Niveau) und einer relativ einfachen Syntax.
Mein Fazit war das die Syntax nur einfach ist, wenn du keine strengen Anforderungen an Performance hast. Sonst musst du genau wie bei C/C++/... aufpassen was du codest, da kommst du nicht drum herum und die Syntax wird dann auch etwas aufwendiger.

KoksKaktus schrieb:
Bisher habe ich vor allem mit Matlab gearbeitet, gelegentlich auch mit Python, insbesondere im Bereich numerische Simulation, Prozessoptimierung sowie bei statistischen Methoden wie PCA und Partial Least Squares.
KoksKaktus schrieb:
Wie ist euer Eindruck im Vergleich zu Python, Matlab oder R?
Für das was du machst ist die Programmiersprache vermutlich ziemlich egal. Oder hattest du Probleme mit der Performance unter Matlab? Wie auch bei Python sind bei Matlab performancekritische Algorithmen in C implementiert und daher ziemlich performant.

Viel wichtiger ist immer das Ökosystem drum herum. Welche Packages gibt es, welche Algos stehen zur Verfügung und sind implementiert. PCA und Partial Least Squares ist ziemlicher standard, das wirst du überall finden. Implementierungen aktueller Paper wird es aber ggf. nur in R oder Julia geben. Das weißt du aber, wenn du sowas brauchst und meist ist es nicht schadhaft wenn du einfach ein kleines R-Script von Python aus aufrufst.

KoksKaktus schrieb:
Wie ist euer Eindruck im Vergleich zu Python, Matlab oder R?
Matlab Script ist eine schlechte Programmiersprache. Das ist für Menschen, die nur so akademische Scripte bauen aber weitesgehend egal (der Code der da raus kommt ist meist schlecht, egal in welcher Sprache programmiert wurde - was okay ist, Forscher sind keine Softwareentwickler).
Das Hauptproblem bei Matlab ist das stark fraktionierte Ökosystem. Jedes Package hat dort einen eigenen Funktionsumfang und eigene Implementierungen und Interfaces und die sind untereinander alle nicht miteinander kompatibel. Für akademische Forschung ist Matlab daher nicht gut geeignet, denn da willst du ein möglichst großes Ökosystem haben.

zett0 schrieb:
Das ist das beste Feature von Julia überhaupt, keine Ahnung warum in der Programmierung so viele etwas Unlogisches bevorzugen 😉
Das hat nichts mit unlogisch zu tun, sondern damit, welcher Anwendungsfall kompliziert sein soll bzw. welcher simpel sein soll. Wenn du viel mit Offsets arbeitest, wie das z.B. bei C oft der Fall ist, dann ist eine 0-Indizierung einfacher. Davon abgesehen ist das ein ganz kleines Mini-Detail einer Sprache das praktisch vollständig irrelevant ist.

zett0 schrieb:
Ich hatte eine IDE genommen und da hat das Kompilieren von wenigen Zeilen für meinen Geschmack zu lange gedauert. Wie das mittlerweile ist kann ich nicht sagen.
Das ist ein großes Thema bei Julia. Aufgrund der JIT Kompilierung und weil alle dependencies kompiliert werden müssen dauert das das erste mal relativ lange. Das ist auch bekannt als "Time to first Plot" (TTFP) Problem.
 
Zuletzt bearbeitet:
Zurück
Oben