Es scheint, als ob in den meisten Sprachen eine Reihe von wissenschaftlichen Computerbibliotheken verfügbar sind.
- Python hat
Scipy
Rust
hatSciRust
C++
hat mehrere einschließlichViennaCL
undArmadillo
Java
hatJava Numerics
undColt
sowie mehrere andere
Ganz zu schweigen von Sprachen wie R
und Julia
explizit für das wissenschaftliche Rechnen konzipiert.
Wie wählen Sie bei so vielen Optionen die beste Sprache für eine Aufgabe aus? Welche Sprachen sind außerdem am leistungsfähigsten? Python
und R
scheinen die größte Traktion im Raum zu haben, aber logischerweise scheint eine kompilierte Sprache eine bessere Wahl zu sein. Und wird jemals etwas besser abschneiden Fortran
? Zusätzlich haben kompilierte Sprachen tendenziell eine GPU-Beschleunigung, während interpretierte Sprachen dies mögen R
und Python
nicht. Was muss ich bei der Auswahl einer Sprache berücksichtigen und welche Sprachen bieten das beste Gleichgewicht zwischen Nutzen und Leistung? Gibt es auch Sprachen mit bedeutenden wissenschaftlichen Computerressourcen, die ich vermisst habe?
quelle
Antworten:
Dies ist eine ziemlich umfangreiche Frage, daher ist dies keine vollständige Antwort, aber hoffentlich kann dies dazu beitragen, die allgemeine Praxis über die Ermittlung des besten Tools für den Job in Bezug auf Datenwissenschaft zu informieren. Im Allgemeinen habe ich eine relativ kurze Liste von Qualifikationen, nach denen ich suche, wenn es um ein Werkzeug in diesem Bereich geht. In keiner bestimmten Reihenfolge sind sie:
Julia
wirklich glänzen.python
weit vor den meisten anderen Sprachen.haskell
ist ein berüchtigter Schmerz undJulia
ist mit vielen Schmerzen in der Codearchitektur behaftet, weil man eine so junge Sprache ist.Es gibt eine Menge Artikel über Leistung und Skalierbarkeit, aber im Allgemeinen werden Sie einen Leistungsunterschied von vielleicht 5-10x zwischen den Sprachen betrachten, der je nach Ihrer spezifischen Anwendung von Bedeutung sein kann oder nicht. Was die GPU-Beschleunigung angeht,
cudamat
ist dies eine wirklich nahtlose Methode, um sie zum Laufen zu bringenpython
, und diecuda
Bibliothek hat die GPU-Beschleunigung im Allgemeinen weitaus zugänglicher gemacht als früher.Die beiden wichtigsten Metriken, die ich sowohl für die Community als auch für die Flexibilität verwende, sind der Paketmanager der Sprache und die Sprachfragen auf einer Site wie SO. Wenn es eine große Anzahl hochwertiger Fragen und Antworten gibt, ist dies ein gutes Zeichen dafür, dass die Community aktiv ist. Die Anzahl der Pakete und die allgemeine Aktivität für diese Pakete können ebenfalls ein guter Proxy für diese Metrik sein.
In Bezug auf die Benutzerfreundlichkeit bin ich fest davon überzeugt, dass der einzige Weg, dies tatsächlich zu wissen, darin besteht, es selbst einzurichten. Es gibt viel Aberglauben um viele Data Science-Tools, insbesondere um Datenbanken und verteilte Computerarchitektur, aber es gibt keine Möglichkeit, wirklich zu wissen, ob etwas einfach oder schwer einzurichten und bereitzustellen ist, ohne es einfach selbst zu erstellen.
quelle
Scala
undGo
erwähnenswert.Die beste Sprache hängt davon ab, was Sie tun möchten. Erste Bemerkung: Beschränken Sie sich nicht auf eine Sprache. Eine neue Sprache zu lernen ist immer eine gute Sache, aber irgendwann müssen Sie sich entscheiden. Die von der Sprache selbst angebotenen Einrichtungen sind naheliegend, aber meiner Meinung nach sind die folgenden wichtiger:
Mir ist bewusst, dass die meisten meiner Punkte etablierte Sprachen bevorzugen. Dies ist aus der Perspektive, Dinge zu erledigen.
Ich persönlich glaube jedoch, dass es weitaus besser ist, eine niedrige und eine höhere Sprache zu beherrschen:
quelle
Zuerst müssen Sie entscheiden, was Sie tun möchten, und dann nach dem richtigen Werkzeug für diese Aufgabe suchen.
Ein sehr allgemeiner Ansatz besteht darin, R für erste Versionen zu verwenden und zu überprüfen, ob Ihr Ansatz korrekt ist. Es fehlt ein wenig an Geschwindigkeit, hat aber sehr mächtige Befehle und Addon-Bibliotheken, mit denen Sie fast alles ausprobieren können: http://www.r-project.org/
Die zweite Idee ist, wenn Sie die Algorithmen hinter den Bibliotheken verstehen möchten, sollten Sie sich die numerischen Rezepte ansehen. Sie sind für verschiedene Sprachen verfügbar und können kostenlos zum Lernen verwendet werden. Wenn Sie sie in kommerziellen Produkten verwenden möchten, müssen Sie eine Lizenz erwerben: http://en.wikipedia.org/wiki/Numerical_Recipes
Die meiste Zeit wird die Leistung nicht das Problem sein, sondern das Finden der richtigen Algorithmen und Parameter für sie. Daher ist es wichtig, eine schnelle Skriptsprache anstelle eines Monsterprogramms zu haben, das zuerst 10 Minuten kompilieren muss, bevor zwei Zahlen berechnet und die ausgegeben werden Ergebnis.
Ein großes Plus bei der Verwendung von R ist, dass es über integrierte Funktionen oder Bibliotheken für fast alle Arten von Diagrammen verfügt, die Sie zur Visualisierung Ihrer Daten benötigen.
Wenn Sie dann eine funktionierende Version haben, ist es fast einfach, sie in eine andere Sprache zu portieren, die Sie für leistungsfähiger halten.
quelle