Рубрики
Без рубрики

Почему Python хороший для науки и разработки приложений

Дизайн любого языка программирования включает компромисс. Низкоуровневые языки сложно … Помечено программированием, Python.

Дизайн любого языка программирования включает компромисс. Низкоуровневые языки трудно извлечь, требуют, чтобы программитор много сделал вручную, но обеспечивает гибкую оптимизацию кода и скорость. На высоком уровне языки позволяют решить те же проблемы в более удобном и простом виде, но иметь меньше методов и инструментов для оптимизации. Один такой язык – питон. В диссертации большого данных X5 Retail Group объяснила, что его преимущества находятся над низкоуровневыми языками и для каких задач он используется в компании.

Большая диссертация данных X5 Retail Group составила более двух лет. Он использует научные науки, которые обрабатывают массивы данных, которые обрабатывают данные клиентов и продуктов для данных, а также разработчиков, которые создают программные продукты для работы с большими данными.

Когда мы впервые начали, мы столкнулись с вопросом о инструментах, в основном языки программирования. Первое желание было взять самые передовые инструменты, например, Java – универсальный, продуктивный, постоянно развиваемый и чрезвычайно популярный язык. Однако значительная часть наших задач просто не требовала такого сложного инструмента. Кроме того, Java довольно сложно учиться, и для наших DS-специалистов, которые больше аналитики и математики, чем программисты, это может стать проблемой. Нам нужен язык, который был одинаково удобным для всего управления, поэтому мы обратили наше внимание на Python.

Сильные стороны

Как Python Good для команды, которая имеет как разработчики, так и научные науки? Я перечислю свойства этого языка, для которого мы выбрали его для наших задач.

Высокая производительность развития

Язык интерпретируется, поэтому он может быть написан быстрее, чем, например, в C. Implicit, но сильная набравка обеспечивает меньшее количество проблем для решения проблем, чем в Java. Краткий и четкий синтаксис позволяет быстро написать читаемый код. Для человека, который знает C или Java, Python, как правило, интуитивно понятен. Сравните, как та же функция, написанная в Java и Python, выглядит как:

факториальный расчет в Java:

class Factorial { static int factorial(int n) { if (n == 0) return 1; return n\*factorial(n-1); } public static void main(String[] args) { System.out.println(factorial(5)); } }

факториальный расчет в Python:

def factorial(n): return 1 if (n==1 or n==0) else n \* factorial(n - 1)print(factorial(5))

Низкий порог ввода учиться

Тот факт, что Python широко используется в области больших данных, частично связан со скоростью его развития. Необходимость анализа данных чаще всего возникает среди тех, кто управляет бизнесом – аналитиками, экономистами. Изучение тяжелых языков, таких как Java или C, не практично для них – в отличие от Python, который можно усвоить довольно быстро.

Сравнение размеров документации для разных языков

Интерактивность языка (расчеты без компиляции)

Аналитики также ценят Python за его способность кодировать на ходу благодаря своему встроенному переводчику. В науке данных это актуально для тестирования гипотез онлайн.

Интегрированные функции для оптимизации исходного кода

Для разработчиков встроенный интерпретатор также может быть полезен: поскольку Python предлагает неявную и динамическую набор данных, можно оценить степень оптимизации только в процессе выполнения кода, для которых интерпретатор полезен. Он переводит исходный код в машинные инструкции, которые могут предложить идею для оптимизации. Например, сравнение двух инструкций, вы можете понять, почему один быстрее, чем другой. Это важное преимущество для работы с большими данными, потому что в дополнение к анализу данных существует много работы для улучшения их алгоритмов обработки.

Разница в скорости выполнения идентичных, на первый взгляд, функции

Развитие динамического языка

Другим аргументом в пользу Python для нас заключался в том, что этот язык развивается быстро и интенсивно. С каждой версией производительность языка улучшается, и синтаксис улучшен. Например, в версии 3.8 появился новый оператор Walrus – : = что является серьезным событием для любого языка. На низкоуровневых языках, таких как C ++ или Java, темпы изменения намного ниже – они одобрены специальной комиссией, которая встречается раз в несколько лет. В Python процесс стандартизации более открыт для сообщества, каждый может предложить свои идеи, и их число быстро растет.

Необходимость решения совместной работы

Особенности Python делают ее интересным инструментом для разработки команды. В связи с тем, что переводчик языка скрывает детали низкоуровневых машин вычислений, разработчики должны обсудить и в нескольких деталях проекта более подробно.

Например, когда в Java Developer определяет тип возвращаемого значения функции, а какая-то проблема возникает с типом значения, программа просто не запускается. Программа Python может начать, но она не будет работать правильно, если тип значения принципиально важен. Такие проблемы могут быть трудно найти на этапе развития, поэтому это нужно обсудить. Для некоторого этого обстоятельства кажутся скорее минус, но коллективное обсуждение часто помогает найти самые успешные решения. А также позволяет разработчикам чувствовать участие в общей причине, что положительно влияет на мотивацию.

Возможность быстро расширить приложения с новыми функциями

Как я уже сказал, в дополнение к данным, у нас также есть задачи для разработки веб-приложений и микросервисов. Для них Python не может быть лучшим выбором: в долгосрочной перспективе он может быть менее продуктивным, чем скомпилированным языком со статическими набравшимися перед лицом тяжелых рабочих нагрузок и скорости взаимодействия сетевого взаимодействия. Но для веб-приложений средней нагрузки и на этапе MVP Python более чем удобно из-за того, что разработка новых функций занимает меньше времени.

Топ-5 Индекс Tiobe Популярность языков программирования в марте 2020 г.

Python в цепочке наших задач, используя пример

Я дам конкретный пример, где мы используем Python.

Бизнес-вызов

Обеспечить регулярную коллекцию и анализ информации о покупателях наших распределительных сетей. Основываясь на этих данных, мы можем сегментировать аудиторию, выделив специфические характеристики (атрибуты) для каждого клиента – например, его склонность сделать покупки премию. Есть много таких атрибутов, для реализации методологии для расчета их – это работа специалиста по науке данных, но со временем обновляется данные, а атрибуты должны регулярно рассчитать, что означает, что это должно быть автоматизировано.

Для этого мы разработали систему в Python, которая позволяет нам рассчитать эти атрибуты с заданной частотой. Расчет одного атрибута занимает 4-5 часов, с десятками используемых терабайт данных. Основная трудность заключается в том, что нам нужно регулярно предоставить эти данные в другие отделы компании, которые будут использовать их для создания всех видов маркетинговых моделей и создания отчетов. Организация доступа к результатам этих расчетов по SE является интересной технической задачей.

Решение

Сами расчеты реализуются на основе рамок Pyspark в экосистеме Hadoop. Apache Airflow используется в качестве планировщика расчета. Разработанная служба основана на архитектуре микросервис, микросервисы организуются через кубераты.

В этой серии Apache Airflow является примечательным – открытым инструментом для планирования и мониторинга процессов обработки данных. Он написан в Python, который позволяет подключать не только разработчиков, но и аналитики данных к процессу работы с проектами. Они заняты ETL задачи (экстракт, преобразование, нагрузка), а воздушный поток чрезвычайно удобен для этого, потому что позволяет просто описать сложные трубопроводы данных.

Пример трубопровода в воздушном потоке

Были некоторые трудности в создании друзей по воздушным потокам с Кубернетами. Воздушный поток активно развивается, поэтому документация часто отстает от текущей версии кода. Поддержка Kubernetes – относительно новая особенность, поэтому многие нюансы были поняты по коду и комментариям. И тот факт, что воздушный поток написан в Python, оказался очень удобным. Когда есть небольшая документация, крайне важно иметь возможность понять код, особенно реализация определенных функций, возможно, не всегда может быть очевидной.

Образец кода с комментариями. Функции для расчета обратного корня в Quake 3 Исходный код

В целом, наш сервис состоит из двух частей: один планы расчетов через воздушный поток, а второй несет ответственность за заполнение финальных магазинов с данными. Там, с помощью брокера Kafka Message Broker, является последовательным процессом окна наполнения магазина с результатами расчетов, которые могут происходить параллельно. Обе части сервиса используют Python: в первую очередь это воздушный поток с трубопроводом, во втором – система интеграции микросервисов.

Результат

Разработанная система позволяет автоматизировать и расписание регулярных расчетов 45 атрибутов поведения потребителей (часть рассчитывается один раз в неделю, часть – один раз в месяц). Количество данных, накопленных в результате этих расчетов в течение трех лет, составляет 4,5 терабайта, а другие отделения компании имеют возможность легко добраться до них и использовать их для своей работы. Кроме того, система ориентирована на расширение своих функций и реализацию новых.

Таким образом, Python позволяет решить самые разнообразные проблемы. Он объединяет разработчиков и специалистов в проекте, для которого программирование не является основным навыком – бизнес-аналитики, аналитики данных, ученые данных. Отлично подходит для развития Agile, для Agile оптимизации. Для компании, которая имеет много многоуровневых задач и работает с большими данными, Python – отличное дополнение к компетенциям на низкоуровневых языках.

Пост Почему Python хорош для науки о науке и разработки приложений появился первым на Techy360 Отказ

Оригинал: “https://dev.to/tecyguy/why-python-is-good-for-data-science-and-application-development-be8”