Похоже, что большинство языков имеют некоторое количество доступных библиотек научных вычислений.
- Python имеет
Scipy
Rust
имеетSciRust
C++
имеет несколько в том числеViennaCL
иArmadillo
Java
имеетJava Numerics
иColt
, а также несколько других
Не говоря уже о языках , как R
и Julia
разработан специально для научных вычислений.
С таким количеством опций, как выбрать лучший язык для задачи? Кроме того, какие языки будут наиболее эффективными? Python
и, R
кажется, имеет наибольшую тягу в пространстве, но логически скомпилированный язык кажется, что это был бы лучший выбор. И что-нибудь превзойдет Fortran
? Кроме того, скомпилированные языки имеют тенденцию к ускорению на GPU, а интерпретируемые языки любят R
и Python
не используют. Что я должен учитывать при выборе языка, и какие языки обеспечивают наилучший баланс полезности и производительности? Также есть какие-то языки со значительными научными вычислительными ресурсами, которые я пропустил?
источник
Ответы:
Это довольно серьезный вопрос, поэтому он не предназначен для того, чтобы дать полный ответ, но, надеюсь, это может помочь в определении общей практики определения лучшего инструмента для работы, когда дело доходит до науки о данных. Вообще, у меня есть относительно короткий список квалификаций, которые я ищу, когда дело доходит до любого инструмента в этой области. В произвольном порядке они:
Julia
самом деле сияют.python
тянется очень далеко впереди большинства других языков.haskell
- это печально известная проблема, иJulia
в результате такого молодого языка возникает много проблем с архитектурой кода.Существует множество статей о производительности и масштабируемости, но в целом вы будете смотреть на разницу в производительности, возможно, в 5-10 раз между языками, что может иметь или не иметь значение в зависимости от вашего конкретного приложения. Что касается ускорения на GPU, то
cudamat
это действительно простой способ заставить его работатьpython
, иcuda
библиотека в целом сделала ускорение на GPU гораздо более доступным, чем раньше.Две основные метрики, которые я использую как для сообщества, так и для гибкости, - это просмотр менеджера пакетов языка и языковые вопросы на сайте, таком как SO. Если есть большое количество качественных вопросов и ответов, это хороший признак активности сообщества. Количество пакетов и общая активность этих пакетов также могут быть хорошим показателем для этого показателя.
Что касается простоты использования, я твердо убежден, что единственный способ узнать это на самом деле настроить его самостоятельно. Существует множество суеверий в отношении множества инструментов Data Science, в частности таких, как базы данных и распределенная вычислительная архитектура, но нет никакого способа узнать, легко или сложно что-то настраивать и развертывать, не создавая его самостоятельно.
источник
Scala
иGo
стоит упомянуть.Лучший язык зависит от того, что вы хотите сделать. Первое замечание: не ограничивайте себя одним языком. Изучение нового языка - это всегда хорошо, но в какой-то момент вам придется выбирать. Удобства, предлагаемые самим языком, являются очевидной вещью, которую нужно учитывать, но, на мой взгляд, важнее следующее:
Я знаю, что большинство моих баллов в пользу устоявшихся языков. Это с точки зрения «добейся цели».
Тем не менее, я лично считаю, что гораздо лучше овладеть языком низкого уровня и языком высокого уровня:
источник
Сначала вам нужно решить, что вы хотите сделать, а затем найти правильный инструмент для этой задачи.
Очень общий подход заключается в использовании R для первых версий и для проверки правильности вашего подхода. Ему немного не хватает скорости, но есть очень мощные команды и дополнительные библиотеки, которые вы можете попробовать почти с ним: http://www.r-project.org/
Вторая идея заключается в том, что если вы хотите понять алгоритмы, стоящие за библиотеками, вы можете взглянуть на Числовые рецепты. Они доступны для разных языков и бесплатны для изучения. Если вы хотите использовать их в коммерческих продуктах, вам нужно приобрести лицензию: http://en.wikipedia.org/wiki/Numeric_Recipes
Большую часть времени производительность не будет проблемой, но найти правильные алгоритмы и параметры для них, поэтому важно иметь быстрый язык сценариев вместо программы монстра, которая сначала должна скомпилировать 10 минут, прежде чем вычислить два числа и выпустить результат.
И большим плюсом в использовании R является то, что он имеет встроенные функции или библиотеки практически для любого типа диаграмм, которые вам могут понадобиться для визуализации ваших данных.
Если у вас есть рабочая версия, почти легко перенести ее на любой другой язык, который вы считаете более производительным.
источник