Abo
  • IT-Karriere:

Parallelverarbeitung

Julia kann mehrere Funktionen parallel ausführen. Diese sogenannten Tasks lassen sich pausieren und später fortsetzen. Daten tauschen die Tasks über sogenannte Channel aus. Dabei handelt es sich um First-In-First-Out-(FIFO-)Queues, in die mehrere Tasks gleichzeitig Daten schreiben und lesen können:

Stellenmarkt
  1. BWI GmbH, Bonn
  2. Systemhaus Scheuschner GmbH, Frankfurt an der Oder

  1. function count(c::Channel)
  2. for zahl=1:10
  3. put!(c, zahl)
  4. end
  5. end;
  6.  
  7. chnl = Channel(count);
  8. a=take!(chnl)
  9. println(a)

count ist der Task, der via put!() den entsprechenden Wert in den Channel c schiebt. Nach jedem put!() hält Julia die Funktion count() an und übergibt die Kontrolle wieder dem aufrufenden Code. Der Channel-Construktor Channel(count) erstellt einen Task, der an den Channel gebunden ist. take!() liest ein Datum aus dem Channel und sorgt dafür, dass der producer() weiterläuft.

Intern realisiert Julia die Tasks als Coroutinen. Ergänzend bietet die Version 1.1 der Programmiersprache auch experimentelle Unterstützung für Multithreading. Stabil ist hingegen schon die Unterstützung für verteiltes Rechnen. Dabei läuft der Julia-Interpreter mehrfach lokal oder auf entfernten Rechnern. Der Programmierer kann dann gezielt auf den entfernten Rechnern einzelne Julia-Funktionen aufrufen.

Metaprogrammierung

Ähnlich wie in Lisp kann sich der Julia-Programmcode selbst verändern. Dazu stellt die Programmiersprache passende Funktionen bereit. Hinzu kommen die an Lisp angelehnten Makros. Diese Helfer nehmen mehrere Argumente entgegen, die sie in einen Ausdruck einbauen:

  1. macro hallo(x)
  2. return :( println(Hallo , $x) )
  3. end
  4. @hallo(Paul)

@hallo ersetzt Julia gegen println(Hallo , Paul). Den von Makro vorgegebenen Code baut Julia zusammen, noch bevor das komplette Programm startet. Auch bei Makros greift wieder das Mulitple-Dispatch-Prinzip, es kann folglich mehrere Methodendefinitionen geben.

Viele weitere Kleinigkeiten

Neben den vorgestellten Konstrukten bietet Julia noch viele weitere interessante Konzepte. So lassen sich etwa Arrays extrem flexibel über sogenannte Comprehensions erstellen. Wer die Mengendefinition aus der Mathematik kennt, dürfte mit der Syntax schnell warm werden. Das folgende Beispiel liefert das Array [4,5]:

  1. x = [a+b for a=1:2, b=3]

Diese Notation kann man auch in einer sogenannten Generator Expression verwenden. sum(n for n=1:10) berechnet etwa die Summe aller Zahlen von 1 bis 10.

Besonders für Matrixrechnungen interessant ist die Funktion broadcast(), die eine ihr übergebene Funktion auf alle Elemente eines Arrays anwendet. Sofern notwendig, passt die Funktion dabei die Dimensionen der beteiligten Arrays an, ohne dabei zusätzlichen Speicher zu belegen.

Des Weiteren bietet Julia ein eingebautes Dokumentationssystem: Platziert man einen String alleine vor eine Funktionsdefinition oder anderen entsprechenden Codestellen, interpretiert sie Julia als Dokumentation (sogenannte Docstrings). Diese Hilfetexte können unter anderem die Kommandozeilenfassung von Julia sowie die Juno-IDE auswerten und durchsuchen.

Abschließend lässt sich Julia-Code über entsprechende Schnittstellen aus C-Programmen aufrufen. Umgekehrt können Programmierer aus dem Julia-Code heraus externe Programme starten sowie C- und Fortran-Code aufrufen. Auf diese Weise lassen sich zahlreiche C-Bibliotheken einbinden und weiternutzen.

Julia kombiniert die Vorteile einer Skriptsprache mit effizient und flott laufenden Binärdateien. Insbesondere bei mathematischen Berechnungen, der Verarbeitung von Daten und in der Wissenschaft bietet sie eine interessante Alternative zu Python, R und Matlab. Wer in Julia einsteigen möchte, sollte die offizielle Dokumentation konsultieren. Sie bespricht äußerst ausführlich alle Aspekte der Sprache und hält zahlreiche Tipps für die tägliche Arbeit und den Aufbau von Julia-Programmen bereit.

 Multiple Dispatch
  1.  
  2. 1
  3. 2
  4. 3
  5. 4


Anzeige
Spiele-Angebote
  1. 44,99€
  2. (-84%) 5,75€
  3. 43,99€

Bruto 27. Jun 2019

Der Gratis-Kurs bei Coursera von Andrew Ng ist perfekt für Einsteiger. Es gibt mehrere...

Maxabcabcabcqwe 26. Jun 2019

Meiner Meinung nach, ist es einfacher sich die Befehle einer Sprache durch das Aufrufen...

Das... 26. Jun 2019

Ah, das ist schön zu hören! Ich dachte Typisierung ist ein vernachlässigtes Anhängsel wie...

burzum 26. Jun 2019

Doch. Du sagst es ja selbst, das Konzept, die Herangehensweise sind das Entscheidende...


Folgen Sie uns
       


Philips Hue Play HDMI Sync Box angesehen

Die Philips Hue Play HDMI Sync Box ist ein HDMI-Splitter, über den Hue Sync verwendet werden kann. Im ersten Kurztest funktioniert das neue Gerät gut.

Philips Hue Play HDMI Sync Box angesehen Video aufrufen
Astrobiologie: Woher kommen das Leben, das Universum und der ganze Rest?
Astrobiologie
Woher kommen das Leben, das Universum und der ganze Rest?

Erst kam der Urknall, dann entstand zufällig Leben - oder es war alles vollkommen anders. Statt Materie und Energie könnten Informationen das Wichtigste im Universum sein, und vielleicht leben wir in einer Simulation.
Von Miroslav Stimac

  1. Astronomie Amateur entdeckt ersten echten interstellaren Kometen
  2. Astronomie Forscher entdeckten uralte Galaxien
  3. 2019 LF6 Großer Asteroid im Innern des Sonnensystems entdeckt

Innovationen auf der IAA: Vom Abbiegeassistenten bis zum Solarglasdach
Innovationen auf der IAA
Vom Abbiegeassistenten bis zum Solarglasdach

IAA 2019 Auf der IAA in Frankfurt sieht man nicht nur neue Autos, sondern auch etliche innovative Anwendungen und Bauteile. Zulieferer und Forscher präsentieren in Frankfurt ihre Ideen. Eine kleine Auswahl.
Ein Bericht von Dirk Kunde

  1. E-Auto Byton zeigt die Produktionsversion des M-Byte

HP Pavilion Gaming 15 im Test: Günstig gut gamen
HP Pavilion Gaming 15 im Test
Günstig gut gamen

Mit dem Pavilion Gaming 15 bietet HP für 1.000 Euro ein Spiele-Notebook an, das für aktuelle Titel genügend 1080p-Leistung hat. Auch Bildschirm und Ports taugen, dafür nervt uns die voreingestellte 30-fps-Akku-Drossel.
Ein Test von Marc Sauter

  1. Gaming-Notebooks Asus ROG mit Core i9 und fixen oder farbstarken Displays

    •  /