Wydaje się, że w większości języków dostępna jest pewna liczba naukowych bibliotek komputerowych.
- Python ma
Scipy
Rust
maSciRust
C++
ma kilka, w tymViennaCL
iArmadillo
Java
ma,Java Numerics
aColt
także kilka innych
Nie wspominając już o językach podobnych R
i Julia
zaprojektowanych specjalnie do obliczeń naukowych.
Przy tak wielu opcjach, jak wybrać najlepszy język dla zadania? Ponadto które języki będą najbardziej wydajne? Python
i R
wydaje się, że ma największą przyczepność w przestrzeni, ale logicznie skompilowany język wydaje się lepszym wyborem. I czy coś kiedykolwiek osiągnie lepsze wyniki Fortran
? Dodatkowo języki skompilowane mają przyspieszenie GPU, podczas gdy języki interpretowane lubią R
i Python
nie. Co powinienem wziąć pod uwagę przy wyborze języka i które języki zapewniają najlepszą równowagę użyteczności i wydajności? Czy są też języki, w których brakuje znaczących naukowych zasobów komputerowych?
źródło
Odpowiedzi:
To dość masywne pytanie, więc nie jest to pełna odpowiedź, ale miejmy nadzieję, że może to pomóc w poinformowaniu ogólnej praktyki związanej z określeniem najlepszego narzędzia do pracy, jeśli chodzi o analizę danych. Ogólnie mam stosunkowo krótką listę kwalifikacji, których szukam, jeśli chodzi o dowolne narzędzie w tej przestrzeni. W żadnej określonej kolejności nie są:
Julia
naprawdę błyszczą.python
wyprzedza większość innych języków.haskell
jest znanym bólem iJulia
jest wypełniona wieloma problemami związanymi z architekturą kodu w wyniku bycia tak młodym językiem.Istnieje mnóstwo artykułów na temat wydajności i skalowalności, ale ogólnie będziesz patrzył na różnicę wydajności wynoszącą może 5-10x między językami, co może, ale nie musi mieć znaczenia, w zależności od konkretnej aplikacji. Jeśli chodzi o przyspieszenie GPU,
cudamat
jest to naprawdę bezproblemowy sposób na rozpoczęcie pracypython
, acuda
biblioteka ogólnie sprawiła, że przyspieszenie GPU jest znacznie bardziej dostępne niż kiedyś.Dwie podstawowe miary, których używam zarówno dla społeczności, jak i elastyczności, to spojrzenie na menedżera pakietów języka i pytania językowe w witrynie takiej jak SO. Jeśli istnieje wiele pytań i odpowiedzi wysokiej jakości, to dobry znak, że społeczność jest aktywna. Liczba pakietów i ogólna aktywność na tych pakietach mogą być również dobrym proxy dla tej metryki.
Jeśli chodzi o łatwość użytkowania, jestem głęboko przekonany, że jedynym sposobem, aby wiedzieć, jest faktyczne skonfigurowanie go samemu. Istnieje wiele przesądów w związku z wieloma narzędziami Data Science, w szczególności takimi jak bazy danych i architektura rozproszonego przetwarzania danych, ale nie ma sposobu, aby naprawdę wiedzieć, czy coś jest łatwe lub trudne do skonfigurowania i wdrożenia bez budowania go samodzielnie.
źródło
Scala
iGo
warto wspomnieć.Najlepszy język zależy od tego, co chcesz zrobić. Pierwsza uwaga: nie ograniczaj się do jednego języka. Nauka nowego języka jest zawsze dobrą rzeczą, ale w pewnym momencie będziesz musiał wybrać. Udogodnienia oferowane przez sam język są rzeczą oczywistą, którą należy wziąć pod uwagę, ale moim zdaniem ważniejsze są:
Wiem, że większość moich argumentów przemawia za uznanymi językami. Jest to z perspektywy „załatwienia sprawy”.
To powiedziawszy, osobiście uważam, że o wiele lepiej jest biegle posługiwać się językiem niskiego poziomu i językiem wysokiego poziomu:
źródło
Najpierw musisz zdecydować, co chcesz zrobić, a następnie poszukaj odpowiedniego narzędzia do tego zadania.
Bardzo ogólnym podejściem jest użycie R dla pierwszych wersji i sprawdzenie, czy twoje podejście jest poprawne. Brakuje mu trochę prędkości, ale ma bardzo potężne polecenia i biblioteki dodatków, dzięki którym można wypróbować prawie wszystko: http://www.r-project.org/
Drugi pomysł jest taki, że jeśli chcesz zrozumieć algorytmy bibliotek, możesz rzucić okiem na Przepisy numeryczne. Są one dostępne w różnych językach i bezpłatne do nauki. Jeśli chcesz używać ich w produktach komercyjnych, musisz zakupić licencję: http://en.wikipedia.org/wiki/Numerical_Recipes
Przez większość czasu wydajność nie będzie problemem, ale znalezienie odpowiednich algorytmów i parametrów dla nich, dlatego ważne jest, aby mieć szybki język skryptowy zamiast programu potwora, który najpierw musi skompilować 10 minut przed obliczeniem dwóch liczb i wyłożeniem wynik.
Dużym plusem przy korzystaniu z R jest to, że ma wbudowane funkcje lub biblioteki dla prawie każdego rodzaju diagramu, który może być potrzebny do wizualizacji danych.
Jeśli masz wtedy działającą wersję, prawie łatwo jest przenieść ją na inny język, który Twoim zdaniem jest bardziej wydajny.
źródło