Почему Python так хорош?

Всем привет!

Недавно меня посетила мысль о том чтобы написать статью о таком языке программирования как Python.

Python - это язык программирования общего назначения, нацеленный в первую очередь на повышение продуктивности самого программиста, нежели кода, который он пишет. Говоря простым человеческим языком, на Python можно написать практически что угодно (веб-/настольные приложения, игры, скрипты по автоматизации, комплексные системы расчёта, системы управления жизнеобеспечением и многое многое другое) без ощутимых проблем.

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

Вывод «Hello world» на Python

Для сравнения, то же самое только на C++

Следующим преимуществом python перед другими языками я считаю его кроссплатформенность. Ваша программа/скрипт на Python будет одинаково запускаться на Windows, Linux , Android, OS X не говоря уже о прочих Unix-системах.

Лично я использую Python для написания скриптов на микрокомпьютер Raspberry PI (возможно скоро напишу статью и о нем) для управления GPIO, сбором данных с датчиков и отправки их на IoT сервисы.

Для ясности приведу пару-тройку примеров крупных проектов написанных на Python:

  • YouTube (большая часть кодовой базы полностью на Python)
  • Первая версия поисковика Google была написана на Python, а позже, из-за чрезвычайно высокой нагрузки и требований к скорости, была переписана на C++.
  • Десктопный клиент Dropbox
  • Reddit, крупнейший форум в мире
  • Instagram
  • Bitbucket (Python 2.7 и Django 1.7.11)
  • EVE Online
  • сервис ответов на вопросы Quora
  • Музыкальный стриминговый сервис Spotify
  • Критические сервисы PayPal, обрабатывающие до 2 миллиардов запросов в сутки.
  • Сервисы Mozilla
  • Популярный сервис идей Pinterest
  • Сервис комментариев Disqus
  • Внутренние сервисы Facebook
  • Система контроля версий Mercurial (до некоторых пор разработчики Python использовали её в своей работе)
  • Сервисы Wargaming

Впечатляет, да?

Недостатки

К сожалению каким бы простым и удобным язык не был у всего есть недостатки.

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

Для начинающих программистов, язык программирования с динамической типизацией на первый взгляд (и на второй и даже на третий) может казаться отдушиной, райским наслаждением, особенно для тех, кто ранее имел дело со "статикой". Но есть и обратная сторона луны. С ростом кодовой базы (а это часто неизбежный процесс в успешных проектах), следить за типом передаваемых друг другу данных бывает очень сложно (а при отсутствии внятной документации и тестов практически невозможно), отсюда появляются проблемы, когда, например, у None пытаются вызвать метод или обратиться к атрибуту в процессе выполнения кода. Для решения такого рода проблем динамические языки обрастают всевозможными костылями в виде type annotations, проектов mypy по статическому анализу кода и так далее. Это же в свою очередь накладывает негативный оттенок на эстетическую сторону кода.

В связи с ограничениями языка, появляются альтернативные реализации интерпретаторов: PyPy, Pyston, Jython, Cython и многие другие. Сейчас тренд хорошо заметен именно в эту сторону, например Pyston разрабатывается в стенах т.н. Мекки Python программистов - компании Dropbox :)

Заключение

Несмотря на ряд проблем исторически присущих Python, он продолжает оставаться лидирующим инструментом в ряде ниш:

  • Разработка веб-приложений (тут у нас бесусловный лидер в виде Django).
  • Анализ данных и машинное обучение (пакеты scipy, scikit-learn, pandas, numpy признанные мировым ученым сообществом).
  • Введение в программирование (pygame, turtle хорошо помогают мотивировать детей начинать кодить).
  • Быстрое прототипирование идей в бизнесе за счёт обилия готовых библиотек, низкого порога вхождения в язык и высокой продуктивности программистов, пишущих на Python.
  • Написание скриптов (сценариев) для автоматизации задач. Python по-умолчанию поставляется со всеми дистрибутивами unix-like систем и является отличной заменой Bash во всех смыслах.
  • Математические вычисления(numpy, matplotlib)

Благодарю за внимание :)

Владимир Колегов. Академик направления "Робототехника"