Julia

Daten – Information – Wissen

Themen wie Machine Learning oder Künstliche Intelligenz sind aus der wissenschaftlich-technischen Welt zu alltäglichen Begriffen in den Nachrichten geworden. Methoden der rechnergestützten Datenanalyse werden vielfach erfolgreich angewandt und es scheint, dass ihr Potential noch nicht ausgereizt ist. Es stehen inzwischen Toolboxen zur Verfügung, die es wesentlich erleichtern, Machine Learning und Künstliche Intelligenz auch außerhalb von großen Insitutionen und Konzernen zu nutzen. Dabei ist es freilich essentiell auch die Grenzen der Methoden zu kennen und Ergebnisse kritisch zu prüfen.

Permutationen im Kreis mit Verbindungen für Transpositionen

Fragen, Anregungen und Hinweise zu dieser Seite sind willkommen per E-Mail

Am Massachusetts Institute of Technology, MIT, wurde die Sprache Julia entwickelt, die sowohl eine schnelle und flexible Programmentwicklung als auch kurze Ausführungszeiten ermöglicht. Sie ist eine allgemeine Programmiersprache, kann aber ihre Stärken besonders auf dem Feld der Datenanalyse ausspielen. In einem Blogbeitrag schreiben die Entwickler:

Being designed from the ground up for mathematical and numerical computing,
Julia is unusually well-suited for expressing ML algorithms. Meanwhile, its mix
of modern design and new ideas in the compiler makes it easier to address the
high performance needs of cutting edge ML.

Seit Januar 2019 ist Version 1.1 online!

Auf diesen Seiten finden Sie Angebote, uns ihre Fragestellungen im Zusammenhang mit Datenanalyse anzuvertrauen, aber ebenso eine Einführung in die Sprache und verschiedene Anwendungsfälle.

Wer direkt einsteigen möchte, kann Julia kostenlos auf seinem System (Linux, Mac, Windows) einrichten und sich mit unserer Einstiegshilfe einen Überblick verschaffen. Ohne lokale Installation kann direkt im Browser in der Julia-Box mit Julia gearbeitet werden. Der Blog zeigt weitere Programmbeispiele zu

Die Programmzeilen in den Blogs können direkt in ein Fenster mit Julia Prompt (REPL) kopiert werden, auch wenn die Beispiele den Prompt und Ergebnisse enthalten.

Letzte Einträge:

  • Mischen von Karten als stochastischer Prozess (2019-03-25).
  • Clusterverfahren: Clusterung von Daten zu Pilzen: Finde Gruppen von ähnlichen Elementen. (2019-03-12).
  • Klassifizierungen: Anwendungsfall Pilze: Sind sie essbar oder giftig?
  • Verkehrssimulation mit dem Nagel-Schreckenberg-Modell. Der Eintrag ist angepasst an Version 1.0.1 und zeigt, wie man ein Simulations-Modell als iterierbares Objekt nutzt.
  • Permutationen für Julia Version 1.0.1. Nutze aus, dass jede Permutation als eine Folge von Transpositionen dargestellt werden kann.

Julia basiert auf einem Just-in-time Compiler und hat folgende Merkmale:

  • Performance: Die Rechenzeiten sind im Bereich von compilierten Sprachen wie C und Fortran oder sogar kürzer. Programme lassen sich auf sehr einfache Weise parallelisieren).
  • Steile Lernkurve: Aufbauend auf wenigen grundlegenden Sprachelementen können in kurzer Zeit produktive Programme entwickelt werden. Viele Sprachelemente und Funktionen erschließen sich intuitiv. Es steht eine ausführliche Dokumentation zur Verfügung ebenso wie Tutorials. Eine Kurzbeschreibung zu Funktionen und Typen ist direkt von der Eingabezeile aufrufbar. Es gibt umfangreiche Ressourcen im Netz und hier zu Training und Ausbildung, nicht zuletzt die Beiträge der Konferenzen und in Wikibooks.
  • Mächtigkeit: Es stehen Sprachkonstrukte (z.B. Comprehensions) bereit, die es erlauben, in wenigen Zeilen anspruchsvolle Aufgaben zu formulieren. Operationen der Linearen Algebra sind in die Sprache eingebettet.
  • Metaprogramming: Der Code selbst wird in Julia-Datenstrukturen abgelegt, d.h. zur Laufzeit kann Julia Code erzeugt und verändert werden (Metaprogramming). Julia verwendet multiple dispatch. Zu einer Funktion gehören eine oder mehrere Methoden, wobei die passende Methode nach den Typen aller Argumente ausgewählt wird. Dieses einfache und klare Prinzip erweist sich als äußerst vielseitig und erlaubt es, auf sehr elegante Weise für ein Aufgabengebiet vielseitige Werkzeuge bereitzustellen (domain specific languages).
  • frei: Die Sprache ist unter der MIT-Lizenz nutzbar. Es stehen Downloads für Linux, maxOS und Windows bereit. Einsteigerinnen und Einsteiger profitieren von der großen und wachsenden Zahl von Nutzern und deren Erfahrung und zahlreichen Beiträgen in Diskussionsforen.
  • große Zahl von Erweiterungen/Paketen: Entwickler, die mit Julia arbeiten, stellen ihrerseits Pakete zur Verfügung. Das Julia-Eco-system umfasst über 1900 registrierte Pakete.
  • Plots: Das Paket Plots ist eine leistungsfähige Schnittstelle zu mehreren Plot-Bibliotheken, z.B. GR, MatPlot. Sehr gut integriert in die Sprache ist das Plot-Paket Makie.
  • Einbettung in Notebooks: Projekte lassen sich mit Jupyter in Notebooks organisieren, wiederverwenden und weiterentwickeln und werden bei der Durchführung dokumentiert. Alle Schritte sind dadurch später leicht nachzuvollziehen und reproduzierbar.
  • Intelligenter Prompt (REPL): Eingaben werden ergänzt, wiedergefunden, etc.
  • offen: Jede Nutzerin, jeder Nutzer kann auf die spezifische Aufgabe zugeschnittenen Code entwickeln. Es gibt keine Beschränkung auf vorgegebene Funktionen oder Menüs. Lehre und Forschung sind future-proof. Was Studierende gelernt haben, können sie selbst weiterentwickeln und in weiteren Projekten einsetzen, ohne sich mit Lizensfragen herumzuschlagen. Modelle und Simulationen, z.b. für die Politikberatung können von jedermann nachvollzogen werden und sind so transparent.
  • professionelle Produkte: Julia Computing stellt Umgebungen bereit, unter anderem für die Finanzwirtschaft und für Paralleles Rechnen.

Julia hat seinen Ursprung im wissenschaftlichen Rechnen, zum Beispiel für Optimierungsaufgaben (JuMP, Convex). Das Potential der Sprache wird aber auch in anderen Bereichen genutzt, wie z.B. Statistik (Distributions, StatsBase), Machine-Learning (Flux, Knet), Data-Science (MLBase), Geo-Statistik(GeoStats) und Web-Entwicklung (Genie). Siehe auch Case Studies bei Julia Computing.