Abo
  • IT-Karriere:

Multiple Dispatch

In Julia dürfen mehrere Funktionen mit dem gleichen Namen, aber unterschiedlichen Argumenten existieren. Bei einem Aufruf der Funktion wählt dann Julia automatisch die passende aus. Im folgenden Beispiel gibt es gleich zwei Mal eine Funktion foo():

  1. function foo(a::Numbers) ...
  2. function foo(a::Float16) ...

Stellenmarkt
  1. NP Neumann & Partners GmbH, Ruhrgebiet
  2. ABB AG, Mannheim

Beide führen eine Berechnung mit einer Zahl a durch. Ruft man später foo() mit einer Zahl vom Typ Float16 auf, würde Julia selbstständig zur zweiten Funktion greifen, in allen anderen Fällen die erste wählen. Auf diesem Weg realisiert die Programmiersprache Polymorphie.

Die einzelnen Varianten von foo() bezeichnet Julia als Methoden. Der Begriff ist somit etwas anders ausgelegt als in objektorientierten Sprachen, wo Methoden in der Regel Teil einer Klasse sind. Die Auswahl der passenden Methode bezeichnet man allgemein als Dispatch.

Julia orientiert sich dabei immer an allen übergebenen Argumenten und deren Typen sowie dem Type Graph. Bei objektorientierten Sprachen fällt die Wahl hingegen meist anhand der Klasse, zu der das Objekt gehört. Julias Ansatz bezeichnet man daher auch als Multiple Dispatch. Dieser ist vor allem bei mathematischen Aufgaben hilfreich. Das bekannteste Beispiel ist die Funktion +, die auf allen möglichen Datentypen eine Addition umsetzen muss. In Julia dürfen Entwickler + einfach um passende Varianten für ihre eigenen Datentypen ergänzen. Es lassen sich sogar Regeln vorgeben, nach denen Julia gemischte Typen (wie die Addition einer Ganzzahl mit einer Gleitkommazahl) in einen eigenen Typ überführen soll (Promotion).

Klassenersatz

Anders als objektorientierte Sprachen kennt Julia keine Klassen. Ähnlich wie C lassen sich jedoch mit dem Schlüsselwort struct mehrere Variablen zu einem neuen Datentyp zusammenfassen:

  1. struct Person
  2. name
  3. alter::UInt8
  4. end

Julia nennt diese zusammengesetzten Datentypen Composite Types. Von der im Beispiel entstandenen Person lässt sich mit einem Funktionsaufruf ein Objekt erzeugen:

  1. hans = Person(Hans Meier, 35)

hans ist damit vom Typ Person. Die aufgerufene Funktion bezeichnet Julia als Constructor. Ähnlich wie das gleichnamige Pendant in objektorientierten Sprachen kann man auch hier den von Julia automatisch bereitgestellten Contructor überladen, indem man einfach weitere passende Methoden definiert.

Standardmäßig lassen sich die Elemente von hans über den Punktoperator zwar auslesen (a=hans.alter), aber nicht verändern. Das gelingt erst, wenn man der struct noch explizit das Schlüsselwort mutable voranstellt. Die entsprechenden Objekte verwaltet Julia grundsätzlich auf dem Heap.

Generisch

Composite Types lassen sich parametrisieren. Andere Sprachen kennen das Konzept als Generics. Die wiederum sind beispielsweise nützlich, wenn der eigentlich zu nutzende Datentyp noch unbekannt ist:

  1. struct Point{T}
  2. x::T
  3. y::T
  4. end
  5. a = Point{UInt8}(2,3)

Erst bei der Erstellung eines Objekts entscheidet sich, welche Daten "Point" speichert. Im Beispiel ist der Typ von a anschließend Point{UInt8}. Analog lassen sich auch Funktionen parametrisieren.

 Funktionen und gute ArgumenteParallelverarbeitung 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6.  


Anzeige
Hardware-Angebote
  1. täglich neue Deals bei Alternate.de
  2. 529,00€ (zzgl. Versand)

Bruto 27. Jun 2019 / Themenstart

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

Maxabcabcabcqwe 26. Jun 2019 / Themenstart

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

Das... 26. Jun 2019 / Themenstart

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

burzum 26. Jun 2019 / Themenstart

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

Kommentieren


Folgen Sie uns
       


Red Magic 3 - Test

Das Red Magic 3 richtet sich an Gamer - dank der Topausstattung und eines Preises von nur 480 Euro ist das Smartphone aber generell lohnenswert.

Red Magic 3 - Test Video aufrufen
Faire IT: Die grüne Challenge
Faire IT
Die grüne Challenge

Kann man IT-Produkte nachhaltig gestalten? Drei Startups zeigen, dass es nicht so einfach ist, die grüne Maus oder das faire Smartphone auf den Markt zu bringen.
Von Christiane Schulzki-Haddouti

  1. Smartphones Samsung und Xiaomi profitieren in Europa von Huawei-Boykott
  2. Smartphones Xiaomi ist kurz davor, Apple zu überholen
  3. Niederlande Notrufnummer fällt für mehrere Stunden aus

OKR statt Mitarbeitergespräch: Wir müssen reden
OKR statt Mitarbeitergespräch
Wir müssen reden

Das jährliche Mitarbeitergespräch ist eines der wichtigsten Instrumente für Führungskräfte, doch es ist gerade in der IT-Branche nicht mehr unbedingt zeitgemäß. Aus dem Silicon Valley kommt eine andere Methode: OKR. Sie erfüllt die veränderten Anforderungen an Agilität und Veränderungsbereitschaft.
Von Markus Kammermeier

  1. IT-Arbeitsmarkt Jobgarantie gibt es nie
  2. IT-Fachkräftemangel Freie sind gefragt
  3. Sysadmin "Man kommt erst ins Spiel, wenn es brennt"

Hyundai Kona Elektro: Der Ausdauerläufer
Hyundai Kona Elektro
Der Ausdauerläufer

Der Hyundai Kona Elektro begeistert mit Energieeffizienz, Genauigkeit bei der Reichweitenberechnung und umfangreicher technischer Ausstattung. Nur in Sachen Emotionalität und Temperament könnte er etwas nachlegen.
Ein Praxistest von Dirk Kunde

  1. Be emobil Berliner Ladesäulen auf Verbrauchsabrechnung umgestellt
  2. ACM City Miniauto soll als Kleintransporter und Mietwagen Furore machen
  3. Startup Rivian plant elektrochromes Glasdach für seine Elektro-SUVs

    •  /