Перевод статьи 5 Reasons why Python is Powerful Enough for Google

Вы готовитесь начать новый проект. Какой язык вам выбрать для разработки?


Или, если переформулировать данный вопрос: вы ищите работу, какой язык вам нужно учить?

По названию данной статьи вы можете догадаться, что правильным ответом я считаю Python. Но почему?

Ответ заключается в том, что Python — это мощный язык. Но что это значит? Что делать язык программирование мощным?

Python эффективный


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

Python предоставляет генераторы как выражений, так и функций.

Генераторы допускают итеративную обработку вещей, по одному элементу за раз. Это не кажется каким-то фантастическим, пока вы не начнете понимать, что для нормальной итеративной обработки списка требуется список. Список занимает память. Очень большой список занимает много памяти.

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

Я часто сталкиваюсь с необходимостью переноса данных с одного сайта на другой. Некоторые из сайтов, которые я переношу, имеют десятилетние истории и гигабайты данных. Используя средства миграции на основе генератора collective.transmogrifier, я могу считывать данные сайта, производить сложные, взаимозависимые обновления данных, в то время, как он обрабатывает, создает и сохраняет объекты на новом сайте в постоянной памяти.

Для приложений, в которых вы имеете дело еще большими наборами данных, такой инструмент может быть незаменимым. У Дэвида Бизли есть отличная презентация, в которой содержатся некоторые довольно убедительные примеры использования генераторов для системных задач. Взгляните и вы увидите, как разыграется ваше воображение!

Python быстрый


Ладно, ладно. Я слышу фырканье. Ведь Python — это интерпретируемый язык, не так ли? Разве они не медленные?

Дело в том, что за последние годы была проделана изумительная работа, чтобы улучшить производительность  Python.

Проект PyPy направлен на ускорение работы Python в целом (и отлично справляется с этим).

Numba может предложить потрясающее увеличение скорости, просто добавив декораторов в код, который у вас уже есть.

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

Python широко распространен


Python существует уже довольно давно и используется почти во всех областях деятельности. Reddit thread создал опрос «как вы используете Python на работе», в ответах задачи, начиная от системной автоматизации, тестирования и ETL до игр, CGI и веб-разработки.

Disney использует Python для поддержки своего творческого процесса.

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

Проверка PyPi, каталога общедоступных пакетов для Python, показывает 40 тысяч дополнений, доступных почти в 300 перечисленных категориях.

В принципе, если вы хотите что-то сделать на Python, есть довольно хорошие шансы, что у кого-то это уже есть, и вам не нужно начинать с нуля.

Python — это не Python


Недавно я читал пост о том, почему существует так много разных видов Python.

Автор считает, что Python на самом деле не язык, это описание языка. Это значит, что вы можете реализовать Python любым способом.

Python, с которым большинство людей взаимодействует, это CPython, реализация, написанная на C. Одна из особенностей CPython заключается в том, что она предлагает чистую интеграцию с кодом, написанным на C, поэтому реализация оберток вокруг библиотек C относительно проста.

Но есть и Jython, который предлагает глубокую интеграцию с Java-кодом, Iron Python для работы с C# и .NET-кодом, PyObjc для написания кода на Python с использованием инструментальных средств ObjectiveC и даже pyjs, который предлагает скомпилировать ваш Python для JavaScript.

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

Python — это легко


У Python репутация легкого для изучения языка. Синтаксис языка предназначен для чтения. Есть много споров по этому поводу, но факты говорят сами за себя.

Значительная часть популярности Python сосредоточена в таких областях, как научные вычисления. Люди, работающие в этой области, в первую очередь являются учеными и лишь потом программистами (если вообще ими являются).

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

Think about that.

Если вы создаете новый проект и работаете в какой-то специализированной области, кому вы хотите доверить разбираться с тем, какие проблемы следует решать? Конечно, вы можете нанять специалистов данной предметной области и разработчиков (и в конечном итоге, они вам понадобится). Вы даже можете научить их говорить друг с другом (и в конечном итоге, вам это тоже понадобится). Но если вы только начинаете, что вам лучше всего сделать?

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

Выберите Python.

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


  1. mrobespierre
    19.10.2017 12:52

    [sarcasm] Да-да, Python идеально подходит для Google, и именно поэтому Google вбухали кучу денег в Golang и даже написали транслятор исходников Python->Golang (Grampy кажется). [/sarcasm]


    1. datacompboy
      19.10.2017 13:01

      Кто сказал что питон подходит _для всего_? :)

      Есть место питону, есть жаве, есть плюсам, есть го, есть жаваскрипту…


    1. webschik
      19.10.2017 14:42

      1. Phoen
        20.10.2017 11:24

        Эмм, а зачем оно? В каких задачах ожидается выигрыш (как в сравнении с просто python, так и с c python)?


    1. sshikov
      19.10.2017 19:56

      Да дело даже не в этом. Вы — не Google. Все выводы, основанные на том, что какой-то инструмент подходит для Google, как правило не верны, если вы хотя бы не Яндекс. Я уж не говорю о том, что в Google множество проектов разного масштаба и сложности.


  1. beduin01
    19.10.2017 14:56
    +1

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

    Единственный минус Python — это отсутствие типизации. В этом плане в Dart поступили очень правильно введя в Dart 2 strong mode с обязательной явно типизацией.


    1. teralitr
      19.10.2017 16:28

      Cython глянь)


    1. maxpy
      20.10.2017 08:22

      На счет отсутствия типизации не согласен. Начиная с Python 3.6 есть встроенная возможность определять типы docs.python.org/3/whatsnew/3.6.html.


      1. elixirkmc
        20.10.2017 10:53

        Но ведь это всего лишь аннотация для среды разработки, к статической типизации не имеет отношения.


        1. maxpy
          20.10.2017 13:28

          www.python.org/dev/peps/pep-0484
          Надеюсь так будет понятней


      1. devalone
        20.10.2017 13:49

        А в чём смысл? Вот если б была возможность указать тип и python приводил бы переменную к этому типу либо кидал эксепшн(если не может привести), но при этом тип можно было не указывать и он работал бы также, как и раньше, тогда было бы круто.


    1. erastov
      20.10.2017 10:53

      Если уже докапываться до Ваших слов, то типизация у него присутствует) только вот динамическая


  1. Simoh
    19.10.2017 15:23

    Что за агитация Python? Лучше бы привели сравнения с другими языками для разных задач. А так получается, что на Python можно написать почти всё, но где реальный выигрыш (не учитывая единообразного синтаксиса)? Многие языки имеют расширения в виде фреймворков и библиотек, которые позволяют делать проекты, которые не предусматривались для реализации на данном языке. Цифры и факты, пожалуйста.


    1. Sir_Alex
      19.10.2017 16:28

      Просто переводная статья для «вхождения» пользователя в сообщество.


  1. Free_ze
    19.10.2017 16:13

    Даешь фулл-стек инженеров! От уайтборда с выкладками до продакшн-кода!

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


  1. KraT_by
    19.10.2017 16:29

    А причём здесь вообще гугл? В статье просто рассказывает, почему Питон хорош.


  1. IL_Agent
    20.10.2017 00:33

    «Автор считает, что Python на самом деле не язык, это описание языка.»
    Эта фраза абсурдна и автор ничего такого иам не считает.


  1. mdErrDX5341
    20.10.2017 10:53

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


  1. Last_cat_in_universe
    20.10.2017 10:53

    В такие статьи стоит добавлять хотя бы чуточку критики и описания границ применимости языка, а то читается всё это в стиле «Не хотите ли Вы поговорить о БогеPython'е, молодой человек?»


  1. john999
    20.10.2017 10:54

    Заголовок можно принять даже за "5 причин, по которым компания Google открестилась от Go и выбрала Python".
    Следовало более развёрнуто перевести заголовок, хотя бы как — "5 причин, почему Python входит в список топ-языков программирования, согласно статистике запросов в Google"
    Иначе смысл заголовка совсем не понятен.


  1. devalone
    20.10.2017 13:41

    Бред какой-то, каждый язык для своих задач.

    Python эффективный

    Python предоставляет генераторы как выражений, так и функций.

    Генераторы безусловно удобная штука, но это не значит, что без них обязательно нужно создавать лишние списки, расходующие память, на C++ тоже можно создавать вектор, а можно итератор.


  1. Meklon
    20.10.2017 15:51

    Субъективно, меня как не профессионального программиста Python очень радует. Он достаточно прост и решает мои текущие научные задачи. Быстродействие для научных задач опять же часто не столь критично. Я образцы не успею с такой скоростью генерировать на анализ. Если сэмплы пару недель создаются, то неважно 10 секунд или 4 минуты идет обработка. Системы реального времени у нас не требуются. Зато какая красота с визуализацией данных. Excel как страшный сон вспоминаю. Хотя иногда удобнее что-то вроде GraphPad Prism использовать для анализа.


  1. mdErrDX5341
    20.10.2017 22:09

    Я могу согласится что python классный язык, он как говорится на батарейках, на нем можно быстро сделать решение, даже иногда удобно пользоваться интерактивным режимом…
    Я наверное со многим соглашусь из статьи, единственное что я хотел бы подчеркнуть, пока python еще в России менее популярен в плане работы(Java, C#, php, 1C более популярны), без должного опыта не получится найти себе работу… это относится к начинающим программистам без должного опыта. Если проект для себя или на развитие то я сам бы выбрал Python, так как он достаточно прост для изучения, достаточно гибок, достаточно прямолинеен, достаточно много из коробки…


  1. physics
    20.10.2017 23:13

    Если бы я не пользовался Jython-ом в далеком 2007 году, то меня бы не убедила эта статья… Использовали для автоматизации jump-инга существующих мобильных игр на разные версии мобилок…


  1. dionket
    20.10.2017 23:13

    Простота и скорость написания на Python просто отличные, но скорость исполнения кода часто здорово огорчает, как и потребление памяти. Результаты методов ускорения весьма далеки от скорости чистого C. Python в комбинации с С великолепен для широкого круга задач.


  1. workbohdan
    20.10.2017 23:13

    Ссылка на презентацию не работает. Можете поделиться рабочей ссылкой?


    1. diana_heng Автор
      20.10.2017 23:13

      Ссылка исправлена)


  1. Kuorell
    20.10.2017 23:14

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

    Python это когда return идет до условия.

    Python это когда неявные мутации — норма.

    Python это когда при виде переменной приходится гадать, где ее объявили (не всегда везет читать модульный код)

    Python это модули, зависимые от дерева файловой системы

    — Кстати аналог генераторов (streams + input iterators) есть, кажется в любом популярном язык


  1. BOOTor
    21.10.2017 08:04

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

    Что делать язык программирование мощным?

    Я твой дом труба шатал :)