Всё Python-сообщество надеется, что это не отразится на экосистеме негативно. Но одного этого недостаточно. Мы вот, например, считаем важным поддерживать сообщество и, как одно из мероприятий, проводим большую конференцию под названием Moscow Python Conf++. Там сможем обсудить этот и другие важные вопросы. А пока частично познакомлю вас с Программным комитетом. А задал им несколько вопросов, которые как раз и раскроют взгляды на экосистему, и расскажут о людях лучше их профессиональных достижений.

Кроме заглавного вопроса, спрашивал вот что:

  • Что порекомендуешь для управления зависимостями?
  • На чем сейчас лучше всего делать backend?
  • TensorFlow все так же рулит для Machine Learning, или пора изучать что-то новое?
  • Почему твоему джуну надо учить Python, а не JavaScript?
  • Говорят, что в вебе backend уже не нужен. Так ли это?
  • 3.x или 2.7?
  • Чем хороший Python разработчик отличается от плохого?

Спойлер: Провокация «3.x vs 2.7» не удалась, ответ однозначный. Отказываться от бэкенда, кажется, еще рано, а на чем его делать, зависит от задачи — кто бы мог подумать.

Свои ответы вместе с краткой справкой тоже привожу, почему бы и нет.

Григорий Петров
Григорий Петров разработчик широкого профиля, технический евангелист Voximplant и один из организаторов сообщества MoscowPython. Любит Python, JavaScript, C++, сеть, юнит тесты и большие проекты. Когда выступает на конференциях, рассказывает про Кошелек Миллера и почему писать софт — это боль.


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

— Что порекомендуешь для управления зависимостями?
Я за проверенную временем связку pip и virtualenv. Сейчас очень много новых разработок, но я не вижу, чтобы какая-нибудь из них уже достаточно бы стабилизировалась.

— На чем сейчас лучше всего делать backend?
Очень зависит от задачи. Если нужно быстро сделать одностраничный сайт с админкой и не нужны тысячи хитов в секунду, то Django вне конкуренции. Фронтендная часть по вкусу, я предпочитаю VueJS. А вот если нужен API, высокая нагрузка и другие интересные штуки, то ассортимент становится очень широким и нужно смотреть на требования. Как насчет AIOHTTP?

TensorFlow все так же рулит для Machine Learning, или пора изучать что-то новое?
В качестве низкоуровневой библиотеки все так же рулит. Google вливает в него бесконечное количество ресурсов, это многое решает. А вот хорошие обертки и высокоуровневые библиотеки сейчас в ассортименте и можно найти что-то прямо «под себя».

— Одним предложением: почему твоему джуну надо учить Python, а не JavaScript?
Лучшая в мире документация.

— Говорят, что в вебе backend уже не нужен. Так ли это?
Веб вебу рознь. Одностраничную-визитку действительно можно собрать используя Webpack на VueJS, скомпилировать Nuxt и выложить как статику на CloudFlare. А для простой работы с данными отлично подходит GraphQL в сторону Firebase. Для чего-то более серьезного нужен полноценный backend. Я написал «серьезного». Я написал «полноценный». Положите, пожалуйста, ноду обратно на полку. Да, я ее тоже люблю, но еще не время.

— 3.x или 2.7?
Если новый проект — то однозначно 3.x и типы. Если легаси — то надо внимательно смотреть. Не всегда лучшее решение это «давайте все перепишем под последние версии». Действуйте по обстоятельствам.

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

Хороший Python разработчик пишет на Python. А не на «Java в синтаксисе Python» или «PHP в синтаксисе Python». Это ценится коллегами.

Владимир Филонов
Владимир Филонов тоже один из организаторов сообщества MoscowPython. Любит Python, Erlang/Elixir, асинхронность и TDD. Любит копаться во внутренностях библиотек, а потом рассказывать об этом.


— Автор Python больше не руководит разработкой. Сделает это язык лучше или хуже?
Конечно, ответить однозначно сложно. Гвидо всё-таки был главным идеологом языка. С другой стороны, не все его решения были однозначны. Мне кажется, сейчас всё будет зависеть от того, сможем ли мы, то есть всё сообщество Python построить более эффективный процесс принятия стратегических решений.

— Что порекомендуешь для управления зависимостями?
Локально я пользуюсь pip+virtualenvwrapper, но это скорее по инерции. А так я бы рекомендовал pyenv.

— На чем сейчас лучше всего делать backend?
А вот тут зависит от того, для чего этот backend.

Я всегда говорю — язык это всего лишь инструмент.

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

TensorFlow все так же рулит для Machine Learning, или пора изучать что-то новое?
TensorFlow несомненно рулит. Но не вредно начать учить язык Julia =)

— Одним предложением: почему твоему джуну надо учить Python, а не JavaScript?
Если не углубляться в споры об архитектурной зрелости, то я бы сказал, что Python гораздо элегантнее синтаксически и легче воспринимается.

— Говорят, что в вебе backend уже не нужен. Так ли это?
Ну, говорят, что и программисты скоро будут не нужны — ИИ сам будет код писать. Но пока и то, и другое — очень сомнительные концепции.

— 3.x или 2.7?
Только 3.x. 2.7 еще, конечно, много лет будет жить в проектах, но это уже legacy. Поэтому нет смысла создавать что-то новое на тупиковой версии языка.

— Чем хороший Python разработчик отличается от плохого?
Можно ответить и без Python — чем хороший программист отличается от плохого. Мне кажется, главное тут — любопытство. Интерес к тому, как именно работает та или иная технология. Сейчас разработчику предоставляется уйма всего готового — бери и клепай из готовых блоков. И одна из проблем индустрии в том, что многие удовлетворяются этим клепанием, не понимая, как устроен механизм, который они используют. А если надо сделать шаг в сторону от описанных в документации примеров, то начинаются проблемы.

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


Злата Обуховская
Злата Обуховская знакома с экосистемой Python десять лет, за это время попробовала разное: от Data Science до разработки highload-проектов и руководства командами. Преподает в Learn Python, интересуется распределенными системами и построением технических сообществ. Любит поговорить про технологическую культуру, которая должна подпитываться стратегией.


— Автор Python больше не руководит разработкой. Сделает это язык лучше или хуже?
Гвидо много сделал для Python, посвятил этому жизнь. Его труд дал плоды, в экосистеме много талантливых людей с сильным видением, которые готовы двигать язык дальше. Получится ли у них организоваться и удачно выбрать направление — вопрос открытый. Дальнейшее развитие языка раскроет потенциал Python-сообщества, каким бы этот потенциал в результате ни оказался.

— Что порекомендуешь для управления зависимостями?
Интересный проект poetry.

— На чем сейчас лучше всего делать backend?
Зависит от задачи.

  • Для CRUD приложений — это Django.
  • Для нагруженных API, которые работают с несколькими источниками данных — это асинхронные фреймворки Tornado, aiohttp.
  • Для сравнительно несложных API с хорошей нагрузкой подойдет Flask.

TensorFlow все так же рулит для Machine Learning, или пора изучать что-то новое?
Всегда имеет смысл пробовать относительно молодые и пусть даже менее приспособленные для продакшена фреймворки, например, PyTorch. Просто чтобы иметь возможность сравнивать дизайн-решения по работе с данными.

— Одним предложением: почему твоему джуну надо учить Python, а не JavaScript?
Владея Python можно выучить JavaScript, наоборот — сложнее.

— Говорят, что в вебе backend уже не нужен. Так ли это?
Зависит от задачи. Везде, где нужно производить обогащение данных в режиме онлайн, или имеет значение скорость ответа и пропускная способность источника данных, backend нужен.

— 3.x или 2.7?
3.x конечно!

— Чем хороший Python разработчик отличается от плохого?
Хороший разработчик всегда думает, как я могу завтра стать лучше, чем вчера. Это применимо к разработке на любом языке. Уровень знаний и опыта при этом неважен.

Александр Хаёров
Александр Хаёров руководит подразделением разработки Ingram Micro Cloud, любит Python и украдкой программирует на нем. А все что касается публичных облаков, Kubernetes, Istio и DevOps/SRE практики — страсть и область безграничного интереса.


— Автор Python больше не руководит разработкой. Сделает это язык лучше или хуже?
Гвидо высказался о том, что покидает пост BDFL (Benevolent dictator for life) и это безусловно знаковое событие для сообщества. Но я не думаю, что это негативно скажется на развитии языка в целом. Я ожидаю баталии вокруг новых PEP будут такими же бурными. Шоу должно продолжаться.

— Что порекомендуешь для управления зависимостями?
Сейчас однозначно pipenv, а почему и зачем я недавно подробно рассказывал, смотрите видео тут.

— На чем сейчас лучше всего делать backend?
Определенно на том инструменте, который удовлетворяет вашим функциональным требованиям. Python очень хорош для быстрого старта. Для более требовательных к техническим возможностям случаев есть элегантные asyncio и sanic. Django по-прежнему хорош и привлекает богатством батареек и широким сообществом сочувствующих.

TensorFlow все так же рулит для Machine Learning, или пора изучать что-то новое?
Я немного далек от темы машинного обучения, но ориентируясь на разговоры в индустрии, TensorFlow точно в обойме, хотя все чаще упоминается Keras. Theano опять же хорошо оптимизирован для пары CPU/GPU и удобен для числовых задач.

— Одним предложением: почему твоему джуну надо учить Python, а не JavaScript?
Не JavaScript единым…

— Говорят, что в вебе backend уже не нужен. Так ли это?
Конечно, уже не нужен, только никому об этом не говорите.

— 3.x или 2.7?
Тут нет сомнений: версия 3.6.6 — венец творения. Просто поглядите на change log 3.6 и все встает на места.

— Чем хороший Python разработчик отличается от плохого?
Чистой кармой и прагматичным подходом к реализации поставленных задач, фокусом на бизнес-логике и хлестким юмором.

Иван Цыганов
Иван Цыганов программирует на Python, выступает на конференциях для программистов и тестировщиков. Готовил крупнейшую в России конференцию по информационной безопасности — PHDays. Медленно, но верно собирает себе по-настоящему умный дом.


— Автор Python больше не руководит разработкой. Сделает это язык лучше или хуже?
Язык Python уже не молод, все процессы давным-давно отлажены и отлично работают. Я думаю, что принципиально ничего не изменится, ведь у руля остаются проверенные люди. В любом случае, Гвидо наблюдает за процессом и если начнет твориться безумие — он обязательно вмешается. По крайней мере, я в это верю.

— Что порекомендуешь для управления зависимостями?
Я привык к pip, мне его хватает.

— На чем сейчас лучше всего делать backend?
Если нужно максимально быстро и легко получить работающий прототип — Django, админка из коробки. Потом к нему прикручиваем Django REST Framework и переделываем UI по-человечески.
А в остальных случаях — все зависит от задачи.

TensorFlow все так же рулит для Machine Learning, или пора изучать что-то новое?
Если тема Machine Learning интересна — полезно следить за всем и пробовать все новое! У меня, к сожалению, подходящих задач не попадалось, поэтому я несколько далек от этой области.

— Одним предложением: почему твоему джуну надо учить Python, а не JavaScript?
Потому что моему джуну придется писать на Python

— Говорят, что в вебе backend уже не нужен. Так ли это?
Как так backend не нужен?! Это веб нам такой не нужен!

— 3.x или 2.7?
Только 3, ведь там все самое вкусное. Да и пора бы уже попрощаться со старичком 2.7, он сделал свое дело.

— Чем хороший Python разработчик отличается от плохого?
Стремлением изучать новое.

На этой оптимистичной ноте, приглашаю на Moscow Python Conf++ 22 и 23 октября. В программе и новое, и любопытное, и про язык, и про экосистему, и про Machine Learning — обо всем по порядку скоро расскажу, а список принятых докладов можно посмотреть тут.

Комментарии (9)


  1. KvanTTT
    06.10.2018 15:48
    +3

    — Одним предложением: почему твоему джуну надо учить Python, а не JavaScript?

    Почему только такой выбор? Ответ "ни то ни другое" подойдет?


    1. eyeofhell Автор
      06.10.2018 17:42
      -3

      Ключевое слово «джун». Если ты начинающий, ты очень не хочешь учить китайский и немецкий одновременно, trust me :)


      1. AngReload
        06.10.2018 20:04

        Помимо питона и яваскрипта есть и другие языки, вот к чему претензия.


        1. eyeofhell Автор
          06.10.2018 23:11
          -1

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


  1. worldmind
    06.10.2018 19:03

    Добавьте ссылку в пост change log 3.6


    1. eyeofhell Автор
      06.10.2018 19:08

      done


      1. thatsme
        06.10.2018 19:30

        В этом changelog один момент вывел меня из равновесия:


        >>> width = 10
        >>> precision = 4
        >>> value = decimal.Decimal("12.34567")
        >>> f"result: {value:{width}.{precision}}"  # nested fields
        'result:      12.35'

        Обратите внимание на precision. 4! А при выводе, округление до двух знаков. Это так задумано или ошибка в changelog?


        1. Senpos
          06.10.2018 21:31

          docs.python.org/3/library/string.html#format-string-syntax

          The precision is a decimal number indicating how many digits should be displayed after the decimal point for a floating point value formatted with 'f' and 'F', or before and after the decimal point for a floating point value formatted with 'g' or 'G'.


          Если в код из примера после {precision} добавить f — получим 4 знака после запятой:
          >>> f"result: {value:{width}.{precision}f}"
          'result:    12.3457'
          


          1. thatsme
            07.10.2018 07:00

            Ясно. Спасибо.