Wir stehen zur Ukraine, um die Menschen in Sicherheit zu bringen. Mitmachen
DE
Wenn Sie über Links auf unserer Website einkaufen, erhalten wir möglicherweise eine Affiliate-Provision

Julia für Mac

Eine hochrangige, quelloffene und leistungsstarke dynamische Programmiersprache.

Kostenlos
Version 1.12.7
3.5
Basierend auf 2 Nutzerbewertungen

Julia Überblick

Julia ist eine hochentwickelte, leistungsstarke dynamische Sprache für das technische Rechnen.

Julia auf den Punkt gebracht
Julia ist schnell!

Julia wurde von Anfang an auf hohe Leistung ausgelegt. Julia-Programme werden über LLVM zu effizientem nativem Code für mehrere Plattformen kompiliert.

Dynamisch

Julia ist dynamisch typisiert, fühlt sich wie eine Skriptsprache an und bietet gute Unterstützung für die interaktive Nutzung.

Optional typisiert

Julia verfügt über eine umfangreiche Sprache mit beschreibenden Datentypen, und Typdeklarationen können verwendet werden, um Programme zu verdeutlichen und zu festigen.

Allgemein

Julia nutzt Multiple Dispatch als Paradigma, wodurch sich viele objektorientierte und funktionale Programmiermuster leicht ausdrücken lassen. Es bietet asynchrone E/A, Debugging, Logging, Profiling, einen Paketmanager und vieles mehr.

Einfach zu verwenden

Julia verfügt über eine hochrangige Syntax, was es zu einer zugänglichen Sprache für Programmierer mit jedem Hintergrund und jeder Erfahrungsstufe macht. Sehen Sie sich die Julia-Mikrobenchmarks an, um ein Gefühl für die Sprache zu bekommen.

Open Source

Julia wird unter der MIT-Lizenz bereitgestellt und steht jedem kostenlos zur Verfügung. Der gesamte Quellcode ist auf GitHub öffentlich einsehbar.

Was ist neu in Version 1.12.7

Neue Sprachfunktionen
  • Neue experimentelle Option --trim, die kleinere Binärdateien erstellt, indem Code entfernt wird, der nicht nachgewiesen erreichbar ist von Einstiegspunkten. Einstiegspunkte können mit Base.Experimental.entrypoint (#55047) markiert werden. Es wird nicht erwartet, dass alle Codes mit dieser Option funktionieren, und da sie experimentell ist, können Probleme auftreten.
  • Die Neudefinition von Konstanten ist jetzt gut definiert und folgt den Semantiken des Weltalters (#57253). Zusätzliche Neudefinitionen (z. B. von Typen) sind jetzt erlaubt. Siehe das neue Handbuchkapitel über das Weltalter.
  • Ein neues Schlüsselwort-Argument usings::Bool wurde zu names hinzugefügt, das alle Namen zurückgibt, die über using sichtbar sind (#54609).
  • Die @atomic-Makrofamilie unterstützt jetzt die Syntax für Referenzzuweisungen, z. B. @atomic :monotonic v[3] += 4, die v[3] atomar mit monotoner Reihenfolge modifiziert (#54707). Die unterstützte Syntax erlaubt
    • atomarer Abruf (x = @atomic v[3]),
    • atomare Setzung (@atomic v[3] = 4),
    • atomare Modifikation (@atomic v[3] += 2),
    • atomare einmalige Setzung (@atomiconce v[3] = 2),
    • atomarer Tausch (x = @atomicswap v[3] = 2), und
    • atomarer Ersatz (x = @atomicreplace v[3] 2=>5).
  • Neue Option --task-metrics=yes zur Aktivierung der Erfassung von zeitlichen Informationen pro Aufgabe, die auch zur Laufzeit mit Base.Experimental.task_metrics(::Bool) aktiviert/deaktiviert werden kann (#56320). Die verfügbaren Metriken sind:
    • tatsächliche Laufzeit für die Aufgabe (Base.Experimental.task_running_time_ns), und
    • Wandzeit für die Aufgabe (Base.Experimental.task_wall_time_ns).
  • Unterstützung für Unicode 16 (#56925).
  • Threads.@spawn akzeptiert jetzt ein :samepool-Argument, um denselben Threadpool wie der Aufrufer anzugeben. Threads.@spawn :samepool foo(), was eine Abkürzung für Threads.@spawn Threads.threadpool() foo() ist (#57109).
  • Das @ccall-Makro kann jetzt ein gc_safe-Argument annehmen, das, wenn es auf true gesetzt ist, es der Laufzeit ermöglicht, die Garbage Collection gleichzeitig mit dem ccall auszuführen (#49933).
  • Eine einzelne Methode, die mehrere Funktionen abdeckt, ist jetzt in mehr Fällen erlaubt. Siehe Problem #54620. (#58131).
  • Das Zeichen U+1F8B2 (RECHTSWINKELPFEIL MIT UNTEREM HAKEN), neu hinzugefügt durch Unicode 16, ist jetzt ein gültiger Operator mit Pfeilpräzedenz, zugänglich als \hookunderrightarrow im REPL. (JuliaLang/JuliSyntax.jl#525, #57143).
Sprachänderungen
  • Wenn eine Methode durch eine genau äquivalente ersetzt wird, wird die alte Methode nicht gelöscht. Stattdessen hat die neue Methode Vorrang und wird spezifischer als die alte Methode. Wenn die neue Methode später gelöscht wird, wird die alte Methode wieder aktiv. Dies kann in Mocking-Frameworks nützlich sein (wie in SparseArrays, Pluto und Mocking, unter anderem), da sie die alte Methode nicht explizit wiederherstellen müssen. Zu diesem Zeitpunkt müssen Inferenz und Kompilierung in dieser Situation wiederholt werden, aber wir könnten schließlich in der Lage sein, die alten Ergebnisse wiederzuverwenden (#53415).
  • Die Makroerweiterung wird nicht mehr eifrig in Expr(:toplevel)-Ausdrücke zurückgreifen, die von Makros zurückgegeben werden. Stattdessen wird die Makroerweiterung von :toplevel-Ausdrücken bis zur Evaluierungszeit verzögert. Dies ermöglicht es einem späteren Ausdruck innerhalb eines gegebenen :toplevel-Ausdrucks, Makros zu verwenden, die früher im selben :toplevel-Ausdruck definiert wurden (#53515).
  • Triviale unendliche Schleifen (wie while true; end) sind kein undefiniertes Verhalten mehr. Unendliche Schleifen, die Dinge tun (z. B. Nebenwirkungen haben oder schlafen), waren nie undefiniertes Verhalten und sind es immer noch nicht (#52999).
  • Es ist jetzt ein Fehler, eine Bindung sowohl als öffentlich als auch als exportiert zu kennzeichnen (#53664).
  • Fehler während getfield lösen jetzt einen neuen FieldError-Ausnahmetyp aus, anstelle der generischen ErrorException (#54504).
  • Makros in der Positionssignatur einer Funktion erfordern keine Klammern mehr. Z. B. ist die Funktion @main(args) ... end jetzt erlaubt, während die Funktion (@main)(args) ... end in früheren Julia-Versionen erforderlich war.
  • Die Verwendung von using auf einem Paketnamen innerhalb dieses Pakets mit diesem Namen (insbesondere relevant für ein Submodul) verwendet jetzt explizit dieses Paket, ohne das Manifest und die Umgebung zu überprüfen, was identisch zum Verhalten von ..Name ist. Dies scheint besser zu passen, wie Benutzer erwarten, dass dies im Freien funktioniert (#57727).
Compiler-/Laufzeitverbesserungen
  • Generierte LLVM IR verwendet jetzt Zeigertypen anstelle von Zeigern, die als Ganzzahlen übergeben werden. Dies betrifft llvmcall: Inline LLVM IR sollte aktualisiert werden, um i8* oder ptr anstelle von i32 oder i64 zu verwenden und unnötige ptrtoint/inttoptr-Konvertierungen zu entfernen. Zur Kompatibilität wird IR mit Ganzzahlzeigern weiterhin unterstützt, erzeugt jedoch eine Abwertungswarnung (#53687).
Änderungen der Befehlszeilenoptionen
  • Die -m/--module-Flag kann übergeben werden, um die Hauptfunktion innerhalb eines Pakets mit einer Reihe von Argumenten auszuführen. Diese Hauptfunktion sollte mit @main deklariert werden, um anzuzeigen, dass es sich um einen Einstiegspunkt handelt (#52103).
  • Die Aktivierung oder Deaktivierung von farbigem Text in Julia kann jetzt mit den Umgebungsvariablen NO_COLOR oder FORCE_COLOR gesteuert werden. Diese Variablen werden auch vom Build-System von Julia berücksichtigt (#53742, #56346).
  • --project=@temp startet Julia mit einer temporären Umgebung (#51149).
  • Neue --trace-compile-timing-Option zur Berichterstattung, wie lange jede Methode, die von --trace-compile gemeldet wird, zum Kompilieren benötigt hat, in ms (#54662).
  • --trace-compile druckt jetzt neu kompilierte Methoden in Gelb oder mit einem nachgestellten Kommentar, wenn Farbe nicht unterstützt wird (#55763).
  • Neue --trace-dispatch-Option zur Berichterstattung über Methoden, die dynamisch dispatchiert werden (#55848).
Änderungen der Mehrfachverarbeitung
  • Julia verwendet jetzt standardmäßig 1 "interaktiven" Thread, zusätzlich zu dem 1 standardmäßigen "Arbeiter"-Thread. d.h. -t1,1. Das bedeutet, dass in der Standardkonfiguration die Hauptaufgabe und repl (wenn im interaktiven Modus), die beide auf Thread 1 laufen, jetzt innerhalb des interaktiven Threadpools laufen. Die libuv IO-Schleife läuft ebenfalls auf Thread 1, was eine effiziente Nutzung des von Threads.@spawn verwendeten Arbeiter-Threadpools unterstützt. Die Anforderung von speziell 1 Thread (-t1/JULIA_NUM_THREADS=1) oder 0 interaktiven Threads deaktiviert den interaktiven Thread, d.h. -t1,0 oder JULIA_NUM_THREADS=1,0 oder -tauto,0 usw. Die Anforderung von mehr als 1 Thread aktiviert den interaktiven Thread, sodass -t2 das Äquivalent von -t2,1 festlegt. Zur Erinnerung: Puffer sollten nicht basierend auf threadid() verwaltet werden (#57087).
  • Neue Typen werden definiert, um das Muster von Code zu behandeln, der einmal pro Prozess ausgeführt werden muss, genannt OncePerProcess{T}-Typ, der es ermöglicht, eine Funktion zu definieren, die genau einmal beim ersten Aufruf ausgeführt werden soll und dann immer denselben Ergebniswert vom Typ T bei jedem nachfolgenden Aufruf zurückgibt. Es gibt auch OncePerThread{T} und OncePerTask{T}-Typen für ähnliche Verwendung mit Threads oder Aufgaben (#55793).
Änderungen des Build-Systems

Es gibt neue Makefiles, um Julia und LLVM mit dem Binary Optimization and Layout Tool (BOLT) zu erstellen. Siehe contrib/bolt und contrib/pgo-lto-bolt (#54107).

Neue Bibliotheksfunktionen
  • logrange(start, stop; length) erstellt einen Bereich mit konstantem Verhältnis, anstelle von konstantem Schritt (#39071).
  • Die neue Funktion isfull(c::Channel) kann verwendet werden, um zu überprüfen, ob put!(c, some_value) blockiert (#53159).
  • waitany(tasks; throw=false) und waitall(tasks; failfast=false, throw=false), die auf mehrere Aufgaben gleichzeitig warten (#53341).
  • uuid7() erstellt eine RFC 9562-konforme UUID mit Version 7 (#54834).
  • insertdims(array; dims) fügt Singleton-Dimensionen in ein Array ein - die inverse Operation von dropdims (#45793).
  • Ein neuer Fix-Typ generalisiert Fix1/Fix2 zur Behebung eines einzelnen Arguments (#54653).
  • Sys.detectwsl() testet, ob Julia zur Laufzeit innerhalb von WSL ausgeführt wird (#57069).
  • Base.donotdelete ist jetzt öffentlich. Es verhindert die Eliminierung von totem Code seiner Argumente ([#55774]).
Neue Bibliotheksfunktionen
  • escape_string nimmt zusätzliche Schlüsselwortargumente ascii=true (um alle nicht-ASCII-Zeichen zu escapen) und fullhex=true (um vollständige 4/8-stellige Hex-Zahlen für u/U-Escapes zu erfordern, z. B. für C-Kompatibilität) (#55099).
  • tempname kann jetzt einen Suffix-String annehmen, um den Dateinamen zu ermöglichen, einen Suffix einzuschließen und diesen Suffix in der Einzigartigkeit zu überprüfen (#53474).
  • RegexMatch-Objekte können jetzt verwendet werden, um NamedTuples und Dicts zu konstruieren (#50988).
  • Lockable wird jetzt exportiert (#54595).
  • Base.require_one_based_indexing und Base.has_offset_axes sind jetzt öffentlich (#56196).
  • Neue ltruncate-, rtruncate- und ctruncate-Funktionen zum Truncieren von Zeichenfolgen auf Textbreite unter Berücksichtigung der Zeichenbreiten (#55351).
  • isless (und damit cmp, Sortierung usw.) wird jetzt für nulldimensionale AbstractArrays unterstützt (#55772).
  • invoke unterstützt jetzt das Übergeben einer Methode anstelle einer Typsignatur (#56692).
  • invoke unterstützt jetzt das Übergeben einer CodeInstance anstelle eines Typs, was bestimmte Compiler-Plugin-Workflows ermöglichen kann (#56660).
  • Timer(f, ...) wird jetzt die Haftung der übergeordneten Aufgabe beim Erstellen von Timer-Aufgaben anpassen, was durch das neue spawn-Schlüsselwort-Argument überschrieben werden kann. Dies vermeidet das Problem, bei dem sticky-Aufgaben (d. h. @async) ihre Eltern sticky machen (#56745).
  • Timer hat jetzt lesbare Timeout- und Intervall-Eigenschaften sowie eine beschreibendere Show-Methode (#57081).
  • sort unterstützt jetzt NTuples (#54494).
  • map!(f, A) speichert jetzt die Ergebnisse in A, wie map!(f, A, A) oder A .= f.(A) (#40632).
  • setprecision mit einem Funktionsargument (typischerweise ein do-Block) ist jetzt threadsicher. Andere Formen sollten vermieden werden, und Typen sollten auf eine Implementierung mit ScopedValue umschalten (#51362).
Änderungen der Standardbibliothek
  • gcdx(0, 0) gibt jetzt (0, 0, 0) zurück, anstelle von (0, 1, 0) (#40989).
  • fd gibt ein RawFD anstelle eines Int zurück (#55080).
JuliaSyntaxHighlighting
  • Eine neue Standardbibliothek zur Anwendung von Syntaxhervorhebung auf Julia-Code, die JuliaSyntax und StyledStrings verwendet, um eine Highlight-Funktion zu implementieren, die einen AnnotatedString mit angewendeter Syntaxhervorhebung erstellt (#51810).
LinearAlgebra
  • rank kann jetzt eine QRPivoted-Matrix annehmen, um die Rangschätzung über QR-Faktorisierung zu ermöglichen (#54283).
  • Hinzugefügtes Schlüsselwort-Argument alg zu eigen, eigen!, eigvals und eigvals! für selbstadjungierte Matrizen-Typen (d. h. die Typvereinigung RealHermSymComplexHerm), das es ermöglicht, zwischen verschiedenen Eigenzerlegungsalgorithmen zu wechseln (#49355).
  • Eine generische Version der (nicht blockierten) pivotierten Cholesky-Zerlegung hinzugefügt (aufrufbar über cholesky[!](A, RowMaximum())) (#54619).
  • Die Anzahl der standardmäßigen BLAS-Threads respektiert jetzt die Prozessaffinität, anstelle der Gesamtzahl der logischen Threads, die auf dem System verfügbar sind (#55574).
  • Eine neue Funktion zeroslike wird hinzugefügt, die die Null-Elemente für matrixwertige banded matrices generiert. Benutzerdefinierte Array-Typen können diese Funktion spezialisieren, um ein entsprechendes Ergebnis zurückzugeben (#55252).
  • Die Matrixmultiplikation A * B ruft matprod_dest(A, B, T::Type) auf, um das Ziel zu generieren. Diese Funktion ist jetzt öffentlich (#55537).
  • Die Funktion haszero(T::Type) wird verwendet, um zu überprüfen, ob ein Typ T ein einzigartiges Null-Element hat, das als zero(T) definiert ist. Dies ist jetzt öffentlich (#56223).
  • Eine neue Funktion diagview wird hinzugefügt, die eine Ansicht in ein bestimmtes Band einer AbstractMatrix zurückgibt (#56175).
Profil
  • Profile.take_heap_snapshot nimmt ein neues Schlüsselwort-Argument, redact_data::Bool, das standardmäßig true ist. Wenn gesetzt, werden die Inhalte von Julia-Objekten nicht im Heap-Snapshot ausgegeben. Dies gilt derzeit nur für Zeichenfolgen (#55326).
  • Profile.print() färbt jetzt Base/Core/Package-Module ähnlich, wie sie in Stacktraces sind. Auch Pfade, selbst wenn sie abgeschnitten sind, sind jetzt in Terminals, die URI-Links unterstützen, anklickbar, um Sie zu dem angegebenen JULIA_EDITOR für die gegebene Datei und Zeilennummer zu bringen (#55335).
REPL
  • Mit der neuen usings=true-Funktion von names() können REPL-Vervollständigungen jetzt Namen vervollständigen, die über using sichtbar sind (#54610).
  • REPL-Vervollständigungen können jetzt Eingabezeilen wie [import|using] Mod: xxx| z. B. vervollständigen using Base.Experimental: @op zu using Base.Experimental: @opaque (#54719).
  • Der REPL wird jetzt warnen, wenn er erkennt, dass ein Name über ein Modul aufgerufen wird, das ihn nicht definiert (noch ein Submodul hat, das ihn definiert), und für das der Name in diesem Modul nicht öffentlich ist. Zum Beispiel ist map in Base definiert, und das Ausführen von LinearAlgebra.map im REPL wird jetzt beim ersten Mal eine Warnung ausgeben (#54872).
  • Wenn das Ergebnis einer REPL-Eingabe gedruckt wird, wird die Ausgabe jetzt auf 20 KiB gekürzt. Dies hat keinen Einfluss auf manuelle Aufrufe von show, print usw. (#53959).
  • Backslash-Vervollständigungen drucken jetzt das jeweilige Glyph oder Emoji neben jedem übereinstimmenden Backslash-Shortcode (#54800).
Test
  • Ein fehlgeschlagener DefaultTestSet druckt jetzt auf dem Bildschirm den Zufallszahlengenerator (RNG) des fehlgeschlagenen Tests, um zu helfen, einen stochastischen Fehler zu reproduzieren, der nur vom Zustand des RNG abhängt. Es ist auch möglich, ein Testset zu säen, indem man das rng-Schlüsselwort-Argument an @testset übergibt:
  • using Test, Random
  • @testset rng=Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850) begin
  • @test rand() == 0.559472630416976
  • end
InteractiveUtils
  • Neue Makros @trace_compile und @trace_dispatch zum Ausführen eines Ausdrucks mit --trace-compile=stderr --trace-compile-timing und --trace-dispatch=stderr jeweils aktiviert (#55915).
Externe Abhängigkeiten
  • Die Terminal-Informationsdatenbank, terminfo, wird jetzt standardmäßig mitgeliefert, was eine bessere REPL-Benutzererfahrung bietet, wenn terminfo nicht auf dem System verfügbar ist. Julia kann ohne das Einfügen der Datenbank mit der Makefile-Option WITH_TERMINFO=0 erstellt werden (#55411).
Tooling-Verbesserungen
  • Ein Wandzeit-Profilierer ist jetzt verfügbar für Benutzer, die einen Sampling-Profilierer benötigen, der Aufgaben unabhängig von ihrem Zeitplan oder ihrem Ausführungszustand erfasst. Diese Art von Profilierer ermöglicht das Profiling von I/O-intensiven Aufgaben und hilft, Bereiche mit starker Konkurrenz im System zu erkennen (#55889).

Julia für Mac

Kostenlos
Version 1.12.7
Schreiben Sie eine ausführliche Rezension zu Julia

Was Kunden mögen

Leistung
Wert
Sicherheit

Was verbessert werden sollte

Regelmäßige Updates
Benutzererfahrung

Eigenschaften von Julia

Wert
5.0
Benutzerfreundlichkeit
4.0
Funktionen
4.5
Zuverlässigkeit
4.0
Kundensupport
4.0

Schreiben Sie Ihre Gedanken in unserem klassischen Kommentarfeld

MacUpdate Kommentarrichtlinie. Wir empfehlen ausdrücklich, Kommentare zu hinterlassen – Kommentare mit beleidigenden Wörtern, Mobbing oder persönlichen Angriffen jeglicher Art werden moderiert.
3.5

(3 Rezensionen zu Julia)

  • Kommentare

  • Nutzerbewertungen

Iliketrash
Iliketrash
Dec 4, 2021
1.7.0
0.0
Dec 4, 2021
0.0
Version: 1.7.0
This is not a toy. It is not a language being developed by some obscure group. This is a new-ish, mainstream language that is rapidly becoming popular especially among technical professionals and students. It provides all the interactivity of Matlab and Python yet runs as fast as C. The ecosystem is already vast and building fast. It can directly access Python and compiled code from other languages such as C. It runs in a REPL or a notebook such as Jupyter and JupyterLab. Run it in Visual Studio Code as a notebook or as a conventional text file but watch for the interactive features that pop up in that text file! Check it out.
Sid_Sid
Sid_Sid
May 13, 2021
1.6.1
2.0
May 13, 2021
2.0
Version: 1.6.1
I spent a lot of time to understand how I can use. You know, I thought, I wasted my time, now I see it's working, but I am sloweeeerrrrr((((
Iliketrash
Iliketrash
Aug 5, 2020
1.5.0
0.0
Aug 5, 2020
0.0
Version: 1.5.0
Hey editor—the single review of Julia is for a different product. _This_ Julia is a programming language.
CheepnisAroma
CheepnisAroma
Jun 16, 2023
1.9.1
5.0
Jun 16, 2023
5.0
Version: 1.9.1
Sid_Sid
Sid_Sid
May 27, 2021
1.6.1
2.0
May 27, 2021
2.0
Version: 1.6.1