Login
Newsletter
Werbung

Thema: Programmiersprache Julia erreicht Version 1.0

12 Kommentar(e) || Alle anzeigen ||  RSS || Kommentieren
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
0
Von ImplementiertEndlichUnicode am Fr, 10. August 2018 um 13:18 #

es hat Multimethoden.

  • 0
    Von Multivitaminmethode am Fr, 10. August 2018 um 13:41 #

    Kann mir mal jemand erklären was das ist?
    Der Wikipediaartikel erklärt es nicht eindeutig.

    Sowas wie überladen bei OO-Sprachen aber irgendwie doch nicht.

    Wo ist denn der Unterschied?

    • 0
      Von linux-nutzer am Fr, 10. August 2018 um 14:15 #

      Ich schätze mal, "Multimethoden" ist die deutsche Übersetzung für Multiple Dispatch.

      Bei Multiple Dispatch verhält es sich ähnlich wie beim Überladen: Du kannst Funktionen gleichen Namens mehrfach definieren, solange sie sich in Typ und Anzahl der formalen Parameter unterscheiden. Anhand der Typen der aktuellen Parameter wird dann beim Funktionsaufruf die passende Funktion ausgewählt.

      Auf klassische OOP übertragen bedeutet das: Statt "object.method(x, y)" rufst du "method(object, x, y)" auf. Bei Python sieht man das noch, wenn man Methoden in Klassen definiert, da ist der erste formale Parameter immer "self".

      Beispiel: ein Auszug aus der Liste der Definitionen für den Multiplikationsoperator
      julia> methods(*)
      # 182 methods for generic function "*":
      *(x::Bool, z::Complex{Bool}) in Base at complex.jl:236
      *(x::Bool, y::Bool) in Base at bool.jl:91
      *(x::Bool, y::T) where T<:Unsigned in Base at bool.jl:104
      *(x::Bool, z::Complex) in Base at complex.jl:243
      *(x::Bool, y::Irrational) in Base at irrationals.jl:111
      *(x::Bool, y::T) where T<:Number in Base at bool.jl:101
      *(a::Float16, b::Float16) in Base at float.jl:372
      *(x::Float32, y::Float32) in Base at float.jl:378
      *(x::Float64, y::Float64) in Base at float.jl:379
      *(z::Complex{Bool}, x::Bool) in Base at complex.jl:237

      • 0
        Von Multivitaminmethode am Fr, 10. August 2018 um 19:03 #

        Achso das ist damit gemeint. Wusste gar nicht dass es dafür einen Namen gibt.

        • 0
          Von TypDerProgrammiersprachenBaut am Sa, 11. August 2018 um 13:47 #

          Der Unterschied ist, das Parameterüberladung meist so implementiert ist, dass es zur Zeit der Übersetzung umgesetzt wird, während Multimethoden zur Laufzeit z.B. über eine V-Tabelle ausgewählt werden.
          Julia implementiert das scheinbar so, dass bei Fällen wie

          methodenname(objekt1, ... objektn, arg1, ... argn)
          so, dass die Objekte als Tupel betrachtet werden, siehe dazu hier.
          Der Name ist die Übersetzung von "multimethods" was eine Möglichkeit ist "Multiple dynamische Bindung" ("multiple dynamic dispatch") zu implementieren. Man kann z.B. auch ein Visitorpattern benutzen.

0
Von linux-nutzer am Fr, 10. August 2018 um 13:20 #

Der wesentliche Unterschied zwischen 0.7 und 1.0 ist, dass die Deprecations, vor denen 0.7 noch warnt, bei 1.0 einen Fehler erzeugen. Die 0.7 wurde diese Woche erst stable und das eigentlich nur ca. 1-2 Tage lang, weil dann 1.0 veröffentlicht wurde.

0
Von Heintje am Fr, 10. August 2018 um 13:50 #

...noch mehr überflüssige Programmiersprachen. Bloß auf die Industriestandards C, Basic und Assembly verzichten, damit jeder sein eigenes halbgares Süppchen brauen kann.

Julia soll alles in sich vereinen, während Python, Ruby, Perl, C++ und der ganze andere Müll bereits alles in sich vereinen und ein Sprachwirrwarr bilden, dessen niemand Herr werden kann. Nun sollen Berge an Abfall zu einem riesigen Abfallberg vermengt werden. Na, Glückauf, der Steiger kommt. Der wird ihn wohl bezwingen.


Und Einzeiler, die an Perl erinnern? Das kann Basic besser: z.B. survex.com/~olly/rheolism/dsm_rheolism/

  • 1
    Von manticore am Fr, 10. August 2018 um 15:11 #

    Du weisst leider nicht, wovon Du sprichst.
    Bitte programmiere mir eine COX Model Implementierung in C/CPP oder Java. Und dann zeige ich Dir meine Implementierung in Julia, dann reden wir nochmal.

    Ich habe Julia sehr schaetzen gelernt, weil es mir hilft R zu vermeiden.

    • 0
      Von user am Fr, 10. August 2018 um 22:09 #

      Naja,
      ich verwende asm, c, c++ und go.
      Go ist für mich Perl und Python, c++ ersatz.

      Aber es kommt immer darauf an was man machen möchte und für viele machen müssen. (Die Java Sklaven :-= )

      1
      Von Julius am Mo, 13. August 2018 um 09:02 #

      Wo ist das Problem? Irgendein beliebiges Regressionsverfahren wurde schon 1000-Mal in C++ oder Java implementiert. Hast du jetzt mit Julia 23 Zeilen eingespart? Herzlichen Glückwunsch. Im Gesamtkontext (Lesbarkeit, Verfügbarkeit von Entwicklern, Wartbarkeit etc). wäre aber eine Standardsprache eventuell günstiger. Vermutlich machst du das an einer Uni, wo realistische Faktoren keine Rolle spielen.

      • 0
        Von Alex123 am Di, 14. August 2018 um 12:02 #

        Es gibt zahlreiche Forschungsmodelle für die es geben keine Implementierung in C++ oder Java gibt weil sich eben noch kein Standard hat etablieren können. Für Forschung ist es eben viel einfacher eine Sprache zunehmen die ein relatives hohes Abstraktionsniveau für numerische Aufgaben hat. Daher sind ja auch Matlab, Python und R so verbreitet. Julia hat für mich den Vorteil, dass man eine sehr elegante und mächtige Sprache hat, die jedoch in Machinencode compiliert wird und daher auch ziemlich performant ist.

    0
    Von 404namenotfound am Mo, 13. August 2018 um 16:41 #

    Ist doch 1.0 und damit gar. Steht doch im Artikel!
    Bitte erst lesen, dann themenbezogen! kommentieren. Damit erleichterst Du uns allen unnötigen Aufwand!

Pro-Linux
Unterstützer werden
Neue Nachrichten
Werbung