• 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. über duerenhoff GmbH, Heidelberg
  2. über duerenhoff GmbH, Raum Hamburg

  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

Golem Akademie
  1. Advanced Python - Fortgeschrittene Programmierthemen
    17./18. Juni 2021, online
  2. Masterclass: Data Science mit Pandas & Python
    9./10. September 2021, online
Weitere IT-Trainings

Ä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. Angebote zu Spielen, Gaming-Monitoren, PC- und Konsolen-Zubehör, Gaming-Laptops uvm.)
  2. 14,99€
  3. 4,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...

[gelöscht] 26. Jun 2019


Folgen Sie uns
       


Warum Intels erste CPU nicht Intel gehörte - (Golem Geschichte)

Intel leistete in den 70ern Pionierarbeit und wäre dennoch fast gescheitert. Denn ihren bahnbrechenden 4-Bit-Mikroprozessor wurden sie erst gar nicht los.

Warum Intels erste CPU nicht Intel gehörte - (Golem Geschichte) Video aufrufen
Programm für IT-Jobeinstieg: Hoffen auf den Klebeeffekt
Programm für IT-Jobeinstieg
Hoffen auf den Klebeeffekt

Aktuell ist der Jobeinstieg für junge Ingenieure und Informatiker schwer. Um ihnen zu helfen, hat das Land Baden-Württemberg eine interessante Idee: Es macht sich selbst zur Zeitarbeitsfirma.
Ein Bericht von Peter Ilg

  1. Arbeitszeit Das Sechs-Stunden-Experiment bei Sipgate
  2. Neuorientierung im IT-Job Endlich mal machen!
  3. IT-Unternehmen Die richtige Software für ein Projekt finden

Weclapp-CTO Ertan Özdil: Wir dürfen nicht in Schönheit und Perfektion untergehen!
Weclapp-CTO Ertan Özdil
"Wir dürfen nicht in Schönheit und Perfektion untergehen!"

Der CTO von Weclapp träumt von smarter Software, die menschliches Eingreifen in der nächsten ERP-Generation reduziert. Deutschen Perfektionismus hält Ertan Özdil aber für gefährlich.
Ein Interview von Maja Hoock


    Fiat 500 als E-Auto im Test: Kleinstwagen mit großem Potenzial
    Fiat 500 als E-Auto im Test
    Kleinstwagen mit großem Potenzial

    Fiat hat einen neuen 500er entwickelt. Der Kleine fährt elektrisch - und zwar richtig gut.
    Ein Test von Peter Ilg

    1. Vierradlenkung Elektrischer GMC Hummer SUV fährt im Krabbengang seitwärts
    2. MG Cyberster MG B Roadster mit Lasergürtel und Union Jack
    3. Elektroauto E-Auto-Prämie übersteigt in 2021 schon Vorjahressumme

      •  /