Python – отстой, когда дело доходит до энергоэффективности – буквально
Python – один из самых популярных языков программирования в мире. Об этом же свидетельствует индекс языков программирования голландской софтверной компании на 2021 год.
Но является ли это одним из самых энергоэффективных языков программирования? Не совсем. Исследование, проведенное учеными из Universidade do Minho, Portugal (впервые обнаруженное Hackaday), показывает, что Python просто лучше Perl, когда дело доходит до использования энергии для выполнения определенных задач. Он отмечает, что C лидирует в таблице, за ним следуют Rust, C ++ и Ada.
Исследователи использовали 10 популярных алгоритмов из игры Computer Language Benchmarks Game (CLBG) для измерения энергопотребления, времени выполнения и использования памяти 27 популярных языков программирования. Результаты можно найти в следующей таблице:

Совершенно очевидно, что Python плохо справляется со временем и памятью.
Что ж, можно утверждать, что это исследование было проведено в 2017 году, и с тех пор многое изменилось, вы правы. В результате исследователи опубликовали еще одно исследование с обновленными тестами и результатами в начале этого года. Предупреждение о спойлере: Python по-прежнему работает плохо.
В этих расширенных тестах исследователи коррелировали энергопотребление DRAM, пиковую память и общий объем памяти, используемой во время выполнения.

Команда также провела ряд стандартных алгоритмов вместе с некоторыми тестами на Rosetta Code, веб-сайте, на котором сравнивается выполнение общих алгоритмов на разных языках программирования. Вы можете посмотреть следующие таблицы; Когда дело доходит до энергопотребления, Python в основном находится в нижней половине рейтинга. Он не смог даже решить проблему Фибоначчи за 24 часа отсеченного времени.

Итак, очевидно, что такие языки, как Python, Perl и Ruby, на самом деле не энергоэффективны. С другой стороны, C, C ++ и Rust – одни из самых экологически чистых языков.
Подробнее об исследовании и методе оценки этого результата читайте здесь.
Разработка на Python — плюсы и минусы

История одного из самых популярных языков программирования началась в конце 80-х годов, когда Python начал своё концептуальное оформление на основе языков ABC и Modula-3. Он прошел долгий путь от своего первого релиза в 1991 году до версии 2.0, когда стал проектом с открытым исходным кодом. Python и по сей день объединяет огромное профессиональное сообщество, которое постоянно совершенствует эту технологию.
Согласно данным авторитетных индексов TIOBE и PYPL, сегодня Python стал самым популярным языком программирования в мире, опередив лидировавших ранее Java, C и C++. Работодатели по всему миру называют владение «Питоном» одним из самых востребованных и ценных технических навыков на рынке IT-разработки. Попробуем разобраться, почему же он завоевал столь высокие позиции.
В этом обзоре не будем останавливаться на том, что представляет собой язык Python и как он работает — это тема для отдельной статьи. Мы сосредоточимся на освещении целесообразности и эффективности применения «змеиного языка» для создания приложений. Для этого подробно разберем основные плюсы и минусы Python как языка разработки.
Кому нужен Python
Подходит ли Python для веб-разработки? Перед тем, как дать подробный ответ, стоит кинуть беглый взгляд на реальные примеры применения Python в технологических стеках гигантов современной индустрии.

Примеры использования Python крупными компаниями
- Google — с момента появления языка компания взяла на вооружение лозунг «Python везде, где можем, а C ++ — где должны». Python не только является компонентом поискового движка, но и считается (наряду с C ++, Java и Go) одним из официальных серверных языков Google, приложения на которых разрешено развертывать в производственной среде.
- Facebook — Python занимает третье место (после C++ и Hack) среди самых популярных языков разработки, которыми пользуются инженеры технологического гиганта. На нем сделано более 5 000 коммитов для утилит и инфраструктурных приложений Facebook.
- Instagram — платформа социальных сетей целиком создана на базе Python-фреймворка Django. Она ежедневно даёт возможность 4 миллионам активных пользователей фотографировать, редактировать, делиться и сохранять свои творения в личном цифровом альбоме.
- Spotify — крупный игрок на рынке и приложение для потоковой передачи музыки использует Python для аналитики данных. На её основе работают алгоритмы рекомендаций в популярнейших функциях «Радио» и «Открытия недели».
- Netflix — стриминговый сервис высоко оценил возможности стандартной библиотеки Python, чрезвычайно активное сообщество разработчиков и богатый выбор сторонних библиотек, доступных для решения практически любой конкретной проблемы. В своем блоге компания отмечала, что использует Python на протяжении всего жизненного цикла контента — от принятия решения о финансировании проектов, до управления сетью CDN, предоставляющей видео конечным пользователям.
- Dropbox — популярное онлайн-хранилище применяет Python для оптимизации кода как серверной части, так и внешнего интерфейса. Для этой задачи они привлекали самого создателя «змеиного языка» Гвидо ван Розума. А в 2016 году Dropbox выпустили Pyston — свою собственную реализацию Python, совместимую с CPython и библиотекой NumPy.
Язык широко применяется для комплексной разработки и тестирования веб-проектов любого масштаба. Однако, наряду с основными преимуществами, такими как простота и элегантность кода, имеется у Python и ряд своих недостатков.
Достоинства Python для разработки
Удобство и простота
- Низкий порог вхождения. Синтаксис Python схож с английским языком, который стал международным стандартом общения для разработчиков по всему миру. Это упрощает взаимодействие со сложными системами, а также даёт чёткое представление о взаимосвязи всех элементов кода между собой. Изучение Python может стать базой для «быстрого старта» для большинства начинающих программистов.
- Лёгкость чтения. Python невероятно легко читать, поэтому у программистов обычно не возникает проблем с пониманием кода, написанного их коллегами. Это делает общение между разработчиками в рамках одного проекта намного более эффективным. А наличие большое числа IDE для разработки веб-приложений на Python делает совместную работу еще проще.
- Хорошая визуализация. Представление данных в интуитивно понятном формате в Python достигается с помощью различных графиков и диаграмм. Компании, занимающиеся веб-разработкой, используют библиотеки Python с возможностью визуализации данных (например, Matplotlib), чтобы создавать чёткие и простые для понимания неспециалистов отчеты.
Бесплатность и открытый исходный код
Лицензия Python с открытым исходным кодом делает его легкодоступным, облегчает распространение и создание модификаций. Разработчики со всего мира могут бесплатно использовать язык и вносить свой вклад в его улучшение. К тому же, в случае с Python сами пользователи, а не крупные компании решают, как будет развиваться технология.
Встраиваемость и платформонезависимость
Благодаря своей интерактивности и переносимости Python обладает хорошими возможностями для динамической семантики и быстрого прототипирования. Его можно легко встроить в широкий спектр приложений, даже в те, которые используют разные языки программирования. Поэтому с Python можно легко исправлять новые модули и расширять базовый словарный запас языка.
Python, как C++, Java и другие высокоуровневые языки программирования, может работать с разными типами компьютеров, ОС и баз данных практически без модификаций. Он хорошо интегрирован не только с популярными платформами Windows, Mac и Linux/UNIX, но и со встроенными системами, такими как Raspberry Pi и Gumstix. Программы на Python также позволяют реализовывать переносимые графические интерфейсы.
Динамическая типизация
Python не знает тип переменной, пока код не запустится. Он автоматически назначает тип данных во время выполнения. Программисту не нужно заранее беспокоиться об объявлении переменных и их типов данных.
Асинхронное программирование
Для написания и поддержки асинхронного кода Python не требуется много усилий, поскольку нет взаимных блокировок, конфликта данных или любых других сбивающих с толку проблем. Каждая единица такого кода выполняется отдельно от основного потока, что существенно повышает производительность и скорость отклика приложения.
Повышенная эффективность разработки
- Гибкий подход. Python имеет несколько парадигм и может поддерживать множество стилей программирования, включая процедурные, объектно-ориентированные и функциональные. Это делает Python отличным языком для стартапов, поскольку им может потребоваться изменить свой подход в любой момент.
- Быстрая разработка. Веб-разработка на Python происходит в 5-10 раз быстрее, чем на C/C++, и в 3-5 раз быстрее, чем на Java. Это делает труд программистов проще и продуктивнее. Скорость написания кода — еще одна причина, по которой Python часто выбирают стартапы. Ведь более быстрое время вывода продукта на рынок дает и большее конкурентное преимущество.
- Упрощённая реализация ООП. Объектно-ориентированное программирование (ООП) — это парадигма, которая объединяет различные поведения и свойства в несколько объектов и классов. У каждого из этих классов есть своя функция, поэтому если в какой-то части кода возникает ошибка, другие части не затрагиваются. В Python работа ООП значительно упрощена, что делает разработку менее затратной и трудоемкой.
- Богатая стандартная библиотека и экосистема. Библиотеки Python содержат огромное количество заранее написанного кода. Таким образом, разработчикам не нужно тратить время на создание основных элементов. Эти библиотеки также позволяют программистам обрабатывать и преобразовывать данные, необходимые для непрерывной обработки данных в машинном обучении (ML).
Интеграция с другими языками
Популярность использования Python для корпоративных программных приложений, во многом объясняется его плавной интеграции с другими языками, традиционно применяемыми в корпоративной разработке, такими как Java, PHP и .NET.
Python может легко соединять отдельные компоненты приложения, написанные на разных языках. Неудивительно, что его иногда называют «склеивающим языком» (glue language) или языком интеграции.
Python делает прямые вызовы из/в кода Java, C ++ или C. Это позволяет обеспечить контроль большинства процессов и реализацию наиболее распространенных протоколов и форматов данных. Кроме того, его можно применять для сборки новых и старых фрагментов инфраструктуры, что является типичной задачей при разработке сложных мобильных приложений.
Богатство фреймворков
Одним из главных преимуществ языка Python является наличие у него большого числа фреймворков, упрощающих процесс разработки. Большинство фреймворков Python имеют четкую специализацию, в зависимости от типа и масштаба выполняемых с их помощью задач.
- Django отлично подходит для полноценных веб-приложений и масштабируемых проектов среднего уровня. Он имеет встроенные функции, которые позволяют повторно использовать код, согласованно изменять различные компоненты кода и упрощать веб-разработку другими способами. Django хорошо работает с Oracle SQL, PostgreSQL, MySQL и другими известными базами данных.
- Pyramid подойдёт для небольших проектов, которые при необходимости можно масштабировать. Фреймворк может использоваться с различными базами данных и приложений, а его функциональность расширяться с помощью плагинов — разработчики могут добавлять любые нужные функции. Это удобно, когда требуется реализовать разные решения в одной задаче.
- TurboGears состоит из нескольких компонентов, таких как Repoze, WebOb и Genshi, и основан на архитектуре MVC. Это хорошо для быстрой и эффективной разработки веб-приложений, которые к тому же более удобны в обслуживании. С помощью этой структуры можно писать небольшие или сложные приложения, используя режимы с минимальным или полным стеком соответственно.
- Flask позиционируется как микрофреймворк. Чаще всего он применяется к небольшим решениям, основным приоритетом которых является бережливая функциональность. Фреймворк также используется для создания прототипов.
Недостатки Python для разработки

Несмотря на явные достоинства Python, у него есть и недостатки, о которых следует помнить, планируя использовать этот язык в своем проекте.
Нет полной поддержки многопроцессорности
Многопроцессорность — важная часть написания приложения. Python поддерживает многопроцессорность, но из-за отсутствия прямой поддержки многопоточности (задачи выполняются параллельно в один поток), он может быть не таким гибким или удобным, как другие языки.
Это может создать определенные трудности при параллельном выполнении кода. Хотя подобные ограничения во многом снимается за счёт многочисленных дополнительных библиотек Python, умеющих полноценно работать с многопоточностью.
Ограничение скорости
Python часто критикуют за его скорость. Это интерпретируемый скриптовый язык, поэтому он работает относительно медленнее своих скомпилированных аналогов (например, C / C ++ или Java), которым не нужно тратить время на перевод текста программы. Тем не менее, некоторые тесты на Python работают быстрее, чем на C и C ++.
При этом, Python — не единственный, у кого есть потенциальные проблемы со скоростью. Ruby, Perl и даже JavaScript также находятся на более медленном конце «скоростной» шкалы. К тому же некоторые проблемы «змеиного языка», связанные со скоростью, были решены и оптимизированы, что делает Python одним из лучших вариантов для разработки программного обеспечения.
Не самый популярный язык для разработки мобильных приложений
Python неплохо справляется с мобильной разработкой, но его сравнительно редко используют для этой цели. Причина проста — у большинства компаний сложилась устойчивая практика нативной разработки для iOS и Android или разработки на React Native.
«Змеиный язык» не так популярен, как другие технологии в этой сфере. Более того, Android и iOS не поддерживают Python в качестве официального языка программирования. Поэтому заказчику будет сложно нанять исполнителей с опытом разработки мобильных приложений на Python.
Увеличенная нагрузка на память
Python — это язык, известный гибкостью подходов к типизации данных. Эта же динамическая типизация приводит к повышенному потреблению памяти. Поэтому Python будет неидеальным выбором для задач, интенсивно использующих память.
Нужно больше времени на тестирование
Python не требует, чтобы программисты определяли тип переменной, поскольку этот язык использует динамическую типизацию, которая упрощает и ускоряет написание кода.
К сожалению, это может привести к критическим ошибкам и дефектам, поскольку типы переменных не определены явно. Чтобы устранить эту проблему, разработчики должны запускать дополнительные тесты для выявления и исправления ошибок во время выполнения.
Архитектурные ограничения
Динамическая типизация Python накладывает некоторые ограничения и на архитектуру приложения. Ведь ряд процессов будут выполняться не на этапе компиляции (как в языках статической типизацией), а непосредственно во время выполнения. Если дизайн загружен элементами, это может остановить исполнение программы и помешать её бесперебойной работе.
Еще одна вещь, о которой нужно знать, рассматривая Python для своего проекта — конкурентность и параллелизм не могут быть элегантно использованы в этом языке. Из-за этого дизайн приложения может выглядеть не так изысканно, как хотелось бы.
Некоторым модулям Python не хватает надежной поддержки
Python выигрывает от большого и активного сообщества. Его члены часто обмениваются новыми пакетами и модулями, чтобы упростить разработку и расширить функциональные возможности языка.
К сожалению, многие разработчики указывают, что качество этих модулей не всегда на высоте. Некоторые из них устарели и не имеют надежной поддержки. Чтобы обеспечить хорошую производительность приложения на Python, следует проводить тщательное предварительное исследование, чтобы выбрать лучшие пакеты и модули.
Для чего еще нужен Python

Можно ли использовать Python для веб-разработки? Ответ очевиден. Ведь взвешенная оценка преимуществ и недостатков языка, показывает явное преобладание первых. Однако сфера применения Python выходят далеко за рамки непосредственного создания приложений.
Для проектов с машинным обучением и искусственным интеллектом
Технологии искусственного интеллекта (AI) и машинного обучения (ML) привлекают постоянно возрастающий интерес, поэтому все больше разработчиков пытаются включить их в свои проекты.
По словам Жана Франсуа Пьюже, представителя отдела машинного обучения IBM, Python — лучший язык для работы с машинным обучением и искусственным интеллектом. Для него создано много эффективных ML-инструментов с возможностью визуализации результатов, чьи возможность выходят далеко за рамки обычной обработки данных.
Для научных задач
Для «Питона» существует множество пакетов и библиотек, а также наборов инструментов (например, VTK 3D и MayaVi), специализированных для разработки научных и инженерных приложений. Среди наиболее популярных средств Data Science для Python можно выделить:
- SciPy — библиотека для выполнения научных и математических вычислений;
- Pandas — библиотека для аналитики данных;
- IPython — командная оболочка;
- Numeric Python (NumPy) — библиотека для фундаментальных математических вычислений;
- Natural Language Toolkit — библиотека для математического и текстового анализа.
Для анализа и визуализации данных
Аналитика данных (DA) — флагманская область применения Python, наряду с машинным обучением и искусственным интеллектом. Этот многоцелевой язык программирования предлагает множество инструментов для управления, анализа, а также визуального представления (DV) структур и сложных наборов данных.
Благодаря легкой интеграции с популярными «статическими» языками (например, MatLab и R), а также наличию множества специализированных библиотек, на основе Python удобно создавать кастомные алгоритмы анализа данных. Из можно напрямую интегрировать в собственные инструменты бизнес-аналитики через API.
Для тестирования
Еще одна область применения Python — автоматизация тестирования. Многие специалисты по автоматизации QA выбирают Python из-за его простой кривой обучения. Он также отлично подходит для тех, у кого более ограниченный технический опыт. Процесс обучения сильно облегчают развитое сообщество, четкий синтаксис и удобочитаемость.
У Python даже есть простые в использовании фреймворки для модульного тестирования, с помощью которых можно, например, выполнять тестирование геолокации для мобильных приложений.
Для прототипирования
Python делает создание прототипов быстрым и простым. Гибкость языка программирования позволяет легко провести рефакторинг кода и оперативно превратить первоначальный прототип в конечный продукт.
Для скриптования
Благодаря тесной интеграции с C, C ++ и Java Python может пригодиться для написания скриптов приложений. Изначально разработанный для встраивания в программные продукты на других языках, он может быть очень полезен для настройки больших приложений и создания для них расширений.
Одним из преимуществ использования Python для создания серверных скриптов является его простой синтаксис, который значительно ускоряет процесс. Код состоит из функциональных модулей и связей между ними, что позволяет выполнять алгоритм программы на основе действий пользователя. Python также поддерживает графические пользовательские интерфейсы, необходимые для веб-разработки.
Заключение
Python позволяет разрабатывать понятные и простые приложения, которые легко превратить из небольшого проекта в полноценное сложное приложение. Независимо от того, являетесь ли вы программистом или владельцем своего бизнеса, Python может стать хорошим вариантом для разработки проектов разных типов.
Он признан одним из лучших языков программирования для стартапов и легко понять по какой причине. Стартапы постоянно ищут уверенности и снижения рисков, у них ограниченные ресурсы и им нужно пространство для роста. А Python гибок, легко масштабируется, не требует большой команды и может использоваться для создания прототипов и запуска минимально жизнеспособных продуктов (MVP).
Нужна надёжная база для разработки программных продуктов? Выбирайте виртуальные серверы от Eternalhost с технической поддержкой 24/7 и бесплатной защитой от DDoS!
Программирование на Python: особенности обучения, перспективы, ситуация на рынке труда

Python входит в число самых популярных языков программирования, который считается одним из самых простых для изучения, при этом перспективных на рынке. Рассказываем, как выучить Пайтон, что на нем пишут и сколько получают Python-разработчики.
Вы читаете обновленную и улучшенную версию нашей старой статьи
Почему Python — хороший вариант для начинающих
Python — высокоуровневый язык программирования общего назначения, который относится к интерпретируемым языкам. То есть написанный на Python код интерпретируется в момент обращения программой-интерпретатором без предварительной компиляции.
Создатель Python — нидерландский инженер Гвидо ван Россум, известный энтузиаст разработки, который сейчас работает в Microsoft. Язык программирования «пайтон» — сайд-проект ван Россума. Гвидо считал существующие языки сложными для понимания и изучения, поэтому начал работать над собственным проектом. Ван Россум планировал сделать одновременно простой и мощный язык, и так в 1991 году он представил Python.
Python-разработчик — с нуля до трудоустройства за 10 месяцев
- Постоянная поддержка от наставника и учебного центра
- Помощь с трудоустройством
- Готовое портфолио к концу обучения
- Практика с первого урока
Вы получите именно те инструменты и навыки, которые позволят вам найти работу
«Пайтон» — мультипарадигмальный язык программирования. Он поддерживает объектно-ориентированный и структурный подходы, функциональное и аспектно-ориентированное программирование. В Python используется динамическая типизация. То есть тип переменной определяется в момент присваивания значения. При изменении значения может меняться тип данных.
Синтаксис Python простой и понятный для людей. В этом языке для выделения блоков кода применяются отступы, а не скобки. Пример кода ниже.
def print_numbers(last_number): i = 1 while i last_number: print(i) i = i + 1 print('finished!') print_numbers(3)
Философия Python поощряет простоту, эстетичность кода и отношение к работе, которое проще всего выразить английским словом fun — забава, шутка. Это частично описано в знаменитом сборнике афоризмов Zen of Python (Дзен «пайтона»).
Где используют Python: веб-разработка
В веб-разработке Python применяется для серверного программирования. Питонисты работают с бэкендом веб-приложений, используя нативный Python или популярные фреймворки, например, Django, Pyramid или Flask. «Пайтон» одинаково удобно использовать как для создания прототипов или небольших приложений, так и для больших и масштабируемых проектов, например, порталов, веб-сервисов, интернет-магазинов.
Читайте также: Как создатель Python Гвидо ван Россум устроился в Microsoft и теперь работает над развитием CPython
Где используют Python: Machine Learning и AI на Python
Python — один из основных языков программирования, которые применяют в области машинного обучения и искусственного интеллекта (Machine Learning и Artificial Intelligence). Например, библиотека с открытым исходным кодом TensorFlow, созданная исследовательской командой Google Brain, написана с использованием Python. Google использует эту библиотеку для программирования и обучения нейронных сетей, которые используются для изучения искусственного интеллекта.
Ещё одна известная библиотека — scikit-learn. Она написана на Python с включениями Cython — статически типизированного компилируемого подмножества Python. Библиотека scikit-learn применяется в исследованиях искусственного интеллекта, для обучения инженеров machine learning, для управления промышленными системами.
Использование Python для работы с Big Data
В Python есть несколько мощных и популярных библиотек, которые предназначены для работы с большими данными: анализа, визуализации, прогнозирования тенденций. Например, библиотека с открытым исходным кодом SciPy включает модули для математических, инженерных и научных вычислений. Matplotlib — одна из самых популярных библиотек для визуализации данных. Библиотека PANDAS применяется для анализа информации.
Это не все области применения Python. Этот язык используют для создания десктопных приложений, разработки игр и 3D-графики, программ для обработки аудио, видео и изображений и так далее.
Рейтинг и перспективы Python
Один из способов оценки популярности языка программирования — индекс TIOBE. Он рассчитывается на основе количества поисковых запросов в Google и других поисковиках. Учитываются запросы, включающие название языков программирования.
Согласно индексу TIOBE, в конце 2022 года Python занимает первое место в списке самых популярных языков программирования. Он опережает С, JavaScript, PHP, Swift и другие распространённые языки программирования.
В рейтинге GitHub Octoverse за 2022 год Python занимает второе место, уступая только JavaScript. Рейтинг Github Octoverse отражает популярность языка среди пользователей GitHub.
Python на рынке труда: зарплаты, вакансии
По данным компании «Хабр Карьера» на первое полугодие 2022 года, медианная зарплата Python-разработчиков составляет 144 тыс. рублей в месяц. Медианные зарплаты программистов на Java, Swift и Scala выше, чем у программистов на Python.
В мире в среднем Python-разработчики могут рассчитывать на зарплату около $100 тыс. в год до вычетов налогов.
Python в качестве первого языка для начинающих: сложно ли изучать
Чтобы ответить на этот вопрос, нужно вернуться к истории создания и философии Python. Как отмечалось выше, разработчик языка Гвидо ван Россум захотел создать «пайтон», так как другие языки казались ему слишком сложными и непонятными. Ван Россуму удалось сделать язык, который приносит удовольствие во время обучения и работы.
При выборе первого языка программирования главным преимуществом Python считается простой синтаксис. Среди недостатков можно отметить сложности, которые возникают у начинающих программистов при переходе на языки с более сложным синтаксисом.
Перспективы Python: мнение экспертов
Григорий Петров, DevRel в Evrone: на питонистов сейчас есть огромный спрос, так как этих специалистов меньше, чем открытых вакансий

Python — лучший язык для обучения программированию. Это язык программирования общего назначения. Создавался как простой язык для людей. Есть баланс между сложностью изучения и сюрпризами, с которыми сталкиваются программисты при работе с языком.
У JavaScript синтаксис лучше, чем у Python. Но в JS есть сюрпризы, например, this или приведение типов типизация. Python не взрывает мозг сюрпризами, он сбалансирован. К тому же, на нём можно делать практически всё, так как это язык общего назначения.
О будущем Python. У Python сильные позиции в серверной разработке, AI, Big Data, в программировании в сфере обучения и науки. В веб-разработке Python востребован в бэкенд части-разработке. Фронтенд скорее всего не для Python, так как в этой нише царствует JavaScript.
В целом в тех нишах, где Python активно используется, этот язык вряд ли уступит позиции другим языкам. То есть он останется востребованным в обозримой перспективе.
О спросе на джунов. На питонистов сейчас есть огромный спрос, так как этих специалистов меньше, чем открытых вакансий. По деньгам фронтенд разработка принесет чуть больше, но фронтенд изучать сложнее. Ведь не зря хорошим фронтендерам хорошо платят.
При этом если учиться по 2-3 часа в день на Python-разработку, то в течение нескольких месяцев уже можно претендовать на позицию интерна. Ему обычно нужно ещё полгода, чтобы стать джуниором. Но, повторюсь, всё зависит от человека.
Никита Левонович, техлид в «Квестоделы»: «Пайтон» активно развивается, о чём свидетельствует сокращение времени релизов новых версий с восемнадцати до девяти месяцев

О будущем Пайтона. Python в настоящее время переживает пик своей популярности, на нём разрабатывают во множестве компаний, на конференции и митапы по данному языку собирается сотни разработчиков. Всё это делает язык «пайтон» не только востребованным, но и простым в изучении. В связи с этим язык «пайтон» стоит изучать.
Вообще, перспективы языка Python отличные, в данный момент он является вторым лучшим языком для любой задачи. «Пайтон» активно развивается, о чем свидетельствует сокращение времени релизов новых версий с восемнадцати до девяти месяцев.
Это примерно столько, сколько нужно времени для изучения базовых основ Python. Хотя все люди разные и для освоения одних и тех же навыков им нужно разное время. А самое главное — на рынке нет единых требований к джуниору. В связи с этим срок обучения может колебаться от 3 месяцев до года.
Николай Марков, Principal Architect в компании Aligned Research Group: без работы толковый питонист точно не останется

Зачем разработчики используют Python. Python является одним из самых популярных языков общего назначения. Это значит, что на нём можно писать практически всё — от веб-приложений до серьезных низкоуровневых системных штук. Так уж получилось, что у меня есть несколько студентов, род деятельности которых практически никак не связан с программированием, но им захотелось изучать Python. Например, чтобы автоматизировать какие-то ежедневные рутинные задачи, или чтобы лучше понимать исследования, которые проводит аналитический отдел в их компании. Порог вхождения не очень высок, что и позволяет добиться значимых результатов в довольно короткие сроки, а видеть результаты своего труда всегда приятно.
Несмотря на то, что язык существует довольно давно, он активно развивается, вбирая в себя всё новые возможности и щеголяя гигантским набором модулей расширения. Кроме того, довольно большое количество разных курсов, начиная от низкоуровневой работы с сетью и кончая Data Science, переехали с других языков на Python в новых версиях. Это можно заметить, например, по проектам на Coursera.
Пусть даже Python и не является явным лидером в каких-то конкретных областях, обычно он достаточно хорош, чтобы решать задачи практически в любой предметной области. И на горизонте навскидку я не могу назвать других языков, которые были бы настолько универсальны.
О будущем Python. Лично мне кажется, что Python был и будет востребован как язык для обучения, прототипирования и решения базовых бизнес-задач. И это несмотря на то, что в узком применении зачастую имеет смысл переключиться на более специализированные инструменты. Всё потому, что он дает базу, которая позволяет регулировать глубину погружения в предмет. Инженер может пойти глубже и изучать более узкую сферу, а, скажем, учёному хватит Python в качестве подручного инструмента для основных задач. А дети в школах, например, смогут после нескольких уроков Python создавать вполне рабочие проекты, например, в IoT и решении математических задач. Хорошая замена инженерному калькулятору на занятиях, правда?
Как стать джуниор Python-разработчиком. Понятие «джуниора» весьма размыто и сильно меняется от компании к компании, или даже между разными командами внутри одного бизнеса. Тем не менее общая тенденция такова, что если вы смогли пройти собеседование на подобную позицию, пусть даже не имея серьезного опыта, то дальше начинается серьезное обучение на реальных проектах. Это гораздо полезнее, чем зубрёжка теории алгоритмов или попытки на коленке с минимальными знаниями собрать продающийся продукт.
Плюс я искренне верю, что вменяемый менеджер выделит такому «джуниору» время и возможность на самообразование внутри компании, включая бесплатные курсы под присмотром с code review. Так что совет тут простой — читайте требования в вакансиях, соберите на коленке пару прототипов, а дальше — вперёд, по собеседованиям!
Никита Соболев, CEO wemake.services: мы прежде всего просто разработчики, инструмент не так важен

В чем особенность Python. Python — самый простой и понятный язык из всех в плане синтаксиса и концепций. В нём минимальное количество магии и неявных моментов. В нём уже заложены несколько парадигм: можно писать в ООП стиле, можно в функциональном. Можно явно проставлять типы в аннотациях, можно сделать их неявными. Учить его приятно и максимально просто. Мне кажется, что «пайтон» — лучший язык, чтобы учиться. И нет, не C (чтобы узнать как работает память!), а «пайтон».
Изменения в языке. Мне кажется, что язык выбрал неправильную стратегию развития. Его реверансы в стороны «асинхронщины» закончились печально. Просто уже столько лет, а оно так и не заработало как нужно: примитивы для асинхронности так и остались на уровне детского сада, а батареек так и не завезли. Более того, саму красоту синтаксиса языка начинают уродовать чуждыми концепциями: f-строки, оператор моржа (он ломает столько всего!). Сама платформа развивается очень медленно и работает также. Я бы дополнительно обратил внимание на Elixir, Rust, F#, и возможно Crystal с Nim.
Перспективы Python-разработчиков. Я вообще не люблю понятие «джанго-разработчик» или «пайтон-разработчик». Мы прежде всего просто разработчики. Инструмент не так важен. Для разных задач нужны разные инструменты. Бэкенд пишут на одном из множества языков, фронт на тайпскрипте (или elm’е!), башскрипты для разного, Elixir для частей с высокой нагрузкой, Rust и Haskell — для души. А есть еще куча всего интересного! Резюме: хорошие разработчики всегда будут нужны, «пайтоны» приходят и уходят.
Сколько нужно, чтобы стать Python-разработчиком. По-разному. Я бы сказал, от года до двух. Зависит от начального уровня, наличия фундаментального образования, без которого в некоторые сферы вход вообще закрыт, знакомства с процессом разработки в целом, мотивации и таланта. У меня ушел где-то год фултайм учёбы + работы.
Заключение: Python — лучший язык для обучения с хорошими перспективами на рынке
Эксперты называют Python если не лучшим, то одним из лучших языков для изучения программирования. Простой синтаксис делает этот язык удобным для восприятия и понятным. Разработчики со знанием Python востребованы на рынке труда. Они работают в сфере веб-разработки, machine learning и Data Science. Выводы делайте самостоятельно. А если у вас остались вопросы по целесообразности изучения «пайтон», пишите их в комментариях.
Профессия «Python-разработчик»
- Изучите Python — язык с простым и понятным синтаксисом
- Научитесь создавать полноценные сайты и веб-приложения
- Освойте популярный фреймворк Python — Django
- Разберитесь в базах данных и научитесь управлять ими с помощью SQL
Чем изучение Haskell/Python вредит программисту
На этот перевод меня толкнула очередная ситуация «мозгового ступора» при написании банального кода на C++/C#: я часами смотрел на уродливый код, но не мог сделать его по-настоящему лучше; мне пришлось просто принять то, что уродливым его видел только я один, и это была моя проблема, а не проблема в коде или языке. Я вспомнил те времена, когда такого со мной не было — а заодно вспомнил и эту старую статью, автор которой пострадал так же, как и я, при этом хорошо написав об этом.
Я заметил, что мыслю на Python и иногда даже на Haskell в какой-то мере — несмотря на то, что я использовал Haskell совсем немного. Я постоянно обнаруживаю в себе желание использовать идиомы из этих языков и подсчитываю, насколько сильно я мог бы сократить код, если бы использовал эти языки (которые, хоть и сильно отличаются друг от друга, оба намного мощнее того языка, который я использую на работе — C#) . В большинстве случаев этот подсчет показывает, что используя любой из этих языков я мог бы уменьшить размер своего кода в 2-5 раз, и нередко в 10-20 раз для некоторых частей code base.
Далее, мой опыт c Haskell привел к тому, что теперь я везде вижу потенциальные баги в императивном коде. Я и ранее был хорошо знаком с проблемами, растущими из stateful-программирования и побочных эффектов — сам сталкиваясь с большим количеством подобных багов и проводя бессчетные часы в отладке. Но не имея альтернативы, я просто жил с этим. Теперь же, зная, что есть другие способы решения тех же задач — мне трудно удовлетвориться любым моим кодом. Меня постоянно беспокоит то, что я пишу ловушки, в которые, вероятно, попадут другие люди.
Я так же нахожу C#-код весьма уродливым в сравнении с Python и Haskell. На визуальном уровне обязательное использование скобок (ну ладно, не всегда обязательное, но обычно стандарты кодирования это справедливо не поощряют) делает код очень шумным и разреженным, и в сочетании со строгостью и многословием библиотек — вы обнаруживаете, что целая страница C#’a, общем-то, ничего не делает. А если уж говорить про красоту на математическом уровне, то код на C# это просто корявая глиняная хибара в сравнении с элегантным шпилем кода на Haskell.
В C# начали появляться фичи, которые располагают к функциональному стилю программирования. Итак, в один прекрасный день, столкнувшись со вполне шаблонной ситуацией — я попробовал функциональное решение. У меня был список объектов Foo , у каждого был метод Description() , возвращающий строку. Мне нужно было склеить все непустые description’ы, разделив их переносами строки.
Код, который я бы написал на Python, выглядит так:
«\n».join(foo.description() for foo in mylist if foo.description() != «»)
Или вот так, на Haskell:
concat $ List.intersperse «\n» $ filter (/= «») $ map description mylist
От переводчика, на Haskell:
map description >>> delete «» >>> List.intersperse «\n» >>> concat
Используя generics-методы из C# 2.0, лучшим, что я получил, было:
string .Join(«\n», mylist.ConvertAll< string >(
delegate (Foo foo)
return foo.Description();
>).FindAll(
delegate ( string x)
return x != «»;
>).ToArray());
Если бы я работал с другой структурой данных, C#-версия вышла бы еще более ужасной — а ведь для C# существуют сотни разных типов коллекций, семантически несовместимых. А еще надо заметить, что для написания какого-либо метода, принимающего «делегаты» (ближайщий родственник функциям-объектам первого класса) , вы должны объявить сигнатуру принимаемой функции отдельно от метода, что еще больше усугубляет ситуацию с читаемостью функционального кода.
Вот несколько проблем с C#-решением, приведенным выше. Первая заключается в том, что размер кода не сильно уменьшился (если вообще уменьшился) по сравнению с императивным кодом. Сравните это с нудным циклом, который я бы написал вместо этого:
string retval = «»;
foreach (Foo foo in mylist)
string desc = foo.description();
if (desc != «»)
if (retval != «»)
retval += «\n»;
retval += desc;
>
>
Не очень-то и много кода.
Вторая проблема: функциональный код отнял у меня больше времени. Мне пришлось провести некоторые эксперименты с тем, насколько много информации о типах нужно добавить, чтобы код скомпилировался (к примеру, явное приведение типа для делегата оказалось необязательным, но мне пришлось указать ConvertAll вместо ConvertAll ).
Ну и наконец, последняя проблема — она возникла с моими коллегами. Почему я пишу такой сложный код — используя такие продвинутые фичи, как анонимные делегаты — в то время, как хватило бы и обычного цикла? На самом деле, я всё-таки оставил функциональную версию решения, но мне пришлось добавить краткий поясняющий комментарий к нему.
Факт — функциональные идиомы плохо работают в языках, не имеющих синтаксической поддержки для них. С Java, насколько я могу судить, всё было бы еще хуже. C# страдает от того, что несмотря на появление в C# 2.0 фич, помогающих программировать функционально, подавляющая часть библиотек для .NET осталась неизменной, не используя эти фичи — равно как и наш собственный код.
Здесь можно возразить, что вы все еще можете использовать сами принципы функционального программирования (нет побочных эффектов, результат функции зависит только от её параметров и т.п.) и получать выгоду от этого, даже если нет языковой поддержки этих идиом. В реальности же, библиотеки и фреймворки разработаны для императивных языков и по-другому просто не работают. ASP.NET — особенно хороший пример этого. Вы разрабатываете контролы, наследуя их от Control и перекрывая некоторые методы. Большая часть этих методов не имеют возвращаемого значения и параметров, совершая лишь изменение состояния объекта или других объектов. Потом эти методы вызываются фреймворком в неясном и сложном порядке (да, это кошмар в отладке) .

