Почему наши аналитики кодят на Python
ГОВОРИ НА ЯЗЫКЕ СВОЕЙ ЗАДАЧИ
Языки программирования разрабатываются для разных целей. Поэтому они отличаются по степени сложности, мощности, скорости обработки компилятором. Например, один из первых языков общего назначения – язык C – обладает синтаксисом, который легко компилируется процессором в машинный код. Поэтому написанные на нем команды работают быстро. Его часто используют системные программисты. Однако, для чтения он не так удобен, особенно если у вас большое полотно кода. Все потому, что в операциях на языке C больше используется символов, а не букв и слов. Буквы набирать быстрее и читать проще. Но у людей и компьютеров – разные предпочтения.
Код программы – победителя международного конкурса запутанного кода на языке С 1998 год.
«Языки программирования развивались вместе с технологиями, – объясняет Андрей Плющенко, приглашенный эксперт статьи, руководитель группы анализа данных Eastwind. – Компьютеры распространялись повсюду, увеличивались мощности ПО, а с ними и требования к программам. Вместе с тем как разработка становилась все сложнее, программисты понимали, что им чего-то не хватает: новых библиотек, формул, автоматизации. Так, появление языков с классами: C++, C# и так далее, – ознаменовало рождение концепции объектно-ориентированного программирования (ООП). В языках новой парадигмы стало доступно больше функций, которые делают за программиста рутинные вещи».
Библиотеки или функции в языке программирования – это «вшитые» готовые решения. Другими словами, это уже написанные кусочки кода для ряда операций, которые можно вызвать при необходимости. Большое количество таких шаблонов делает работу на языке удобнее и проще, но сами команды программа будет выполнять медленнее. Задержка происходит за счет того, что для выполнения действия язык обращается не напрямую к ОС, а через вызов библиотеки. Но если в вашей работе не принципиально: за 5 или 8 секунд отработает та или иная команда – вы можете выбрать язык с более удобным синтаксисом и богатыми возможностями.
Фрагмент кода на Python 3.5.1
Все языки программирования постоянно обновляются. Появляются новые алгоритмы действий, добавляется больше библиотек. Разница в том, что не все языки обновляются одинаково: например, в одном со временем может быть больше примочек для задач web-разработки, в других – для системных решений. При выборе языка важно, как быстро и часто в нем будут появляться обновления, важные в вашей области программирования.
«Любой может написать часть кода и выложить его в Git (распределенная система управления версиями). Оттуда можно скачать или установить напрямую то обновление языка, которое тебе нужно, – рассказывает Андрей Плющенко, Eastwind. – Одно из важных преимуществ Python для нас – для него часто появляются новые библиотеки и процедуры по анализу данных».
Так, чтобы выбрать наиболее подходящий вам язык программирования, ответьте на три вопроса:
- Насколько вам важна скорость выполнения команд? Для аналитика важно быстро обрабатывать данные. Но время обработки датасета, в первую очередь, зависит от технических характеристик, а не от языка программирования. Поэтому для аналитики не обязательно выбирать быстрый язык: он не внесет решающий вклад в выполнение самих операций.
- Насколько вам важно, чтобы у кода был простой и понятный синтаксис (написание)? Если по основному профилю вы – не программист, но в процессе работы с кодом все же приходится сталкиваться, будет оптимально выбрать менее сложный язык.
- Как много в языке есть библиотек для задач вашей отрасли и как часто они обновляются? От этого критерия будет зависеть насколько оперативно вы сможете адаптироваться к новым технологиям и требованиям времени.
КАК И ПОЧЕМУ АНАЛИТИКИ EASTWIND ПЕРЕШЛИ НА PYTHON
Когда аналитический отдел в Eastwind только зарождался, наши первопроходцы пользовались SQL. Вернее, сервисом по аналитике на базе Microsoft SQL: туда можно было загрузить датасет и что-то с ним сделать из списка существующих в программе алгоритмов. Это было не программирование, а сбор из кубиков. Да и кубиков было мало. Поэтому ребята отказались от этого решения из-за узкой функциональности и перешли на язык R.
«Несколько лет назад про R много писали – особенно он был популярен у статистиков, – вспоминает Андрей Плющенко, Eastwind. – Также на нем можно заниматься машинным обучением. Но его синтаксис показался нам не самым удобным и очевидным: похожие вещи делаются совершенно по-разному. В то время я учился в ШАД Яндекса, где нам рекомендовали Python. Решили попробовать».
Оказалось, у языка Python богатые возможности для анализа данных. И, что немаловажно, он обладает понятным и простым синтаксисом. Кроме того, многие конструкции в питоне привычны по другим языкам программирования. Все вместе это сокращает время разработки и позволяет специалистам заниматься своей основной задачей – аналитикой, а не застревать в дебрях программирования.
СПРАВКА
- Автор языка Python – нидерландский программист Гвидо ван Россум. Изначально, это был объектно-ориентированный язык, но со временем он стал поддерживать и парадигму функционального программирования. Впервые автор опубликовал Python в 1991 году.
- Один из самых популярных диструбутивов (набор библиотек) языка Python – Anaconda. Он также включает в себя библиотеки языка R, и часто используется для работы с данными.
- При обновлении языка Python сегодня разработчики придерживаются философии, известной как «Дзен Питона». Ее суть: хороший код – это простой код.
Автор Python Гвидо ван Россум
Благодаря своей простоте Python достаточно быстро набрал популярность. Сегодня его используют для быстрого прототипирования, web-разработки, написания GUI приложений, обработки данных и другого. «Питонистов» – так называют тех, кто кодит на «питоне» – становится все больше. Поэтому больше и обновлений на языке, чаще появляются новые функции и библиотеки. К тому же, Python – самый задокументированный язык в интернете, что облегчает его изучение.
«Мы работаем с big data на большом стеке задач, и у питона для каждого из инструментов есть свои готовые решения, – делится Андрей Плющенко, Eastwind. – Вообще, под любые новые технологии на питоне очень быстро выходят новые библиотеки, которые можно брать, легко подключать и запускать в работу. В этой простоте и заключается удобство питона».
ХОЧЕШЬ ПОПАСТЬ В СЛИЗЕРИН? КАК НАЧАТЬ КОДИТЬ НА ПИТОНЕ
Хотя при выборе названия Python автор решил посвятить его британскому комедийному шоу 1970-х «Летающий цирк Монти Пайтона», сегодня образ змеи крепко закрепился за этим языком. Так как же начать писать на змеином языке? Мы попросили Андрея Плющенко поделиться собственным опытом.
Пять шагов к использованию Python:
- Сам язык не сложный, поэтому уровень вхождения – практически нулевой. Чтобы начать кодить на питоне – достаточно пройти несколько курсов. Например, на Coursera или в ШАД. Там дадут базовые вещи.
- Питон дает несколько возможностей сделать то или иное действие. Пользуясь только «базой», вы рискуете остаться на одном уровне. Бывает, что этого достаточно, но в целом: это не соответствует философии питон, так как многие вещи ты будешь продолжать писать так, как привык это делать в других языках.
- Чтобы понимать питон (а не просто использовать), нужно проникнуться его идеями. Если вы – не программист, перед изучением непосредственно языка, погрузитесь в понятия объектно-ориентированного и функционального программирования и разберитесь в них в равной мере. Если вы – программист, но писали раньше только в одной из парадигм, изучите и другую. Иначе вы не поймете питон до конца. Читайте статьи, форумы, мнение авторов о новых релизах, рекомендации и так далее. Так вы сможете выработать особое мышление для работы на питоне.
- Дальнейшее использование – зависит от ваших задач и бэкграунда. Если хотите просто кодить для себя, то вперед. Если хотите идти писать код в аналитику – нужно, в первую очередь, разбираться в аналитике. Питон дает много возможностей использования. Нужно лишь выбрать интересующую вас область и погрузиться в ее специфику.
- Если база изучена, а задачи понятны, остается нарабатывать практику. Я рекомендую читать документацию и смотреть, как пишут другие. Для этого можно изучать код разных библиотек, которые находятся в открытом доступе. Смотришь и думаешь: почему решение реализовано так, а не иначе? И понимаешь логику и структуру языка.
«Язык программирования – это лишь средство достижения цели, а не сама цель, – подводит итог Андрей. – Для работы на Python не нужно знать все его библиотеки досконально – их очень много, и все они для разных задач. Например, ребята в группе анализа данных Eastwind хорошо умеют работать с big data на Python, но, скорее всего, не смогут разработать на нем web-сервер или GUI. Мы – специалисты не по использованию отдельно взятого языка программирования, а по решению конкретного круга задач в исследовании данных. И в рамках наших задач мы используем Python эффективно».
Группа анализа данных Eastwind