Перевод выполнен проектом Ladies Code — это открытое обучение для девушек, которые хотят развиваться в сфере IT. 25 ноября в Москве пройдёт первая международная конференция Ladies Code: Время технологий.
Data Science (наука о данных) — это захватывающее поле для работы, сочетающее передовые статистические и количественные навыки с возможностями программирования в реальном мире. Существует много потенциальных языков программирования, в котором ученый может специализироваться.
Хотя нет правильного ответа, есть несколько вещей, которые следует принять во внимание. Ваш успех как научного сотрудника зависит от многих факторов, в том числе:
Специфичность
Когда речь заходит о передовой науке о данных, вы будете заново изобретать колесо каждый раз. Научитесь изучать различные пакеты и модули, предлагаемые на выбранном вами языке. Степень, в которой это возможно, зависит от того, какие специфические пакеты доступны вам в первую очередь.
Общность
У лучших data scientists есть хорошие навыки всестороннего программирования, а также способность корпеть над расчетами. Большая часть повседневной работы в области науки о данных вращается вокруг поиска и обработки необработанных данных или «очистки данных». Для этого никакие причудливые пакеты машинного обучения не помогут.
Продуктивность
В быстро развивающемся мире коммерческой науки о данных можно многое сказать о быстром выполнении работы. Тем не менее, это то, что позволяет техническому долгу ползти – и только с разумной практикой это можно свести к минимуму.
Производительность
В некоторых случаях жизненно важно оптимизировать производительность вашего кода, особенно при работе с большими объемами критически важных данных. Скомпилированные языки обычно намного быстрее, чем интерпретируемые; аналогично статически типизированные языки значительно более отказоустойчивы, чем динамически типизированные. Очевидный компромисс действует против производительности.
В какой-то мере это можно рассматривать как пару осей (специфичность и общность, продуктивность и производительность). Каждый из нижеприведенных языков обладает своими особенностями и вам следует оценивать его с точки зрения этих факторов.
1. R
Что вам нужно знать
Выпущен в 1995 году как прямой потомок старшего языка программирования S. Написанный в C, Fortran и R проект в настоящее время поддерживается Фондом R для статистических вычислений.
Лицензия: бесплатно!
Плюсы:
- Отличный ассортимент высококачественных, специфичных пакетов с открытым исходным кодом. R имеет пакет для почти любого количественного и статистического приложения, которое можно себе представить. Сюда входят нейронные сети, нелинейная регрессия, филогенетика, продвинутый график и многое другое.
- Базовая установка поставляется с очень полными встроенными статистическими функциями и методами. R также хорошо обрабатывает матричную алгебру.
- Визуализация данных является ключевой силой с использованием таких библиотек, как ggplot2.
Минусы:
- Производительность. R – не быстрый язык.
- Специфика области. R является фантастическим языком для целей статистики и данных. Но он не так хорош для более общих задач.
- Причудливость. R имеет несколько необычных функций, которые могут ввести в заблуждение программистов, знакомых с другими языками. Например: массивы начинаются с 1, использование нескольких операторов присваивания, нетрадиционные структуры данных.
R – мощный язык, который отличается огромным разнообразием приложений для сбора и визуализации данных, а с открытым исходным кодом позволяет очень активно собирать контрибьюторов. Его недавний рост популярности является свидетельством того, насколько он эффективен в том, что он делает.
2. Python
Что вам нужно знать
Гуидо ван Россум представил Python еще в 1991 году. С тех пор он стал чрезвычайно популярным языком общего назначения и широко используется в сообществе ученых. В настоящее время основными версиями являются 3.6 и 2.7.
Лицензия: бесплатно!
Плюсы:
- Python – очень популярный, основной язык программирования общего назначения. Он имеет обширный набор специально разработанных модулей и поддержку сообщества. Многие онлайн-сервисы предоставляют API для Python.
- Python – это простой язык для изучения. Низкий барьер для входа делает его идеальным первым языком для тех, кто занимается программированием.
- Пакеты, такие как pandas, scikit-learn и Tensorflow, делают Python надежным вариантом для современных приложений машинного обучения.
Минусы:
- Тип безопасности: Python – это динамически типизированный язык, что означает, что вы должны проявлять должную осторожность. Ошибки типа (такие как передача String в качестве аргумента методу, который ожидает Integer) следует ожидать время от времени.
- Для конкретных целей статистического анализа и анализа данных обширный набор пакетов R дает ему небольшое преимущество над Python. Для языков общего назначения существуют более быстрые и безопасные альтернативы Python.
Python – очень хороший выбор языка для науки о данных не только для начального уровня. Большая часть процесса передачи данных вращается вокруг процесса ETL (извлечение-преобразование-загрузка).
3. SQL
Что вам нужно знать
SQL (Structured Query Language) определяет, управляет и делает запросы в реляционных базах данных. Язык появился в 1974 году и с тех пор претерпел множество реализаций, но основные принципы остаются неизменными.
Лицензия: Различается. Некоторые реализации являются бесплатными, другие являются патентованными.
Плюсы:
- Очень эффективен при запросе, обновлении и обработке реляционных баз данных.
- Декларативный синтаксис делает SQL очень читаемым языком.
- SQL очень часто используется в различных приложениях, что делает его очень полезным языком для ознакомления. Модули, такие как SQLAlchemy, упрощают интеграцию SQL с другими языками.
Минусы:
- Аналитические возможности SQL довольно ограничены – помимо агрегирования и суммирования, подсчета и усреднения данных ваши варианты ограничены.
- Для программистов с императивным бэкграундом декларативный синтаксис SQL может потребовать дополнительного обучения.
- Существует множество различных реализаций SQL, таких как PostgreSQL, SQLite, MariaDB. Они все достаточно разные, что часто приводит к сложностям.
SQL более полезен в качестве языка обработки данных, чем в качестве передового аналитического инструмента. Тем не менее, много процессов в области данных зависит от ETL, а долговечность и эффективность SQL – это доказательство того, что это очень полезный язык для современного исследователя данных.
4. Java
Что вам нужно знать
Java – чрезвычайно популярный язык общего назначения, который работает на виртуальной машине Java (JVM). Это абстрактная вычислительная система, которая обеспечивает плавную переносимость между платформами. В настоящее время поддерживается корпорацией Oracle.
Лицензия: Версия 8 – бесплатно!
Плюсы:
- Вездесущность. Многие современные системы и приложения построены на базе Java. Способность интегрировать методы наукоемкой данных непосредственно в существующую кодовую базу является мощной.
- Java – это серьезно, когда дело доходит до обеспечения безопасности типов. Для критически важных приложений с большими данными это бесценно.
- Java – это высокопроизводительный, скомпилированный язык общего назначения. Это делает его пригодным для написания эффективного производственного кода ETL и алгоритмов машинного обучения с использованием вычислительных средств.
Минусы:
- Для ad-hoc-анализов и более специализированных статистических приложений многословие Java делает его маловероятным первым выбором. Динамически типизированные языки сценариев, такие как R и Python, дают гораздо большую производительность.
- По сравнению с R, в Java нет большого количества библиотек для продвинутых статистических методов.
Многие компании оценят возможность беспрепятственной интеграции кода производства данных в их существующую кодовую базу, и вы обнаружите, что производительность Java и безопасность типов являются реальными преимуществами. Тем не менее, вы не будете иметь набор специфически статистических пакетов, доступных для других языков. Тем не менее, Java определенно нужно рассмотреть – особенно если вы уже знаете R и/или Python.
5. Scala
Что вам нужно знать
Scala – это язык, который работает на JVM, он разработан Мартином Одерским и выпущен в 2004 году. Это язык с несколькими парадигмами, позволяющий использовать как объектно-ориентированные, так и функциональные подходы. Структура кластерных вычислений Apache Spark написана на Scala.
Лицензия: бесплатно!
Плюсы:
- Scala + Spark = высокопроизводительные кластерные вычисления. Scala – идеальный выбор языка для тех, кто работает с наборами данных большого объема.
- Мультипарадигматика: программисты Scala могут брать лучшее из обоих миров. Доступны для них как объектно-ориентированные, так и функциональные парадигмы программирования.
- Scala компилируется в байт-код Java и работает на JVM. Это позволяет взаимодействовать с самим языком Java, делая Scala очень мощным языком общего назначения, а также он хорошо подходит для науки о данных.
Минусы:
- Scala – это не простой язык, если вы только начинаете. Лучше всего будет скачать sbt и установить IDE, такую как Eclipse или IntelliJ со специальным плагином для Scala.
- Синтаксис и система типов часто описываются как сложные. Это приводит к крутой кривой обучения для тех, кто приходит с динамических языков, таких как Python.
Когда дело доходит до использования кластерных вычислений для работы с большими данными, Scala + Spark – фантастические решения. Если у вас есть опыт работы с Java и другими статически типизированными языками, вы также оцените эти возможности Scala.
6. Julia
Что вам нужно знать
Выпущенный чуть более 5 лет назад, язык Julia произвел впечатление на мир цифровых вычислений. Он стал популярнее благодаря скорейшему принятию несколькими крупными организациями, включая многих в финансовой отрасли.
Лицензия: бесплатно!
Плюсы:
- Julia – это JIT-язык, который позволяет ему обеспечить хорошую производительность. Он также предлагает простоту, динамическую типизацию и возможности сценариев интерпретируемого языка, такого как Python.
- Julia была предназначена для численного анализа. Она также способна к программированию общего назначения.
- Читаемость. Многие пользователи языка ссылаются на это как на ключевое преимущество.
Минусы:
- Зрелость. В качестве нового языка некоторые пользователи Julia испытывают нестабильность при использовании пакетов. Но, как сообщается, сам основной язык достаточно стабилен для использования в производстве.
- Ограниченные пакеты являются еще одним следствием молодости и небольшого сообщества разработчиков. В отличие от давно установленных R и Python, у Julia нет большого выбора пакетов (пока).
Главная проблема с Julia – это та, за что ее нельзя обвинять. Как недавно разработанный язык, он не настолько зрелый или готовый к производству, как его основные альтернативы Python и R. Но, если вы готовы быть терпеливыми, есть все основания уделять ему пристальное внимание, поскольку язык будет развиваться в ближайшие годы.
7. Matlab
Что вам нужно знать
MATLAB – это устоявшийся язык вычислений, используемый во всех академических кругах и промышленности. Он разработан и лицензирован MathWorks, компанией, созданной в 1984 году для коммерциализации программного обеспечения.
Лицензия: проприетарный – цены варьируются в зависимости от вашего варианта использования.
Плюсы:
- Предназначен для численных вычислений. MATLAB хорошо подходит для количественных приложений со сложными математическими требованиями, такими как обработка сигналов, преобразования Фурье, матричная алгебра и обработка изображений.
- Визуализация данных. MATLAB имеет ряд встроенных возможностей построения графиков.
- MATLAB часто преподается как часть многих курсов бакалавриата по количественным предметам, таким как физика, инженерия и прикладная математика. Как следствие, он широко используется в этих областях.
Минусы:
- Собственная лицензия. В зависимости от вашего варианта использования (академического, личного или корпоративного) вам может потребоваться раскошелиться на дорогостоящую лицензию. Существуют бесплатные альтернативы, такие как Octave.
- MATLAB не является очевидным выбором для программирования общего назначения.
Широкое использование MATLAB в ряде количественных и количественных областей всей отрасли и научных кругов делает его серьезным выбором для науки о данных. Его применение необходимо, когда ваше приложение или повседневная роль требуют интенсивной, расширенной математической функциональности; действительно, MATLAB был специально разработан для этого.
Вывод
Ключевым моментом здесь является понимание ваших требований к использованию с точки зрения общности по сравнению со специфичностью, а также ваши личные предпочтения в стиле разработки, производительности и эффективности.
Я регулярно использую R, Python и SQL, так как моя текущая роль в основном сосредоточена на разработке существующих конвейеров данных и ETL-процессов. Эти языки дают правильный баланс общности и производительности для выполнения этой работы, с возможностью использования более совершенных статистических пакетов R, когда это необходимо.
Однако, возможно, у вас уже есть опыт работы с Java. Или вы можете использовать Scala для больших данных. Или, может быть, вы очень заинтересованы в проекте Julia.
Может быть, вы изучили MATLAB в университете или хотите дать SciRuby шанс? Возможно, у вас есть совсем другое предложение?