• IT-Karriere:
  • Services:

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. Klinikum Esslingen GmbH, Esslingen
  2. ALDI International Services GmbH & Co. oHG, Mülheim an der Ruhr

  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 Multiple-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.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Multiple Dispatch
  1.  
  2. 1
  3. 2
  4. 3
  5. 4


Anzeige
Spiele-Angebote
  1. (u. a. Star Wars: Squadrons für 29,99€, Star Wars Jedi: Fallen Order für 29,99€, Star Wars...

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
       


Mafia Definitive Edition im Test: Ein Remake, das wir nicht ablehnen können
Mafia Definitive Edition im Test
Ein Remake, das wir nicht ablehnen können

Familie ist für immer - nur welche soll es sein? In Mafia Definitive Edition finden wir die Antwort erneut heraus, anders und doch grandios.
Ein Test von Marc Sauter

  1. Mafia Definitive Edition angespielt Don Salieri wäre stolz
  2. Mafia Definitive Edition Ballerei beim Ausflug aufs Land
  3. Definitive Edition Das erste Mafia wird von Grund auf neu erstellt

Vivo X51 im Test: Vivos gelungener Deutschland-Start hat eine Gimbal-Kamera
Vivo X51 im Test
Vivos gelungener Deutschland-Start hat eine Gimbal-Kamera

Das Vivo X51 hat eine gute Kamera mit starker Bildstabilisierung und eine vorbildlich zurückhaltende Android-Oberfläche. Der Startpreis in Deutschland könnte aber eine Herausforderung für den Hersteller sein.
Ein Test von Tobias Költzsch

  1. Software-Entwicklung Google veröffentlicht Android Studio 4.1
  2. Jetpack Compose Android bekommt neues UI-Framework
  3. Google Android bekommt lokale Sharing-Funktion

Ausprobiert: Meine erste Strafgebühr bei Free Now
Ausprobiert
Meine erste Strafgebühr bei Free Now

Storniert habe ich bei Free Now noch nie. Doch diesmal wurde meine Geduld hart auf die Probe gestellt.
Ein Praxistest von Achim Sawall

  1. Gesetzentwurf Weitergabepflicht für Mobilitätsdaten geplant
  2. Personenbeförderung Taxibranche und Uber kritisieren Reformpläne

    •  /