- PVSM.RU - https://www.pvsm.ru -

5 причин, по которым Python достаточно мощный для Google

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

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

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

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

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

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

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

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

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

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

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

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

Python быстрый

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

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

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

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

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

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

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

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

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

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

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

Python — это не Python

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

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

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

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

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

Python — это легко

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

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

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

Think about that.

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

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

Выберите Python.

Автор: diana_heng

Источник [26]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/266119

Ссылки в тексте:

[1] 5 Reasons why Python is Powerful Enough for Google: https://www.codefellows.org/blog/5-reasons-why-python-is-powerful-enough-for-google/

[2] вы ищите работу, какой язык вам нужно учить: https://www.codefellows.org/courses/code-401/advanced-software-development-in-python/

[3] выражений: https://docs.python.org/2.7/reference/expressions.html#generator-expressions

[4] функций: https://docs.python.org/2.7/reference/simple_stmts.html#the-yield-statement

[5] collective.transmogrifier: https://pypi.python.org/pypi/collective.transmogrifier

[6] отличная презентация: http://www.dabeaz.com/generators-uk/GeneratorsUK.pdf"

[7] PyPy: http://pypy.org

[8] отлично справляется с этим: http://speed.pypy.org

[9] Numba: http://numba.pydata.org

[10] потрясающее увеличение скорости: http://jakevdp.github.io/blog/2012/08/24/numba-vs-cython/

[11] «как вы используете Python на работе»: https://www.reddit.com/r/Python/comments/14dtjg/how_do_you_use_python_at_work/

[12] Disney использует Python: https://pydanny-event-notes.readthedocs.io/en/latest/socalpiggies/20110526-wda.html

[13] поддержки: http://www.onlamp.com/pub/a/oreilly/python/news/disney_0201.html

[14] изучения своей обширной базы кода: https://github.com/mozilla/dxr

[15] PyPi: https://pypi.python.org/pypi

[16] 300 перечисленных категориях: https://pypi.python.org/pypi?%3Aaction=list_classifiers

[17] почему существует так много разных видов Python: https://www.toptal.com/python/why-are-there-so-many-pythons

[18] Jython: http://www.jython.org

[19] Iron Python: http://ironpython.net

[20] PyObjc: http://pythonhosted.org/pyobjc/#release-information

[21] pyjs: http://pyjs.org

[22] много споров по этому поводу: http://www.linuxjournal.com/article/3882

[23] научные вычисления: http://www.talyarkoni.org/blog/2013/11/18/the-homogenization-of-scientific-computing-or-why-python-is-steadily-eating-other-languages-lunch/

[24] NumPy: http://www.numpy.org

[25] SciPy: https://scipy.org

[26] Источник: https://habrahabr.ru/post/340494/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox