Вы готовитесь начать новый проект. Какой язык вам выбрать для разработки?
Или, если переформулировать данный вопрос: вы ищите работу, какой язык вам нужно учить?
По названию данной статьи вы можете догадаться, что правильным ответом я считаю 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)
beduin01
19.10.2017 14:56+1Go явно не конкурент Python. Python простой и понятный. Go раздутый и непродуманный. Если в Python какие-то вещи делаются в одну строчку кода, то на Go нужно какую-то лапшу писать которая будет приводить только к лишним ошибкам.
Единственный минус Python — это отсутствие типизации. В этом плане в Dart поступили очень правильно введя в Dart 2 strong mode с обязательной явно типизацией.maxpy
20.10.2017 08:22На счет отсутствия типизации не согласен. Начиная с Python 3.6 есть встроенная возможность определять типы docs.python.org/3/whatsnew/3.6.html.
elixirkmc
20.10.2017 10:53Но ведь это всего лишь аннотация для среды разработки, к статической типизации не имеет отношения.
devalone
20.10.2017 13:49А в чём смысл? Вот если б была возможность указать тип и python приводил бы переменную к этому типу либо кидал эксепшн(если не может привести), но при этом тип можно было не указывать и он работал бы также, как и раньше, тогда было бы круто.
erastov
20.10.2017 10:53Если уже докапываться до Ваших слов, то типизация у него присутствует) только вот динамическая
Simoh
19.10.2017 15:23Что за агитация Python? Лучше бы привели сравнения с другими языками для разных задач. А так получается, что на Python можно написать почти всё, но где реальный выигрыш (не учитывая единообразного синтаксиса)? Многие языки имеют расширения в виде фреймворков и библиотек, которые позволяют делать проекты, которые не предусматривались для реализации на данном языке. Цифры и факты, пожалуйста.
Free_ze
19.10.2017 16:13Даешь фулл-стек инженеров! От уайтборда с выкладками до продакшн-кода!
Если серьзно, то Python хороший кандидат, как «язык по-дефолту», но программистов и ученых отличает нечто большее, чем инструменты.
KraT_by
19.10.2017 16:29А причём здесь вообще гугл? В статье просто рассказывает, почему Питон хорош.
IL_Agent
20.10.2017 00:33«Автор считает, что Python на самом деле не язык, это описание языка.»
Эта фраза абсурдна и автор ничего такого иам не считает.
mdErrDX5341
20.10.2017 10:53Python хорош… да.
Но тут как-то написали статью… где автор писал что не мог найти работу.
Удаленку можно не предлагать, без опыта работы сложно устроиться
Last_cat_in_universe
20.10.2017 10:53В такие статьи стоит добавлять хотя бы чуточку критики и описания границ применимости языка, а то читается всё это в стиле «Не хотите ли Вы поговорить о
БогеPython'е, молодой человек?»
john999
20.10.2017 10:54Заголовок можно принять даже за "5 причин, по которым компания Google открестилась от Go и выбрала Python".
Следовало более развёрнуто перевести заголовок, хотя бы как — "5 причин, почему Python входит в список топ-языков программирования, согласно статистике запросов в Google"
Иначе смысл заголовка совсем не понятен.
devalone
20.10.2017 13:41Бред какой-то, каждый язык для своих задач.
Python эффективный
…
Python предоставляет генераторы как выражений, так и функций.
Генераторы безусловно удобная штука, но это не значит, что без них обязательно нужно создавать лишние списки, расходующие память, на C++ тоже можно создавать вектор, а можно итератор.
Meklon
20.10.2017 15:51Субъективно, меня как не профессионального программиста Python очень радует. Он достаточно прост и решает мои текущие научные задачи. Быстродействие для научных задач опять же часто не столь критично. Я образцы не успею с такой скоростью генерировать на анализ. Если сэмплы пару недель создаются, то неважно 10 секунд или 4 минуты идет обработка. Системы реального времени у нас не требуются. Зато какая красота с визуализацией данных. Excel как страшный сон вспоминаю. Хотя иногда удобнее что-то вроде GraphPad Prism использовать для анализа.
mdErrDX5341
20.10.2017 22:09Я могу согласится что python классный язык, он как говорится на батарейках, на нем можно быстро сделать решение, даже иногда удобно пользоваться интерактивным режимом…
Я наверное со многим соглашусь из статьи, единственное что я хотел бы подчеркнуть, пока python еще в России менее популярен в плане работы(Java, C#, php, 1C более популярны), без должного опыта не получится найти себе работу… это относится к начинающим программистам без должного опыта. Если проект для себя или на развитие то я сам бы выбрал Python, так как он достаточно прост для изучения, достаточно гибок, достаточно прямолинеен, достаточно много из коробки…
physics
20.10.2017 23:13Если бы я не пользовался Jython-ом в далеком 2007 году, то меня бы не убедила эта статья… Использовали для автоматизации jump-инга существующих мобильных игр на разные версии мобилок…
dionket
20.10.2017 23:13Простота и скорость написания на Python просто отличные, но скорость исполнения кода часто здорово огорчает, как и потребление памяти. Результаты методов ускорения весьма далеки от скорости чистого C. Python в комбинации с С великолепен для широкого круга задач.
Kuorell
20.10.2017 23:14Python, это когда половина библиотек написана не на Python и собирается исключительно под парой конкретных дистрибутивов линукса и то, нередко, вручную.
Python это когда return идет до условия.
Python это когда неявные мутации — норма.
Python это когда при виде переменной приходится гадать, где ее объявили (не всегда везет читать модульный код)
Python это модули, зависимые от дерева файловой системы
— Кстати аналог генераторов (streams + input iterators) есть, кажется в любом популярном язык
BOOTor
21.10.2017 08:04С последним разделом полностью соглашаюсь — сам пользую для автоматизации инженерных расчетов и обработки результатов исследований.
Но извините, не удержусь — просто вспомнил боян:
Что делать язык программирование мощным?
Я твой дом труба шатал :)
mrobespierre
[sarcasm] Да-да, Python идеально подходит для Google, и именно поэтому Google вбухали кучу денег в Golang и даже написали транслятор исходников Python->Golang (Grampy кажется). [/sarcasm]
datacompboy
Кто сказал что питон подходит _для всего_? :)
Есть место питону, есть жаве, есть плюсам, есть го, есть жаваскрипту…
webschik
github.com/google/grumpy
Phoen
Эмм, а зачем оно? В каких задачах ожидается выигрыш (как в сравнении с просто python, так и с c python)?
sshikov
Да дело даже не в этом. Вы — не Google. Все выводы, основанные на том, что какой-то инструмент подходит для Google, как правило не верны, если вы хотя бы не Яндекс. Я уж не говорю о том, что в Google множество проектов разного масштаба и сложности.