редакции Выбор
Программирование на Python: особенности обучения, перспективы, ситуация на рынке труда
Почему Python — хороший вариант для начинающих: краткая теория
Python — высокоуровневый язык программирования общего назначения. Относится к интерпретируемым языкам. То есть написанный на Python код интерпретируется в момент обращения программой-интерпретатором без предварительной компиляции. Бесплатный курс по основам Python доступен платформе Code Basics.
Справка: в русском языке распространены названия «питон» и «пайтон». В качестве эмблемы используется стилизованное изображение змеи, хотя язык назван не в честь рептилии, а в честь британских комедиантов Monty Python.
Создатель Python — нидерландский инженер Гвидо ван Россум. В конце 80-х этот специалист работал в Centrum Wiskunde & Informatica — Национальном исследовательском институте математики и информатики, расположенном в Амстердаме. Здесь Гвидо ван Россум разрабатывал язык ABC, предназначенный для обучения программированию.
Язык программирования «пайтон» — сайд-проект ван Россума. Гвидо считал существующие языки сложными для понимания и изучения, поэтому начал работать над собственным проектом. Ван Россум планировал сделать одновременно простой и мощный язык. Специалист представил Python в 1991 году.
«Пайтон» — мультипарадигмальный язык программирование. Он поддерживает объектно-ориентированный и структурный подходы, функциональное и аспектно-ориентированное программирование. В Python используется динамическая типизация. То есть тип переменной определяется в момент присваивания значения. При изменении значения может меняться тип данных.
«Питон» поддерживает функциональное программирование в традициях языков семейства Lisp. Вот некоторые возможности:
- Функции высших порядков filter, map и reduce.
- Генераторы списков (list comprehensions).
- Генераторные выражения.
- Множества.
Синтаксис Python простой и понятный для людей. В этом языке для выделения блоков кода применяются отступы, а не скобки. Пример кода ниже.
Философия Python поощряет простоту, эстетичность кода и отношение к работе, которое проще всего выразить английским словом fun — забава, шутка. Это частично описано в знаменитом сборнике афоризмов Zen of Python (Дзен «пайтона»).
Где используют Python: веб-разработка, AI, Big Data
Как отмечалось выше, Python — язык общего назначения. Тем не менее в нескольких сферах Python применяется чаще и успешнее всего.
Веб-разработка на Python
В веб-разработке «пайтон» применяется для серверного программирования. Питонисты работают с бэкендом веб-приложений, используя нативный Python или популярные фреймворки, например, Django, Pyramid или Flask. «Пайтон» одинаково удобно использовать как для создания прототипов или небольших приложений, так и для больших и масштабируем проектов, например, порталов, веб-сервисов, интернет-магазинов.
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, в августе 2019 года Python занимает третье место в списке самых популярных языков программирования. Он опережает JavaScript, PHP, Swift и другие популярные языки.
В рейтинге GitHub Octoverse за 2018 год Python занимает третье место, уступая только JavaScript и Java. Рейтинг Github Octoverse отражает популярность языка среди пользователей GitHub.
В рейтинге RedMonk «пайтон» также занимает третье место. Сооснователь RedMonk Джеймс Гавернер отмечает, что Python уже стал лингва франка для Data Science. То есть этот язык стал основным для этой отрасли. Тем не менее Гавернер не исключает, что в настоящий момент Python достиг пика популярности.
Справка: термином «лингва франка» называют общеизвестные языки, которые используются для общения представители разных языковых групп. Например, английский язык можно назвать лингва франка в международном общении.
Такого же мнения придерживается аналитик RedMonk Стивен О’Грейди. Он отмечает, что Python в обозримой перспективе удержит позиции, но вряд ли станет таким же популярным, как JavaScript.
Промежуточный итог: Python входит в число самых популярных языков программирования по данным рейтингов TIOBE, GitHub Octoverse и RedMonk. По мнению экспертов RedMonk, этот язык находится на пике популярности, но вряд ли станет таким же массовым, как JavaScript. В следующем разделе рассмотрим перспективы «питона» в контексте рынка труда.
Python на рынке труда: зарплаты, вакансии
По данным компании «Мой круг» на первое полугодие 2019 года, медианная зарплата Python-разработчиков составляет 100 000 рублей в месяц. Такие же зарплаты у специалистов по JavaScript и C#. Питонисты зарабатывают больше PHP-разработчиков. Медианные зарплаты программистов на Java, Swift и Scala выше, чем у программистов на Python.
По данным компании NewHR, программисты, работающие на Python, получают от 150 000 до 200 000 рублей. Эти данные справедливы для разработчиков уровня middle, работающих в Москве. Для senior-разработчиков на «питоне» средняя зарплата составляет от 200 000 до 250 000 тысяч рублей в месяц.
Ситуацию в регионах можно проверить самостоятельно. Например, по запросу python в Казани на hh.ru 28 авгутста есть 129 вакансий. Максимальная зарплата составляет 280 000 рублей, минимальная — 30 000 рублей.
Промежуточный вывод: программисты на Python востребованы на рынке труда, медианная зарплата составляет 100 000 рублей.
Python в качестве первого языка для начинающих: сложно ли изучать
Чтобы ответить на этот вопрос, нужно вернуться к истории создания и философии Python. Как отмечалось выше, разработчик языка Гвидо ван Россум старался захотел создать «пайтон», так как другие языки казались ему слишком сложными и непонятными. Ван Россуму удалось сделать язык, который приносит удовольствие во время обучения и работы.
Python считается одним из лучших и удобных языков для обучения. Значит ли это, что изучать его легко? Скорее нет. Обучение программированию всегда требует дисциплины, прилежания, концентрации.
При выборе первого языка программирования главным преимуществом Python считается простой синтаксис. Среди недостатков можно отметить сложности, которые возникают у начинающих программистов при переходе на языки с более сложным синтаксисом.
Промежуточный итог: если вы начинаете изучать программирование, Python — отличный выбор.
Перспективы Python: мнение экспертов
Мы попросили известных разработчиков поделиться своими взглядами на перспективы языка программирования «пайтон», ситуацию на рынке труда и обучение.
Григорий Петров, DevRel в компании Evrone: на питонистов сейчас есть огромный спрос, так как этих специалистов меньше, чем открытых вакансий
1. По вашему мнению, почему стоит изучать Python?
Python — лучший язык для обучения программированию. Это язык программирования общего назначения. Создавался как простой язык для людей. Есть баланс между сложностью изучения и сюрпризами, с которыми сталкиваются программисты при работе с языком.
У JavaScript синтаксис лучше, чем у Python. Но в JS есть сюрпризы, например, `this` или приведение типов типизация. Python не взрывает мозг сюрпризами, он сбалансирован. К тому же, на нём можно делать практически всё, так как это язык общего назначения.
2. Какие перспективы у этого языка программирования по сравнению с другими языками?
Будущее предсказать невозможно. В данный момент популярность Python растёт, язык входит в топ когорту самых популярных. Причин для проблем сейчас не видно.
3. Будет ли Python востребован в будущем?
У Python сильные позиции в серверной разработке, AI, Big Data, в программировании в сфере обучения и науки. В веб-разработке Python востребован в бэкенд части-разработке. Фронтенд скорее всего не для Python, так как в этой нише царствует JavaScript.
В целом в тех нишах, где Python активно используется, этот язык вряд ли уступит позиции другим языкам. То есть он останется востребованным в обозримой перспективе.
4. Каковы перспективы Python-разработчика на рынке труда?
На питонистов сейчас есть огромный спрос, так как этих специалистов меньше, чем открытых вакансий. По деньгам фронтенд разработка принесет чуть больше, но фронтенд изучать сложнее. Ведь не зря хорошим фронтендерам хорошо платят.
5. Сколько времени нужно учиться разработке на Python с нуля до джуниора?
Однозначного ответа на этот вопрос нет. Стандартизированных программ обучения пока не существует, все разработчики — по сути самоучки. И здесь скорость обучения зависит от человека.
Если учиться 2-3 часа в день, то в течение примерно трёх месяцев можно претендовать на позицию интерна. Это не джуниор-разработчик, а именно интерн. Интерну обычно нужно ещё полгода, чтобы стать джуниором. Но, повторюсь, всё зависит от человека.
Никита Левонович, техлид в «Квестоделы»: «Пайтон» активно развивается, о чём свидетельствует сокращение времени релизов новых версий с восемнадцати до девяти месяцев
1. По вашему мнению, почему стоит изучать Python?
Python в настоящее время переживает пик своей популярности, на нём разрабатывают во множестве компаний, на конференции и митапы по данному языку собирается сотни разработчиков. Все это делает язык «пайтон» не только востребованным, но и простым в изучении. В связи с этим язык «пайтон» стоит изучать.
2. Какие перспективы у этого языка программирования по сравнению с другими языками?
Перспективы языка Python отличные, в данный момент он является вторым лучшим языком для любой задачи. «Пайтон» активно развивается, о чем свидетельствует сокращение времени релизов новых версий с восемнадцати до девяти месяцев.
3. Будет ли Python востребован в будущем?
Да. Насколько долго — вопрос открытый, но в ближайшие 5-10 лет востребованность языка Python, скорее всего, уменьшаться не будет.
4. Сколько времени нужно учиться разработке на Python с нуля до джуниора?
Все люди разные и для освоения одних и тех же навыков им нужно разное время. А самое главное - на рынке нет единых требований к джуниору. В связи с этим срок обучения может колебаться от 3 месяцев до года.
Николай Марков, Principal Architect в компании Aligned Research Group: без работы толковый питонист точно не останется
1. По вашему мнению, почему стоит изучать Python?
Python является одним из самых популярных языков общего назначения. Это значит, что на нём можно писать практически всё — от веб-приложений до серьезных низкоуровневых системных штук. Так уж получилось, что у меня есть несколько студентов, род деятельности которых практически никак не связан с программированием, но им захотелось изучать Python. Например, чтобы автоматизировать какие-то ежедневные рутинные задачи, или чтобы лучше понимать исследования, которые проводит аналитический отдел в их компании. Порог вхождения не очень высок, что и позволяет добиться значимых результатов в довольно короткие сроки, а видеть результаты своего труда всегда приятно.
2. Какие перспективы у этого языка программирования по сравнению с другими языками?
Несмотря на то, что язык существует довольно давно, он активно развивается, вбирая в себя всё новые возможности и щеголяя гигантским набором модулей расширения. Кроме того, довольно большое количество разных курсов, начиная от низкоуровневой работы с сетью и кончая Data Science, переехали с других языков на Python в новых версиях. Это можно заметить, например, по проектам на Coursera.
Пусть даже Python и не является явным лидером в каких-то конкретных областях, обычно он достаточно хорош, чтобы решать задачи практически в любой предметной области. И на горизонте навскидку я не могу назвать других языков, которые были бы настолько универсальны.
3. Будет ли Python востребован в будущем?
Лично мне кажется, что Python был и будет востребован как язык для обучения, прототипирования и решения базовых бизнес-задач. И это несмотря на то, что в узком применении зачастую имеет смысл переключиться на более специализированные инструменты. Всё потому, что он дает базу, которая позволяет регулировать глубину погружения в предмет. Инженер может пойти глубже и изучать более узкую сферу, а, скажем, учёному хватит Python в качестве подручного инструмента для основных задач. А дети в школах, например, смогут после нескольких уроков Python создавать вполне рабочие проекты, например, в IoT и решении математических задач. Хорошая замена инженерному калькулятору на занятиях, правда?
4. Каковы перспективы Python-разработчика на рынке труда?
Инженеры со знанием Python до сих пор очень востребованы на рынке в самых разных направлениях и бизнесах. Возможно, сейчас это не даст сразу с улицы привилегированного положения и высоких зарплат, как, скажем, еще 10 лет назад, но без работы толковый питонист точно не останется. И шансы попасть в большую технологическую компанию подобные навыки тоже сильно повышают, если такова ваша цель.
5. Сколько времени нужно учиться разработке на Python с нуля до джуниора?
Понятие «джуниора» весьма размыто и сильно меняется от компании к компании, или даже между разными командами внутри одного бизнеса. Тем не менее общая тенденция такова, что если вы смогли пройти собеседование на подобную позицию, пусть даже не имея серьезного опыта, то дальше начинается серьезное обучение на реальных проектах. Это гораздо полезнее, чем зубрёжка теории алгоритмов или попытки на коленке с минимальными знаниями собрать продающийся продукт.
Плюс я искренне верю, что вменяемый менеджер выделит такому «джуниору» время и возможность на самообразование внутри компании, включая бесплатные курсы и какой-никакой R&D под присмотром с code review. Так что совет тут простой — читайте требования в вакансиях, соберите на коленке пару прототипов, а дальше — вперёд, по собеседованиям!
Никита Соболев, CEO wemake.services: мы прежде всего просто разработчики, инструмент не так важен
1. По вашему мнению, почему стоит изучать Python?
Да, стоит. Python — самый простой и понятный язык из всех в плане синтаксиса и концепций. В нём минимальное количество магии и неявных моментов. В нём уже заложены несколько парадигм: можно писать в ООП стиле, можно в функциональном. Можно явно проставлять типы в аннотациях, можно сделать их неявными. Учить его приятно и максимально просто. Мне кажется, что «пайтон» — лучший язык, чтобы учиться. И нет - не C (чтобы узнать как работает память!), а «пайтон».
2. Какие перспективы у этого языка программирования по сравнению с другими языками?
Мне кажется, что язык выбрал неправильную стратегию развития. Его реверансы в стороны «асинхронщины» закончились печально. Просто уже столько лет, а оно так и не заработало как нужно: примитивы для асинхронности так и остались на уровне детского сада, а батареек так и не завезли. Более того, саму красоту синтаксиса языка начинают уродовать чуждыми концепциями: f-строки, оператор моржа (он ломает столько всего!). Сама платформа развивается очень медленно и работает также. Я бы дополнительно обратил внимание на Elixir, Rust, F#, и возможно Crystal с Nim.
3. Будет ли Python востребован в будущем?
Тем не менее «пайтон» будет жить еще очень и очень долго. Гандикап огромный, синхронная версия языка всё так же работает. Сравнивать с другими сложно, потому что слишком много сфер для сравнения. В ML всё будет хорошо, для скриптов тоже. В вебе другие языки откусят свою долю.
4. Каковы перспективы Python-разработчика на рынке труда?
Мне не нравится формулировка вопроса. Я вообще не люблю понятие «джанго-разработчик» или «пайтон-разработчик». Мы прежде всего просто разработчики. Инструмент не так важен. Для разных задач нужны разные инструменты. Бекенд пишут на одном из множества языков, фронт на тайпскрипте (или elm'е!), башскрипты для разного, Elixir для частей с высокой нагрузкой, Rust и Haskell — для души. А есть еще куча всего интересного! Резюме: хорошие разработчики всегда будут нужны, «пайтоны» приходят и уходят.
5. Сколько времени нужно учиться разработке на Python с нуля до джуниора?
По-разному. Я бы сказал, от года до двух. Зависит от начального уровня, наличия фундаментального образования, без которого в некоторые сферы вход вообще закрыт, знакомства с процессом разработки в целом, мотивации и таланта. У меня ушел где-то год фултайм учёбы + работы.
Заключение: Python — лучший язык для обучения с хорошими перспективами на рынке
Эксперты называют Python если не лучшим, то одним из лучших языков для изучения программирования. Простой синтаксис делает этот язык простым и понятным. Разработчики со знанием Python востребованы на рынке труда. Они работают в сфере веб-разработки, machine learning и Data Science. Выводы делайте самостоятельно. А если у вас остались вопросы по целесообразности изучения «пайтон», пишите их в комментариях.
Оригинал статьи опубликован в блоге «Хекслета». «Хекслет» курирует бесплатную платформу для изучения основ программирования Code Basics.