Лучшие языки программирования для Data Science
Рассмотрим языки программирования для Data Science. Как они появились, их сильные и слабые стороны, а также отметим простые для старта.
R
Язык R появился на свет в 1995 году как прямой наследник более старого языка S. Созданный с использованием C, фортрана и себя самого, R поддерживается организацией R Foundation for Statistical Computing.
Лицензия
Бесплатный.
Плюсы
- Отличный ассортимент качественных специализированных пакетов с открытым исходным кодом. R имеет пакеты практически для любого статистического приложения, которое можно себе представить: нейронные сети, нелинейная регрессия, филогенетика и многое, многое другое.
- При базовой установке языка доступно множество статистических функций и методов. R также отлично справляется с матричной алгеброй.
- Качественная визуализация данных с использованием библиотек, вроде ggplot2.
Минусы
- Производительность. R не самый быстрый язык.
- Специфичность областей применения. R прекрасен для статистики и обработки данных, но как язык общего назначения он едва ли сгодится.
- Свои особенности. R имеет несколько необычных особенностей, на которые могут попасться программисты, знакомые с другими языками. Как пример: индексирование начинается с единицы, есть несколько операторов присваивания, структуры данных отличаются от традиционных.
Python
Гвидо ван Россум показал Пайтон в 1991 году. С тех пор он превратился в чрезвычайно популярный язык общего назначения, который широко применяется в обработке данных. Основные версии языка на данный момент – это 2.7 и 3.6.
Лицензия
Бесплатный.
Плюсы
- Пайтон очень популярен и имеет множество расширений и поддержку сообщества разработчиков.
- Python обладает простым и понятным новичкам синтаксисом – так что отлично подходит на роль первого языка программирования с низким порогом входа.
- Пакеты, вроде pandas, scikit-learn и Tensorflow, делают Python отличным вариантом для современных приложений с машинным обучением.
Минусы
- Питон – язык с динамической типизацией. Так что следует быть внимательным и ожидать время от времени ошибок вроде тех, где метод ожидает получить на входе integer, а получает строку.
- По количеству узкоспециализированных пакетов для статистического анализа Python проигрывает R.
SQL
SQL (Structured Query Language) создан для определения, управления и создания запросов к реляционным базам данных. Он появился в 1974 году и с тех пор претерпел множество изменений, но его основные принципы остались прежними.
Лицензия
Некоторые реализации – бесплатные, другие – проприетарные.
Плюсы
- Очень эффективен при работе с реляционными базами данных.
- Декларативный синтаксис делает SQL легко воспринимаемым языком. Совершенно ясно, что подразумевается под ‘SELECT name FROM users WHERE age > 18’.
- SQL используется во многих приложениях, так что ознакомиться с этим языком будет полезно.
Минусы
- Аналитические возможности SQL довольно ограничены. Все что вам доступно – это суммирование, и подсчет и вывод среднего значения.
- Для программистов, привыкших к императивным языкам, декларативные конструкции SQL могут вызывать неудобства.
- Существует множество реализаций SQL, например, PostgreSQL, SQLite, MariaDB. Все они разняться в достаточной степени, чтобы вызывать боль.
Java
Java – крайне популярный язык общего назначения. Для работы использует JVM (Java Virtual Machine) – собственную абстрактную вычислительную систему, которая обеспечивает полную переносимость между различными платформами. Поддерживается Oracle Corporation.
Лицензия
Java 8 – бесплатная, старые версии – проприетарные.
Плюсы
- Java вездесущ. Многие современные системы и приложения созданы на Java.
- Строго типизированный язык. По отношению к определению типов Java крайне серьезен. Для приложений, работающих с большими объемами данных это бесценно.
- Java – высокопроизводительный компилируемый язык общего назначения. Один и тот же язык может быть использован и для написания бизнес-логики, и для аналитики больших объемов данных, на что не способны другие языки программирования для Data Science.
Минусы
- Для узконаправленного анализа и специфичных статистических приложений синтаксис Java слишком многословен. Динамически типизированные R и Python здесь принесут куда больше пользы.
- Для Java создано не так много библиотек для работы со статистикой.
Scala
Скала разработан Мартином Одерски и выпущена в свет в 2004 год. Это еще один язык, который использует для работы JVM. Scala – мультипарадигмальный язык, который способен реализовать и ООП и функциональный подход.
Лицензия
Бесплатный.
Плюсы
- Scala + Spark = высокопроизводительные кластерные вычисления. Идеальный язык для тех, кто работает с наборами данных большого объема.
- Мультипарадигматика. Разработчик волен использовать как ООП, так и функциональный подход.
- Scala компилируется в байт-код Java и работает на JVM. Это позволяет Scala взаимодействовать с Java и в принципе делает его мощным языком общего назначения.
Минусы
- Scala – не самый простой для изучения язык, так что как первый он едва ли сгодится.
- Синтаксис в целом и система типизации в языке сложные.
Julia
Появился на свет в 2012 году. Язык был быстро принят в финансовой сфере.
Лицензия
Бесплатный.
Плюсы
- Julia компилируется just-in-time, что обеспечивает хорошую производительность. Он также прост в изучении и динамически типизирован.
- Julia, как и другие языки программирования для Data Science, предназначен для вычислений и анализа, но может быть использован и как язык общего назначения.
- Читабельность. Многие пользователи этого языка ссылаются на этот плюс как на ключевое преимущество.
Минусы
- Незрелость. Так как язык появился недавно, некоторые пакеты могут работать нестабильно.
- Ограниченность набора пакетов – еще одно следствие молодости языка. В будущем Julia это наверняка наверстает, но пока R и Python дает этому языку фору.
MATLAB
MATLAB – признанный язык для вычислений, используется в академических кругах и промышленности. Разработан и лицензирован MathWorks, компанией, созданной в 1984 году, которая занимается разработкой программного обеспечения.
Лицензия
Проприетарный – цена зависит от области применения.
Плюсы
- Создан для вычислений. Идеально подходит для приложений, требующих сложных математических функций.
- Имеет ряд встроенных функций для визуализации данных.
- Используется во многих университетских курсах по физике, инженерии и прикладной математике. Как следствие широко применяется в этих областях.
Минусы
- Проприетарная лицензия. Конечная стоимость, конечно, зависит от области применения (существуют домашняя, студенческая, академическая или стандартная лицензии), но раскошелиться придется в любом случае (от $55 до пары тысяч).
Прочие языки программирования для Data Science
Существуют и другие языки общего назначения, которые так или иначе подходят для работы с данными. Приводим их краткий обзор.
C++
Мощный язык программирования общего назначения, обладающий молниеносной производительностью. Вопрос невысокой популярности C++ в Data Science объясняется выбором продуктивности вычислений против производительности языка.
Как сказал один пользователь Quora:
«Если вы пишете код, который будет делать какой-то специальный анализ, и запустится всего раз, что вы выберете: потратить полчаса на программу, которая будет работать через 10 секунд или 10 минут на написание программы, которая запустится через минуту?»
JavaScript
Хотя с появлением Node.js JavaScript стал серьезным серверным языком, его использование в Data Science ограничено (хотя есть, конечно, brain.js и synaptic.js). А виной тому некоторые его недостатки:
- Хотя Node.js на данный момент 8 лет, существует всего несколько библиотек и модулей для работы с большими данными.
- Node.js довольно производительная платформа, но у самого JavaScript много критиков, и не без основания.
Node.js обладает асинхронным вводом/выводом – и это сильная сторона. Так что, в будущем это может сыграть в пользу JavaScript, как серьезного языка для обработки больших объемов данных. Другой вопрос в том, будет ли кто-то на его основе создавать то, что уже имеют другие языки программирования для Data Science.
Perl
Perl имеет славу швейцарского ножа среди языков программирования, благодаря его универсальности, как скриптового языка. Он имеет много общего с Python и является динамически типизированным языком.
Однако, в сравнении с тем же Python, он имеет крайне мало расширений для работы с данными и большого энтузиазма в этой области работы с Perl не наблюдается. Возможно, виной тому не слишком дружелюбный синтаксис.
Ruby
Ruby – еще один популярный динамически типизированный язык общего назначения. Тем не менее, он также не был принят разработчиками работающими с большими данными в сравнении с Python.
Однако для Ruby существует проект SciRuby, созданный для вычислений и обработки данных. Впрочем, для серьезных исследований одного его оказывается недостаточно, поэтому Ruby остается не так популярен, как другие языки программирования для Data Science.