Какой язык программирования выбрать для работы с данными?
Какой *** язык программирования использовать для обработки больших данных?
Перевод статьи «Which freaking big data programming language should I use?» представил канал Nuances of programming.
Автор статьи представляет на суд читателя языки программирования для анализа и обработки больших массивов данных. Без навязывания личного мнения, автор старается расширить пониманием читателя и осознанно подойти к выбору, исходя из индивидуальных условий и потребностей.
Когда дело доходит до масштабируемой обработки данных, в основном, приходится использовать R, Python, Scala и Java
Допустим у вас есть проект с большими данными. Вы разбираетесь в предметной области, знаете, какую инфраструктуру использовать, и, возможно, даже решили использовать определенную среду для обработки, и тут в центре внимания оказывается одна проблема: какой язык программирования выбрать? (Или, возможно, вопрос стоит еще острее: на каком языке заставить работать разработчиков и специалистов по обработке и анализу данных?) Это вопрос, ответ на который можно отложить лишь до поры до времени.
Конечно, ничто не помешает обработать большие данные с помощью, скажем, XSLT преобразований (такая первоапрельская шутка, посмотрите на следующий день на лица этих людей). Однако, как правило, сегодня для обработки больших данных предлагается на выбор три языка– R, Python и Scala – плюс несгибаемая под тяжестью лет универсальная «черепаха» Java. Какой язык выбрать и почему … или когда?
Чтобы помочь принять решение, дадим краткое описание каждого из упомянутых языков.
R часто называют «языком статистиков, созданными статистиками». Если вам нужна эзотерическая статистическая модель для вычислений, скорее всего, вы найдете ее на CRAN – и между прочим, она вовсе не называется «Исчерпывающая и всеобъемлющая сеть архивов кода на R. Для анализа и построения графика вы не сможете использовать ggplot2. И, если вам потребуется больше вычислительной мощности, можно воспользоваться запустить R на Spark (с помощью привязки SparkR).
Однако, если вы не специалист по обработке и анализу данных и никогда не использовали Matlab, SAS или OCTAVE, они могут помочь в первоначальной адаптации к языку R. Хотя он отлично подходит для анализа данных, для общих задач он не настолько хорош . Если построив модель на R, вы бы подумали о ее переводе на Scala или Python для промышленного применения, вы вряд ли станете писать систему управления кластерами с использованием языка R (желаю удачи в отладке, если вы все же за это возьметесь).
Python
Если ваши специалисты по обработке и анализу данных не используют R, они, вероятно, досконально владеют Python. Этот язык популярен в науке на протяжении уже более десятка лет, особенно в таких областях, как обработка естественного языка (NLP – Natural Language Processing). В результате, если у вас есть проект, требующий работы с NLP, вы столкнетесь с удручающе огромным количеством вариантов, включая классический NTLK, выделением тем текстов на естественном языке с помощью GenSim или молниеносной быстротой и точность spaCy. Подобным же образом, Python имеет огромные преимущества в прикладных задачах для нейронных сетей, с помощью Theano и Tensorflow; имеется scikit-learn для машинного обучения, а также NumPy и Pandas для анализа данных.
Также имеется Juypter / iPython – веб-сервер, который позволяет использовать микс из кода, графиков, ну и, всего, что может потребоваться в формате журнала. Сначала, казалось, это вероятный убийца Python, но к сейчас эта концепция стала настолько признанной, что распространилась на большинство языков, поддерживающих REPL-концепцию (цикл чтение-вычисление-печать – Read-Evaluate-Print-Loop), включая Scala и R.
Python, как правило, поддерживается фреймворками обработки больших данных, но в то же время он не входит в высшую лигу в этой сфере. Например, новые функции Spark почти всегда выходят в первую очередь для Scala / Java, тогда как для PySpark может потребовать ожидание нескольких новых младших версий (особенно это касается разработки на Spark Streaming / MLLib).
В отличие от R, Python является традиционным объектно-ориентированным языком программирования, поэтому большинству разработчиков будет комфортно с ним работать, тогда как уже начальное знакомство с R или Scala может отпугнуть. Трудностью может стать и соблюдение правильных отступов в форматировании программного кода. Эта особенность делит программистов на две группы: на тех, для кого «это отлично подходит для обеспечения удобочитаемости» и тех, кто считает, что в 2016 году отпадет необходимость бороться с интерпретатором за запуск программы на исполнение, потому что строка является лишним, неуместным символом (вы, наверное, догадываетесь к чему я клоню).
Scala
Ох, Scala – из четырех рассматриваемых языков программирования, Scala – это язык, который любого восхитит своей системой типов. Начиная с JVM, Scala – это, в общем, успешный брак между функциональной и объектно-ориентированной парадигмами, и в настоящее время он нашел весьма успешное применение в финансовой сфере и среди компаний, работающих с большими объемами данных, зачастую плохо структурированных (например, такими как Twitter и LinkedIn). Этот язык к тому же теснит как Spark, так и Kafka.
Поскольку он работает на JVM, это дает бесплатный доступ к экосистеме Java, хотя у него имеется и множество «родных» библиотек для обработки масштабных данных (в частности, Algebird и Summingbird от Twitter). Он также включает очень удобный REPL для интерактивной разработки и анализа, как в Python и R.
Мне очень нравится Scala, поскольку включает множество полезных функций программирования, таких как сопоставление с образцами (паттернами проектирования) и значительно менее многословен, чем стандартный Java. Однако в Scala часто имеется несколько способов что-то сделать и эта особенность языка используется в его рекламе как преимущество. И это хорошо! Но учитывая, что в Scala имеет полную по Тьюрингу систему типов и всевозможные операторы (‘/:’ для foldLeft и ‘: ’ для foldRight), довольно просто открыв файл с кодом на Scala подумать, что вы видите на особенно отвратительный вариант кода на Perl. Необходим хороший опыт и подробные рекомендаций для успешного написания кода на Scala (имеет смысл посмотреть рекомендации от Databricks).
Еще одним недостатком является медленная работа компилятора Scala, что в каком-то смысле возвращает нас во времена классической «компиляции!» (лента XKCD). Тем не менее, у него есть REPL, поддержка больших данных и веб-тетради в формате Jupyter и Zeppelin, благодаря чему этому языку можно простить его многочисленные причуды.
Наконец, всегда есть Java – нелюбимая, покинутая, принадлежащая компании, которая, единственная, по-видимому, о не только и заботится, которая делает деньги из исков против Google, и совершенно немодная. Только промышленные дроны используют Java! Однако Java может отлично подойти для вашего проекта по большим данным. Рассмотрим Hadoop MapReduce — Java. HDFS? Написан на Java. Даже Storm, Kafka и Spark работают на JVM (в Clojure и Scala), а что означает, что Java является перворазрядным рекордсменом на участие в проектах по большим данным. Также возникаю новые технологии, такие как Google Cloud Dataflow (теперь Apache Beam), которые до недавнего времени поддерживались только на Java.
Java, возможно, сегодня и не является самым предпочитаемым и звездным языком. Но пока большинство перенапрягается при попытках разбраться с обратными вызовами в Node.js-приложениях, применение Java открывает доступ к большой экосистеме профилировщиков, отладчиков, средств мониторинга, библиотек для обеспечения безопасности и, множеству всего прочего, большинство из которых прошли «боевые» испытания в течение последних двух десятков лет. (Прошу прощения, в этом году Java исполняется 21 год, все мы стареем.)
Основными притензиями к Java являются многословность и отсутствие REPL (представленных в R, Python и Scala) для итеративного применения. Я видел десяти строковый Scala-код в Spark в 200-строчном чудовище на Java, в купе с огромным количеством операторов типов, занимающих большую часть экрана. Тем не менее, новая поддержка лямбда в Java 8 привносит многое для исправления этой ситуации. Java никогда не будет такой компактной, как Scala, но Java 8 действительно делает разработку на Java менее болезненной.
А как насчет REPL? Хорошо, тут вы попали в точку. Но Java 9 будет включать JShell, которая сможет удовлетворить всех ваши потребности в REPL.
А теперь — внимание
Какой язык следует использовать для вашего проекта больших данных? Боюсь, я собираюсь просто уйти от прямого ответа, утверждая, что «это зависит от…». Если вы проводите анализ больших данных с загадочными статистическими расчетами, тогда вы будете просто не в своём уме, если откажетесь от использования R. Если вы занимаетесь NLP или интенсивной обработкой данных с помощью нейронных сетей на графических процессорах, то Python – наилучший выбор. А для высокопроизводительных решений с применением всех важных средств обработки отличным выбором станут Java или Scala.
Конечно, не стоит впадать и в другую крайность – или-или. Например, вы можете использовать Spark для моделирования и машинного обучения на хранимых данных с помощью R или Python, а затем создать рабочий (промышленный) вариант, который сможет использоваться вашим приложением на Scala Spark Streaming. Не стоит также пренебрегать и использованием однородного набора языков, обладающих сильными сторонами только с точки зрения обработки больших данных (в противном случае ваша команда может начать быстро страдать от языковой усталости).
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP – адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP – АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Популярное и похожее
Redis – что это и для чего?
Разбираемся с Jenkins. Что это?
Установка IIS сервера на Windows 10
Изучение REST API с помощью PowerShell
Как управлять умным домом через Telegram-бот
Разбираемся с Docker: установка и использование
Топ – 6 сервисов мониторинга Cron
Yeastar TA2400
Еженедельный дайджест
HowTo: Как выбрать язык программирования
Благодаря Интернету любой человек в мире может получить доступ к ресурсам, на благодаря которым можно научиться программировать за небольшие деньги или вообще без них.
Хотя это прекрасно для тех, кто хочет стать разработчиком программного обеспечения, это также создает проблемы, особенно если вы только начинаете. Каждый новый клик приводит к новой рекомендуемой статье, учебному пособию или видео на YouTube для изучения. Но как сделать правильный выбор?
Эта статья должна помочь выбрать язык программирования, с которого можно начать изучать программирование или на котором можно сосредоточиться если вы уже изучаете несколько языков. А выбор то действительно большой.
Какие сегодня используются языки программирования и что популярно?
- Веб-приложения: JavaScript, PHP, Ruby, HTML / CSS, TypeScript
- Мобильные приложения: Swift, Java, JavaScript, Object-C
- Операционные системы: C, C ++
- Распределенные системы: Go
- Корпоративные приложения: Java, C #, C ++, ErLang
- Аналитика и машинное обучение: Python, R, Clojure, Julia
- Математические и научные вычисления: Matlab, FORTRAN, ALGOL, APL, Julia, R, C ++
- Визуализация данных: Python, R, Java, C #
- Большие данные: Java, Python, R, Scala, Clojure
- Хранение данных: SQL, C #, Java, Python
Не уверены, где начать? Вот важный совет – выучите язык общего назначения – general-purpose language.
Почему стоит начинать именно с них? Потому что они широко используется и не ограничивается одной областью, это очень важно.
Python
Простой и понятный синтаксис Python делает его отличным языком общего назначения для освоения. Язык обладает динамической системой типов, автоматическим управлением памятью и поддерживает несколько парадигм программирования, таких как объектно-ориентированная, функциональная и императивная. Многие домены приложений используют его всеобъемлющую стандартную библиотеку.
Веб-приложения и приложения для настольных компьютеров, серверы, машинное обучение и приложения для искусственного интеллекта используют Python. Он постоянно входит в число лучших языков программирования каждый год, а количество вакансий с ним просто огромное.
JavaScript
Согласно ежегодному опросу разработчиков по Stack Overflow, более 70% всех разработчиков используют JavaScript. Он универсален, может применяться практически в любой области программного обеспечения и является одним из основных интерфейсных языков Всемирной паутины. JavaScript также позволяет интерактивные веб-страницы и имеет важное значение для большинства веб-приложений.
JavaScript является мультипарадигмальным языком и поддерживает множество стилей программирования от объектно-ориентированного до функционального. У этого также есть огромное, быстро растущее число библиотек, включая некоторые внутренние серверы. Самые известные – React, Angular и Vue.Он настолько популярен, что у него даже есть фреймворки в тех областях, где это не самый лучший вариант, например, в разработке игр и виртуальной реальности.
Как и другие языки, Ruby поддерживает несколько парадигм программирования, таких как объектно-ориентированная, функциональная и императивная. Это также показывает динамическую систему типов и автоматическое управление памятью. Ruby в основном используется в веб-приложениях с платформой Ruby on Rails, но также используется на внутренних серверах и базах данных.
Одним из главных достоинств Ruby является его дружелюбие к начинающим. Это один из самых прощающих языков в списке – вы все равно сможете скомпилировать и запустить свою программу до появления проблемы. Его также легко освоить, потому что его синтаксис близок к разговорной речи, и он может делать то же, что и другие языки, с гораздо меньшим количеством строк кода.
Знаменитый слоган Java – «пиши один раз, запускай где угодно», поскольку он работает на любой платформе, которая его поддерживает. Java является одним из наиболее широко известных языков среди новых разработчиков и вторым наиболее используемым языком в Stack Overflow.
Java – это мультипарадигмальный язык, основанный на классах, объектно-ориентированный и разработанный с наименьшей зависимостью от реализации. Благодаря своей структуре он имеет широкий спектр применения в разных областях применения. Одним из наиболее известных применений является разработка приложений для Android, но он также популярен для настольных, веб, серверных и сетевых приложений. Хотя синтаксис Java поначалу может показаться сложным, его освоение может стоить того, чтобы получить первую работу в качестве разработчика.
Думаете о конкретной области?
Если у вас уже есть конкретная цель – работать над машинным обучением, стать разработчиком мобильных приложений или присоединиться к стартапу, подумайте над освоением языка, соответствующего этой цели.
Какой язык программирования нужен для машинного обучения
Согласно отчету о GitHub, Python был наиболее часто используемым языком для машинного обучения в 2018 году. Объедините свои знания Python с библиотекой TensorFlow, и вы получите прекрасную возможность получить захватывающую работу, связанную с машинным обучением.
Язык программирования R будет следующим лучшим выбором для машинного обучения. Он наиболее эффективен для анализа и обработки данных в статистических целях. Он также предлагает множество пакетов, которые облегчают реализацию алгоритмов машинного обучения.
Какой язык программирования изучить для мобильной разработки
Если вы заинтересованы в разработке мобильных приложений, вам придется решить, хотите ли вы разрабатывать для устройств Android или Apple.
Java – ваш лучший выбор для разработки на Android. Тем не менее, разработка мобильной Java отличается от обычной Java из-за ограниченной мощности смартфонов. Например, обычная Java-программа работает до тех пор, пока вы ее не выключите, а приложение Android можно закрыть в любое время, если оно не запущено на переднем плане.
Со стороны iOS, вам стоит изучить Swift, официальный язык Apple для iOS, macOS и другой код, написанный для продуктов Apple. Также можно предложить Objective-C, потому что вы можете создавать графические пользовательские интерфейсы и многофункциональные фреймворки, но Swift легче учить, легче читать, и он одобрен самими Apple.
JavaScript – еще один хороший вариант для мобильной разработки. В сочетании с HTML и CSS вы можете создавать приложения, которые можно конвертировать в собственные приложения с помощью Cordova. Другим примером является стек .NET, который также можно использовать для создания приложений и их преобразования с использованием Xamarin. Конечно, эти примеры подчеркивают важность изучения языка общего назначения еще больше.
Какой язык программирования выучить для того чтобы запустить стартап
Если вы знаете, что хотите создать или присоединиться к стартапу, ничто не сравнится с знанием Ruby и Ruby on Rails. Ruby дружелюбен к новичкам и позволяет разработчикам быстро создавать прототипы, что делает его отличным выбором для быстроразвивающихся стартапов.
Каких языков избегать?
Есть много других языков на выбор. Некоторые из самых популярных в настоящее время включают Go, Scala, TypeScript, C ++ и Rust.
Однако, если вы начинаете изучать разработку программного обеспечения, вам следует избегать большинства из них. Многие языки сложны, продвинуты или слишком сфокусированы на одной области приложения.
Не переживайте о том, какой из них вы должны выбрать, потому что есть рабочие места для каждого языка. Важнее всего ваша мотивация, решимость и способность сосредоточиться на изучении и овладении выбранным вами языком.
Было полезно?
Почему?
😪 Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.
😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.
Закодируйся: как выбрать первый язык программирования
Рассказываем о плюсах и минусах JavaScript, PHP, Python, Java, CSS и HTML. Статья подготовлена на основе вебинара с Михаилом Овчинниковым.
Оглавление
1 ч. 20 мин.
10 мин.
1 ч. 10 мин.
Мария Грегуш
В бэкграунде — программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.
У каждого языка веб-разработки свои особенности, достоинства и недостатки, своя сфера применения и свой список связанных технологий (он называется «стек»). Сегодня мы сравним несколько популярных языков и дадим советы, как же из всего многообразия выбрать что-то одно.
Что такое типизация
Прежде чем мы начнём разбираться в плюсах и минусах языков, стоит поговорить о типизации. Потому что от типизации зависит и как вы пишете программу, и как она потом работает.
Типизация — это разделение переменных на разные типы: например int (целое число), flow (число с десятичной частью), string (строка текста), bool (правда/неправда).
Типизация бывает явная или неявная, слабая или сильная и статическая или динамическая.
Явная типизация значит, что вы должны сами указать тип переменной, а если у языка неявная типизация, этим занимается компилятор. Явная типизация более надёжная (у переменной будет именно тот тип, который вам нужен), зато добавляет работы, а неявная позволяет сэкономить время , но переменная может получить не тот тип, который вы хотели.
В языках со статической типизацией типы переменных устанавливаются на этапе компиляции, причём обычно переменные объявляются с указанием типа (явно).
Динамическая типизация означает, что типы определятся уже во время выполнения программы.
Сильная (строгая) типизация не позволяет смешивать в выражениях разные типы и не выполняет автоматически неявные преобразования.
Языки со слабой типизацией более гибкие, но они часто сами неявно преобразуют переменные, даже если в результате может появиться неточность или если преобразование неоднозначно.
Теперь, когда мы разобрались с типизацией, перейдём к самим языкам.
HTML и CSS
Начнем издалека — с HTML (Hypertext Markup Language) и CSS (Cascade StyleSheets). Почему с них и почему «издалека»? С них — потому что они лежат в основе веб-разработки, и ни один сайт без них не обойдётся. А издалека — потому что это не совсем языки программирования.
Они нужны, чтобы создавать содержимое веб-страницы — контент и оформление; программу вы на них не напишете. Тем не менее веб-технологии сейчас уже используются и в других сферах, в том числе в десктопных и даже мобильных приложениях, поэтому у этих «языков» хорошие перспективы.
HTML и CSS очень простые — в основах можно разобраться буквально за пару дней, даже самостоятельно. Так что если вы очень боитесь программирования и не верите, что у вас получится, попробуйте начать с них. Это под силу каждому, поможет вам плавно войти в программирование и оценить свои силы. А потом при желании можно перейти к другим языкам.