Kilka dodatkowych myśli.
Język programowania „per se” jest tylko narzędziem. Wszystkie języki zostały zaprojektowane tak, aby niektóre typy konstrukcji były łatwiejsze do zbudowania niż inne. A znajomość i opanowanie języka programowania jest ważniejsza i bardziej efektywna niż cechy tego języka w porównaniu do innych.
O ile widzę, istnieją dwa wymiary tego pytania. Pierwszym wymiarem jest zdolność do eksploracji, budowania dowodu koncepcji lub modeli w szybkim tempie, w końcu posiadanie wystarczającej ilości narzędzi do badania tego, co się dzieje (takich jak testy statystyczne, grafika, narzędzia pomiarowe itp.). Ten rodzaj aktywności jest zwykle preferowany przez badaczy i badaczy danych (zawsze zastanawiam się, co to znaczy, ale używam tego terminu do jego luźnej definicji). Zwykle polegają na dobrze znanych i zweryfikowanych instrumentach, które można wykorzystać do przedstawienia dowodów lub argumentów.
Drugi wymiar to możliwość rozszerzenia, zmiany, ulepszenia, a nawet tworzenia narzędzi, algorytmów lub modeli. Aby to osiągnąć, potrzebujesz odpowiedniego języka programowania. Z grubsza wszystkie są takie same. Jeśli pracujesz dla firmy, zależy to w dużej mierze od infrastruktury firmy, kultury wewnętrznej i twoich wyborów znacznie się zmniejsza. Ponadto, jeśli chcesz zaimplementować algorytm do użytku produkcyjnego, musisz zaufać implementacji. A wdrożenie w innym języku, którego nie znasz, nie pomoże ci zbytnio.
Dla pierwszego rodzaju działalności preferuję ekosystem R. Masz świetną społeczność, ogromny zestaw narzędzi, dowody, że narzędzia te działają zgodnie z oczekiwaniami. Można również rozważyć Python, Octave (aby wymienić tylko kilka), którzy są wiarygodnymi kandydatami.
Przy drugim zadaniu musisz wcześniej pomyśleć o tym, czego naprawdę chcesz. Jeśli potrzebujesz solidnych narzędzi gotowych do produkcji, C / C ++, Java, C # są świetnymi kandydatami. Uważam Pythona za drugiego obywatela w tej kategorii, razem ze Scalą i przyjaciółmi. Nie chcę rozpętać wojny z płomieniami, to tylko moja opinia. Ale po ponad 17 latach pracy jako programisty wolę ścisłą umowę i moją wiedzę niż swobodę robienia czegokolwiek, o czym myślisz (na przykład w przypadku wielu dynamicznych języków).
Osobiście chcę się nauczyć jak najwięcej. Zdecydowałem, że muszę wybrać trudny sposób, co oznacza, że wszystko muszę realizować od zera. Używam R jako modelu i inspiracji. Ma wielkie skarby w bibliotekach i wiele destylowanych doświadczeń. Jednak R jako język programowania jest dla mnie koszmarem. Postanowiłem więc korzystać z Javy i nie używać żadnej dodatkowej biblioteki. Wynika to tylko z mojego doświadczenia i nic więcej.
Jeśli masz czas, najlepszą rzeczą, jaką możesz zrobić, to spędzić trochę czasu z tymi wszystkimi rzeczami. W ten sposób zdobędziesz najlepszą możliwą odpowiedź, dopasowaną do Ciebie. Dijkstra powiedział kiedyś, że narzędzia wpływają na twój sposób myślenia, dlatego dobrze jest znać swoje narzędzia, zanim pozwolą im modelować twój sposób myślenia. Możesz przeczytać więcej na ten temat w jego słynnym artykule zatytułowanym The Humble Programmer