Партнерский материал

Python, взгляд разработчика: чем этот язык программирования круче остальных и почему его легче учить начинающим

За последние 30 лет некогда «несерьезный» язык программирования Python незаметно стал мировым лидером по частоте использования. Попробуем разобраться, какие его особенности стали этому причиной.
Среди языков программирования в последний десяток лет на первое место выдвинулся Python, когда создававшийся как «несерьезный» язык. Почему? / ©Chris Ried on Unsplash

«Пайтон», а не «питон» — и как это связано с особенностями языка

По-русски этот язык программирования часто называют «питон», что неверно, ведь профессию веб-разработчик на Python назвали не в честь змеи, чье русское название так звучит, а в честь некогда популярного британского шоу «Монти Пайтон».

И название дано не просто так: создатель языка Гвидо ван Россум изначально планировал его с целью получить забавный — то есть нескучный — мощный, но простой в освоении инструмент. В отличие от типичных языков того времени, Python не использует компиляцию. То есть текст программы перед запуском не транслируется в машинный код до выполнения, а транслируется построчно, что заметно экономит время в конце написания кода, когда у программиста на C++ будет идти компиляция. Но на этом отличия от стандартного языка программирования только начинаются, а не заканчиваются

Во-первых, Гвидо ван Россум с самого начала настаивал, чтобы программный код в его языке был понятен как «обычный английский». И это действительно неплохо: зная английский даже на среднем уровне, любому будет куда проще начать пользоваться Python. Для большинства языков программирования код заметно дальше от обычного английского. Во-вторых, он исходил из необходимости сделать язык для выполнения простых ежедневных задач, предназначенных для людей, у которых дефицит времени на программирование на C++ и ему подобные традиционные языки.

Частота упоминания разных языков программирования на StackOverflow, крайне известном сайте с вопросами и ответами по программированию. Как мы видим, Python и сегодня, через 30 лет после создания, продолжает наращивать популярность / ©StackOverflow

Исходно сам этот язык не рассматривался ван Россумом в качестве чего-то действительно крупного: он видел в нем просто частный инструмент для написания небольших программ. В 1990 году таких было немного, а операционные системы, текстовые редакторы и тому подобное писались на совсем иных языках старшего поколения.

В 1990-х и нулевых годах ситуация постепенно менялась. Обнаружилось, что для ряда мелких задач Python подходит куда лучше: главное, он больше подходил для решения целого ряда задач бурно развившегося тогда интернета — от простейшей обработки поисковых запросов (у того же Google), до все более и более сложных. Сегодня на нем же работают Dropbox, Pinterest и Reddit — а равно и Instagram, и многое другое.

Кстати, с самого начала идеология Python — опенсорсная, то есть многие ресурсы, использующие его в своей работе, постоянно выкладывают все новые образцы открытого кода, позволяющего даже начинающему программисту на этом языке увидеть, как он работает «у больших игроков».

Сегодня, через 30 лет после выпуска «несерьезного» языка, названного в честь комика, уже очевидно: столь мощный и длительный рост был бы невозможен без наличия у него весомых преимуществ перед традиционными игроками, теми же языками семейства С и многими другими.

Плюсы и минусы: что делает Python таким популярным

Но сила этого языка не только в простом и понятном коде. Он не заставляет указывать тип данных — достаточно просто объявлять переменную, а Python из контекста сам «догадается», что это: целое число, значение с плавающей запятой или что-то еще. Для новичка в программировании это заметно упрощает обучение.

Кроме того, у него огромное количество самых разных библиотек — одно из следствий большой популярности языка, ясной из графика ниже. В анализе больших данных поможет Pandas, технических расчетов — SciPy, с математическими матрицами — NumPy и так далее. В популярных ныне машинном обучении и нейросетях популярность пользуются Scikit-Learn, но список библиотек этого языка много шире перечисленного.

Наконец, ключевой плюс: в сравнении с обычными, компилирующими языками типа С++ Python буквально в разы повышает производительность труда программиста. Число символов в типичной программе на Python — 20-35 процентов от программного кода на языке С++ или Java для аналогичной программы. Это значит не просто меньший ввод с клавиатуры, но и то, что разработчик сможет потратить на написание программы во столько же раз меньше времени — а потом потратит в три-пять раз меньше времени на отладку этой программы. Именно в этом причина постоянного роста популярности языка Python, сегодня ставшего самым упоминаемым в самых разных местах.

Среднее время на решение типовой проблемы в разных языках программирования / ©Prechelt and Garret)

Именно поэтому Google применяет Python в своем поисковике, на том же языке в большой степени основаны YouTube и BitTorrent. И потому же его широко применяют в NASA и научном мире.

Конечно, бесплатных завтраков не бывает. Меньшие трудозатраты, в том числе на подразделение типов данных, значит, что сам Python должен взять на себя функции, которые не пожелал заранее выполнить программист. Программе необходимо зарезервировать достаточно места для каждой переменной, чтобы она работала вне зависимости от ее типа. Использование памяти «с запасом» требует больше работы от компьютера — и при одинаковых задачах программы на Python от двух до десятка раз медленнее обычных.

Вот только в наше время это не критично: ведь этот язык часто применяют для узких задач (вовсе не для написания операционных систем), а современные процессоры очень мощны. Конечный пользователь получит выдачу от Google не за 0,01, а за 0,1 секунды — и на практике даже не заметит разницы, поскольку для него это слишком малый отрезок времени.

Более того: сегодня в мире нет дефицита вычислительных мощностей. Массовое распространение производительных многоядерных процессоров — как центральных, так и графических — означает, что в подавляющем большинстве случаев скорость выполнения прикладной программы не играет заметной роли.

А вот проблема с числом подготовленных программистов вполне реальна — и здесь «минус» Python оказывается его же плюсом: более продолжительная работа программы позволяет писать ее намного быстрее. Значит, для ряда заказчиков программу успеет написать добросовестный программист, а не стандартный производитель «индусского кода». Увы, ведь именно на последних зачастую лежит вина за подавляющее большинство «глюков», с которыми сталкиваются конкретные пользователи.

Почему в случае этого языка стоит учиться на фулстек-разработчика

Традиционно разработку делят на фронтенд и бэкенд. Несколько упрощая, фронтенд отвечает за интерфейс, с которым работает конечный пользователь, а бэкенд — то, что внутри у решения, собственно программный «движок» продукта. Отсюда — бэкенд- и фронтенд-разработчики.

Но конкретно для Python наиболее разумным будет — и в ряде посвященных этой теме курсов, как, например, у Skill Factory по нему это особо подчеркивается — выбрать своим направлением подготовки фулстек-разработчика. Так называют тех, кто должен разбираться во всем объеме проекта, и во фронтенде, и в бэкенде. Это не значит, что такой разработчик обязан знать все и сразу: он может быть джуниором, начинающим, но видеть проект с разных сторон.

Фулстек-разработчик не обязательно должен уметь все, но, определенно, должен разбираться в целом ряде самых разных областей / ©bitdegree.org

Почему это крайне желательно именно для Python? Простой и быстрый в освоении язык программирования часто используется для компактных задач, и возможности четко разделять разработчиков по фронтенду и бэкенду здесь порой нет. К тому же, окончив курсы фулстек-разработчика Python, вы сможете впоследствии свободнее выбирать, что вам действительно ближе — фронтенд или бэкенд.

Наконец, в ряде случаев трудно действительно эффективно программировать тот же интерфейс, не представляя работы «внутренностей» программы. И точно так же может быть не лучшим решением менять «начинку» того или иного сайта без учета нужд пользователей, привыкших к старом интерфейсу. Если такая смена будет проведена чистым «бэкендером», есть риск, что кажущееся ему логичным «улучшение» для конечного пользователя обернется резким падением возможностей продукта.

Любой из нас сталкивался с чем-то похожим: «обновлениями», которые хочется отменить и «вернуть все как было», но уже поздно. Как мы видим, фулстек-разработчик в наши дни — не прихоть, а реальная необходимость. И чем раньше мы ее осознаем, тем быстрее сможем расшить многие «узкие места».

Что конкретно нужно, чтобы начать программировать на Python

Конечно, интернет полон статей «как освоить Python за месяц самому», зачастую авторства, что характерно, индийских программистов. Но надо понимать, что на самом деле качественно подготовиться к написанию программ на нем за такое время невозможно: да и вообще сделать это самому, по самоучителям — откровенно не лучшая идея.

Возьмем типичный качественный курс по этому языку от Skill Factory: он предусматривает 15 месяцев занятий по 10 часов в неделю, 600 часов! Очевидно, повторить нечто подобное за месяц самостоятельно вряд ли получится.

И дело не только в том, что на нормальных курсах вам предложат преподавателей, персональных менторов, тренажеры, домашние задания, интерактивные вебинары и, наконец, учебные проекты постепенно нарастающего уровня сложности. Дело прежде всего в том, что рынок основательно заполнен разработчиками-джуниорами, подготовленными по «индийскому методу». И они сами про себя честно говорят, что выходят на работу доучиваться, а не работать в полную силу с самого начала.

Естественно, работодатели несколько насторожены к таким самоучкам или выпускникам «ударных двухмесячных курсов». Как говорит Игорь Мосягин, R&D-разработчик в Lamoda, сейчас «кандидатам не хватает базовых технических знаний при отборе на вакансию». И откуда бы этим знаниям взяться, если подготовка многих слишком непродолжительна?

Вверху: среднее количество строчек кода, нужное для решения типовых задач в разных языках программирования. Внизу: среднее количество строчек кода в час, которое может написать типичный программист при выполнении типовых задач. Легко видеть, что если по длине кода Пайтон близок к Perl, то с учетом меньшей трудоемкости кода он обходит даже этого конкуретнта / ©Prechelt and Garret

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

Вторая часть курсов занимает девять месяцев. На ней сперва учат бэкенд-разработке на Python и Django, затем — работе с SQL и базами данных, а потом — и фронтенд-разработке на JavaScript. Как мы видим, курсы временами выходят за пределы одного только Python: современному разработчику иногда нужны знания не только его базового языка программирования. В этой части курса нужно научиться верстать адаптивные страницы, создавать интерактивные веб-интерфейсы на JavaScript, использовать библиотеку React для фронтенда, поднимать веб-сервер на Python и понять логику взаимодействия фронтенда с бэкендом.

Затем начинается финальная третья часть — всего 2,5 месяца. На ней разработчика учат уже тестировать создаваемые им — или другими — приложения с помощью специальных фреймворков, создавать и использовать виртуальные машины для исполнения кода. В конце обучения предстоит выполнить десяток мини-проектов и один финальный крупный проект, показывающий, что теперь окончивший курсы способен к полностью самостоятельной работе.

Что должно получиться в итоге? Курсы не просто учат писать код на Python и JavaScript, но и выполнять самый широкий спектр задач — от подъема веб-сервера до созданий интерактивных интерфейсов приложений, сайтов Django и многого другого. В общем, на выходе мы получаем разработчика, умеющего решать широкий спектр задач с использованием самых разных алгоритмических подходов.

Конкретные приложения для Python могут быть самыми разными. Из-за упомянутой выше простоты и высокой производительности труда этот язык сейчас можно встретить и в бэкенде веб-серверов, той самой скрытой от глаз пользователя части интернета. Равным образом часто он используется при создании нейросетей или в научных вычислениях — особенно связанных с Data Science, поскольку создавать программы, способные быстро просеивать большие массивы данных в поисках нужного, на этом языке заметно проще, чем на других.

Чтобы понять огромную роль и широту применения Python в мире вокруг нас, можно просто полистать новости. Вот в Nature Astronomy выходит статья, где астрономы призывают коллег «не пользоваться Python». Почему?

Все дело в СО2: астрономы озаботились тем, что углеродный след человека в их профессии много больше, чем у обычного гражданина. Ведь для своих вычислений они часто используют суперкомпьютеры. Между тем, чем дольше работает та или иная программа, тем больше энергии расходует для ее выполнения компьютер. От этого отдельные ученые начали рекомендовать коллегам писать на C++.

С уверенностью можно сказать, что это так и останется в основном благим пожеланием. И слово «благое» здесь стоит взять в кавычки. Ведь каждый астроном не только непрерывно вносит свой вклад в выработку СО2 нашей цивилизацией — кроме этого, он, как ни странно, еще работает. Начав писать на C++, он успеет написать в два-десять раз меньшее число программ для своих целей — то есть реже сможет выпускать научные статьи и получать гранты на новые исследования. Кажущаяся энергоэффективность C++ непременно обернется падением производительности труда. Поэтому в жизни мы увидим все большее распространение Python во все новые сферы деятельности.

Собственно, именно это уже происходит: за 2015-2020 годы востребованность фулстек-разработчиков на Python выросла (по данным курса Skill Factory) в 2,27 раза, а средняя зарплата разработчиков на этом языке достигла 120 тысяч рублей в месяц даже при опыте работы один-два года. Сегодня главной проблемой остается даже не поиск собственно рабочих мест, а получение соответствующих навыков и знаний: подготовка подобных разработчиков пока происходит медленнее, чем рост рыночного спроса на них.

Оставьте заявку на курс “Профессия веб-разработчик на Python” со скидкой 50% по промокоду SCIENCE. Скидка действует до 15 октября 2020 года.

Нашли опечатку? Выделите фрагмент и нажмите Ctrl + Enter.
Позавчера, 09:23
Сергей Васильев

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

Позавчера, 12:49
Алиса Гаджиева

У погибшего почти 70 миллионов лет назад хищника была трудная жизнь: помимо обычного набора проблем, таких как схватки с сородичами, он страдал от зубной боли.

Вчера, 15:24
Мария Осетрова

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

Позавчера, 09:23
Сергей Васильев

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

2 декабря
Василий Парфенов

Пару недель назад Международная космическая станция разменяла 23-й год своего существования на орбите. И хотя далеко не все ее модули насчитывают и десяти лет эксплуатации, конструкция в целом давно вызывает опасения в надежности. В числе прочего американскую сторону особо волнуют недавние неполадки в российском сегменте. Их считают предвестником серьезного препятствия человеческой экспансии в космос — когда мы лишимся важнейшего форпоста на орбите Земли, а замены ему еще не появится.

1 декабря
Мария Азарова

Более низкие уровни интерлейкина-6 — маркера системного воспаления — выявили у людей, которые считали, что готовы предоставлять больше поддержки окружающим, чем получать взамен.

12 ноября
Мария Азарова

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

25 ноября
НИУ ВШЭ

Мобильные ученые публикуются в индексируемых журналах в два раза чаще. К такому выводу пришли исследователи из НИУ ВШЭ.

Позавчера, 09:23
Сергей Васильев

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

[miniorange_social_login]

Комментарии

19 Комментариев

Для изучения программирования Python неприменим.
    08.12.2020
    -
    0
    +
    Ну, вообще-то языки программирования относятся к искусству программирования примерно как кухонная утварь к поварскому искусству. Хотя, будь моя воля, я бы всех начинающих программистов заставил бы год учиться на программируемых микрокалькуляторах и год на ассемблере. Чтобы каждый байт прочувствовали. А уж потом - на чём угодно. Но все универсальные библиотеки отнёс бы к зловредам. Только корпоративные!
05.11.2020
-
0
+
Зашёл на разные биржи фриланса - пайтоном там и не пахнет, все заказы в основном на рнр, JS, Java/Kotlin. Прошерстил вакансии в разных регионах - мало где нужен пайтон. Вопрос - а нахрена изучать это чудо?
    Осталось только узнать, на каких это крупных биржах вы не нашли заказов на Пайтон. Ссылки бы. А то варится с большим трудом -- язык на сегодня самый популярный в мире.
    +
      ещё комментарии
    06.11.2020
    -
    0
    +
    Проблема в том, что статью писал не программист на Пайтоне или руководитель проектов, а журналист. Пайтон не использует типизацию переменных? Так более половины языков её не используют. Гугл использует Пайтон? И что из этого следует? А Боинг, к примеру, использует Pratt&Whitney. И что, на все кукурузники теперь нужно стремиться ставить такой же двигатель? Если перед Вами стоит задача написать соц сеть, которая будет подтягивать знакомства на второе-третье рукопожатие и интересы друзей, если Вы будете писать Госуслуги, которая будет шерстить десятки баз данных и миллионы таблиц, тогда действительно, без Пайтона будет сложно. Но проблема в том, что базовым образованием Вам тогда не обойтись. Как минимум, теория графов и комбинаторика должны отлетать от зубов. Если же для Вас графы - это что-то из геральдики, то нефик и лезть в это дело. А если у Вас вся база данных состоит из пары таблиц "Номенклатура" и "Контрагенты", то можете хоть на Бейсике писать - результат будет тот же.
Что за бред, автор хочет сказать что интерпретируемый язык работает быстрее компилируемого ? И где это Гугл в поисковике "питон" использует, там совсем другие языки
23.09.2020
-
2
+
Теперь понятно почему сайт голой науки так тормозит ))) - пайтон подкрался незаметно.
Вот честно, этот бедненький программист вообще работал с поисковыми запросами? Наша программа работает в 10 раз медленнее положенного, вообще насрать, пользователи скушают, это для него так работает?
    -
    0
    +
    Интерпретаторы всегда работают медленнее компиляторов. Компиляторы тоже сейчас не просты, а чаще всего компилируют в промежуточный байт-код, который в первый раз запускается долго. Программы тоже могут быть неоптимальны, даже при наличии самых лучших интерпретаторов - компиляторов. Но вообще ваще недовольство характерно. 21 век, в компах мощности - сотни тех компов, что были в 1980-1990-х. Но работа почему то идет медленно и с тормозами. Что ни открой, все "рожается" с великими муками.
    +
      ещё комментарии
      24.09.2020
      -
      0
      +
      Ну а как иначе, вся эта красота и безопасность (которой не было в 90-х) жрет ресурсы как электросвиньи. Но таки анекдот: - Через 20 лет в наручных часах будет больше памяти и мегагерц чем в твоем ПК! - И все это будет нужно чтобы узнать время?
        -
        1
        +
        Вашими бы устами да мед пить. Безопасности как не было, так и нет. Открываешь хакер ежемесячно как сборник стивена кинга. Впечатление такое, что от одной запятой может рухнуть весь электронный мир. Перестал открывать полгода назад. вроде бы пока ничего не изменилось. В чем согласен - ресурсы не просто избыточны, а вообще ниачем, они растрачиваются свиньям под ноги, бездарно и ненужно. Коре5 рекомендуется для мирной работы офисного секретаря. Ноутбук спроектирован так, чтобы через 1-2 года вызвать желание купить новый, с теми же проблемами. Аргументация "за пайтон" странноватая. Ему, мол, легче научиться. Бухать тоже легко научиться, и што? Так бы и сказали, что мягкая типизация у него просто унаследована со времен оных, а дальше решили не идти. Хотя на самом деле статическая типизация надежнее, удобнее в отладке, и меньше ест ресурсов. "Красота никогда не давалась легко". (с) БГ, Нога судьбы

Подтвердить?
Подтвердить?
Не получилось опубликовать!

Вы попытались написать запрещенную фразу или вас забанили за частые нарушения.

Понятно
Лучшие материалы
Войти
Регистрируясь, вы соглашаетесь с правилами использования сайта и даете согласие на обработку персональных данных.
Ваша заявка получена

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

Понятно
Ваше сообщение получено

Мы скоро прочитаем его и свяжемся с Вами по указанной почте. Спасибо за интерес к проекту.

Понятно

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: