Я столкнулся с вопросом 2012 года, в котором было очень хорошее обсуждение Джулии как альтернативы R / Python для различных типов статистических работ.
Здесь лежит оригинальный вопрос 2012 года об обещании Юлии
К сожалению, тогда Юлия была очень новичком, а наборы инструментов, необходимые для статистической работы, были довольно примитивными. Ошибки были устранены. Распределения было трудно установить. И так далее.
У кого-то был очень удачный комментарий на этот вопрос:
Тем не менее, пройдет 5 лет, прежде чем на этот вопрос можно будет ответить задним числом. На данный момент у Юлии отсутствуют следующие критические аспекты системы статистического программирования, которые могли бы конкурировать с R для повседневных пользователей:
Это было в 2012 году. Теперь, когда прошел 2015 год и прошло три года, мне было интересно, как люди думают, что Юлия сделала?
Есть ли более богатый опыт работы с самим языком и всей экосистемой Юлии? Я хотел бы знать.
В частности:
- Посоветуете ли вы новым пользователям статистических инструментов учить Джулию через R?
- В каких случаях использования статистики вы бы посоветовали кому-то использовать Джулию?
- Если R в какой-то задаче работает медленно, имеет ли смысл переключиться на Julia или Python?
Примечание: впервые опубликовано 14 июня 2015 г.
Ответы:
Я перешел на Юлию, и вот мои прагматичные причины:
Тем не менее, я все еще очень люблю Rstudio, но новая Juno на Atom действительно хороша. Когда он больше не находится в тяжелой разработке и стабилен, я вижу его лучше, чем Rstudio, из-за простоты плагинов (пример: у него есть хороший плагин для адаптации к экранам hidpi). Поэтому я думаю, что Юлия сейчас хороший язык для изучения. До сих пор это хорошо сработало. YMMV.
источник
Я думаю, что «выучить X над Y» - неправильный способ сформулировать вопрос. На самом деле, вы можете изучить (по крайней мере, основы) обоих и выбрать правильный инструмент в зависимости от конкретной задачи. А поскольку Джулия унаследовала большую часть своего синтаксиса и концепций от других языков, понять ее будет действительно легко (как и Python, хотя я не уверен, что то же самое можно сказать и о R).
Так какой язык лучше подходит для какой задачи? Исходя из моего опыта работы с этими инструментами, я бы оценил их следующим образом:
Для чисто статистических исследований, которые можно выполнить с помощью REPL и нескольких сценариев, R кажется идеальным выбором. Он специально разработан для статистики, имеет самую длинную историю инструментов и, вероятно, самый большой набор статистических библиотек.
Если вы хотите интегрировать статистику (или, например, машинное обучение) в производственную систему , Python кажется гораздо лучшей альтернативой: как язык программирования общего назначения, он имеет потрясающий веб-стек, привязки к большинству API и библиотек буквально для всего, от утилизации Интернета до создания 3D-игр .
Высокопроизводительные алгоритмы гораздо проще написать на Юлии . Если вам нужно только использовать или комбинировать существующие библиотеки, такие как SciKit Learn или e1071, поддерживаемые C / C ++, вам будет хорошо с Python и R. Но когда речь идет о самом быстром бэкенде, Julia экономит время: гораздо быстрее, чем Python или R и не требует дополнительных знаний C / C ++. В качестве примера, Mocha.jl переопределяет в чистом Julia фреймворк глубокого обучения Caffe , изначально написанный на C ++ с оберткой на Python.
Также не забывайте, что некоторые библиотеки доступны только на некоторых языках. Например, только Python имеет развитую экосистему для компьютерного зрения, некоторые алгоритмы согласования формы и преобразования реализованы только в Юлии, и я слышал о некоторых уникальных пакетах для статистики в медицине в R.
источник
Большие габаритные и вычислительные задачи.
Многопроцессорные. Параллельные возможности Julia для одного узла (
@spawnat
) намного удобнее, чем в python. Например, в python вы не можете использовать пул многопроцессорной обработки карты REPL, и каждая функция, которую вы хотите распараллелить, требует большого количества шаблонов.Кластерные вычисления.
ClusterManagers
Пакет Julia позволяет использовать вычислительный кластер почти так же, как если бы вы работали на одной машине с несколькими ядрами. [Я играл, чтобы это больше походило на скрипты в ClusterUtils ]Общая память.
SharedArray
Объекты Джулии превосходят эквивалентные объекты совместно используемой памяти в python.PyCall
Модуль Джулии дает вам доступ к экосистеме python без упаковщиков - например, я использую это дляpylab
. Есть что-то похожее для R, но я не пробовал. Существует такжеccall
для библиотек C / Fortran.GPU. Оболочки CUDA Джулии гораздо более развиты, чем в Python (Rs почти не существовало, когда я проверял). Я подозреваю, что так будет и дальше, потому что гораздо проще вызывать внешние библиотеки в Julia, чем в python.
Экосистем. В
Pkg
использует модуль GitHub в качестве движка. Я полагаю, что это окажет большое влияние на долговременную ремонтопригодность модулей Julia, так как это сделает гораздо проще предлагать исправления или владельцам передавать ответственность.Написание быстрого кода для больших проблем будет все больше зависеть от параллельных вычислений. Python по своей природе параллелен недружественному (GIL), а нативная многопроцессорная обработка в R не существует AFAIK. Джулия не требует, чтобы вы заходили на C, чтобы написать исполняющий код, сохраняя при этом большую часть ощущений от python / R / Matlab.
Основным недостатком Julia от python / R является отсутствие документации за пределами основной функциональности. Python очень зрелый, и то, что вы не можете найти в документации, обычно находится в стеке. Система документации R довольно хороша в сравнении.
Да, если вы подходите варианты использования в части (б). Если ваш вариант использования включает в себя много разнородных работ
источник