Ich bin auf eine Frage aus dem Jahr 2012 gestoßen, die eine sehr gute Diskussion über Julia als Alternative zu R / Python für verschiedene Arten von statistischer Arbeit hatte.
Hier liegt die ursprüngliche Frage von 2012 über Julias Versprechen
Leider war Julia damals sehr neu und die für die statistische Arbeit benötigten Toolkits waren etwas primitiv. Wanzen wurden ausgebügelt. Distributionen waren schwierig zu installieren. Und so weiter.
Jemand hatte einen sehr treffenden Kommentar zu dieser Frage:
Allerdings wird es noch 5 Jahre dauern, bis diese Frage im Nachhinein beantwortet werden kann. Ab sofort fehlen Julia die folgenden kritischen Aspekte eines statistischen Programmiersystems, die mit R für alltägliche Benutzer konkurrieren könnten:
Das war im Jahr 2012. Jetzt, da es 2015 ist und drei Jahre vergangen sind, habe ich mich gefragt, wie die Leute denken, dass Julia das getan hat.
Gibt es eine reichhaltigere Erfahrung mit der Sprache selbst und dem gesamten Julia-Ökosystem? Ich würde gerne wissen.
Speziell:
- Würden Sie neuen Benutzern statistischer Tools raten, Julia über R zu lernen?
- In welchen Statistik-Anwendungsfällen würden Sie jemandem raten, Julia zu verwenden?
- Wenn R bei einer bestimmten Aufgabe langsam ist, ist es sinnvoll, zu Julia oder Python zu wechseln?
Hinweis: Zuerst veröffentlicht am 14. Juni 2015.
Antworten:
Ich bin zu Julia gewechselt, und hier sind meine pragmatischen Gründe:
Trotzdem liebe ich Rstudio immer noch sehr, aber das neue Juno on Atom ist wirklich nett. Wenn es sich nicht mehr in starker Entwicklung befindet und stabil ist, kann ich es aufgrund der einfachen Plugins als besser als Rstudio ansehen (Beispiel: Es hat ein gutes Plugin zur Anpassung an HIDPI-Bildschirme). Ich denke also, Julia ist eine gute Sprache, um jetzt zu lernen. Für mich hat es bisher gut geklappt. YMMV.
quelle
Ich denke, "Lerne X über Y" ist nicht der richtige Weg, um die Frage zu formulieren. In der Tat können Sie beides lernen (zumindest die Grundlagen) und je nach konkreter Aufgabe das richtige Werkzeug auswählen. Und da Julia den größten Teil ihrer Syntax und Konzepte von anderen Sprachen geerbt hat, sollte es wirklich einfach sein, sie zu verstehen (ebenso wie Python, obwohl ich nicht sicher bin, ob dies auch für R gilt).
Welche Sprache ist für welche Aufgabe besser geeignet? Aufgrund meiner Erfahrung mit diesen Tools würde ich sie wie folgt bewerten:
Für reine statistische Untersuchungen , die mit REPL und einigen Skripten durchgeführt werden können, scheint R die perfekte Wahl zu sein. Es wurde speziell für Statistikzwecke entwickelt, verfügt über die längste Tool-Historie und wahrscheinlich den größten Satz statistischer Bibliotheken.
Wenn Sie Statistiken (oder zum Beispiel maschinelles Lernen) in das Produktionssystem integrieren möchten , scheint Python eine viel bessere Alternative zu sein: Als universelle Programmiersprache verfügt es über einen fantastischen Webstack, Bindungen zu den meisten APIs und Bibliotheken für alles. vom Scrappen des Webs bis zum Erstellen von 3D-Spielen .
Hochleistungsalgorithmen sind in Julia viel einfacher zu schreiben . Wenn Sie nur vorhandene Bibliotheken wie SciKit Learn oder e1071, die von C / C ++ unterstützt werden , verwenden oder kombinieren müssen , sind Sie mit Python und R in Ordnung. Wenn es jedoch um schnelles Backend selbst geht, wird Julia echt zeitsparend: Es ist viel schneller als Python oder R und erfordert keine zusätzlichen Kenntnisse in C / C ++. Beispielsweise wird Mocha.jl in das reine Julia-Deep-Learning-Framework Caffe neu implementiert , das ursprünglich in C ++ mit einem Wrapper in Python geschrieben wurde.
Vergessen Sie auch nicht, dass einige Bibliotheken nur in einigen Sprachen verfügbar sind. ZB nur Python reifen Ökosystem für Computer Vision hat, einige Formanpassung und trasnformation Algorithmen nur in Julia implementiert und ich habe für die Statistik in der Medizin in R. von einigen einzigartigen Pakete gehört
quelle
Hochdimensionale und rechenintensive Probleme.
Multiprozessing. Julias Single Node Parallel-Funktionen (
@spawnat
) sind viel praktischer als die in Python. In Python können Sie beispielsweise keinen Map-Reduction-Multiprocessing-Pool auf dem REPL verwenden, und für jede Funktion, die Sie parallelisieren möchten, ist viel Boilerplate erforderlich.Cluster-Computing. Julias
ClusterManagers
Paket können Sie einen Compute - Cluster verwenden fast , als würden Sie eine einzelne Maschine mit mehreren Kernen. [Ich habe damit gespielt, dass sich dies mehr wie ein Skript in ClusterUtils anfühlt ]Geteilte Erinnerung. Julias
SharedArray
Objekte sind den entsprechenden Shared-Memory-Objekten in Python überlegen.PyCall
Modul können Sie ohne Wrapper auf das Python-Ökosystem zugreifen - z. B. fürpylab
. Es gibt etwas Ähnliches für R, aber ich habe es nicht ausprobiert. Es gibt auchccall
für C / Fortran-Bibliotheken.GPU. Julias CUDA-Wrapper sind weitaus weiter entwickelt als die in Python (Rs waren bei meiner Überprüfung fast nicht vorhanden). Ich vermute, dass dies auch weiterhin der Fall sein wird, da es in Julia viel einfacher ist, externe Bibliotheken aufzurufen als in Python.
Ökosystem. Das
Pkg
Modul verwendet Github als Backend. Ich glaube, dass dies einen großen Einfluss auf die Langzeitwartbarkeit von Julia-Modulen haben wird, da es viel einfacher ist, Patches anzubieten oder die Verantwortung der Besitzer zu übertragen.Das Schreiben von schnellem Code für große Probleme wird zunehmend vom parallelen Rechnen abhängen. Python ist von Natur aus parallel und unfreundlich (GIL), und native Mehrfachverarbeitung in R ist keine AFAIK. Julia verlangt nicht, dass Sie sich zu C begeben, um performanten Code zu schreiben, während Sie das Gefühl von Python / R / Matlab beibehalten.
Der Hauptnachteil von Julia, der von Python / R ausgeht, ist der Mangel an Dokumentation außerhalb der Kernfunktionalität. Python ist sehr ausgereift, und was Sie in den Dokumenten nicht finden können, ist normalerweise Stackoverflow. Das Dokumentationssystem von R ist im Vergleich ziemlich gut.
Ja, wenn Sie die Anwendungsfälle in Teil (b) einfügen. Wenn Ihr Anwendungsfall eine Menge heterogener Arbeit beinhaltet
quelle