Тяжелое использование Python в Google

Google сильно использует Python, это просто вопрос вкуса или дает им конкурентное преимущество?

Ответ 1

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

Действительно, есть одно, по-видимому, привлекательное объяснение, которое я могу определенно отрицать: это не то, что Google использует Python, потому что он использует так много выдающихся Pythonistas - скорее, большинство "видных Pythonista" googlers присоединились к Google, по крайней мере частично, потому что мы знали о протуберанцах Питона (возможны исключения: Питер Норвиг и Джереми Хилтон, но исторически выбор Google на Python предшествовал даже им).

Именно поэтому я сначала заинтересовался (мой издатель дал мне знать о большом количестве копий моей книги, которую покупал Google) - сначала я подумал об этом как о хорошей возможности продать мою внештатную консультационную услугу..-), как позже мне удалось убедить Гвидо присоединиться к нам и, я считаю, часть мотивации для таких питонистов, как Грег Штайн, Уэсли Чун, Фредрик Лунд, Томас Воутерс, Коллин Уинтерс, Джеффри Яскин,...

Все началось, я считаю, потому что самые ранние Googlers (Сергей, Ларри, Крейг,...) сделали хорошее инженерное решение: "Python, где мы можем, С++, где мы должны" - они использовали (a подмножество) С++ для частей программного стека, где очень низкая латентность и/или жесткий контроль над памятью имеют решающее значение, и Python, позволяющий более быструю доставку и обслуживание программ для других частей. В то время, в конце 90-х, выбор для последней роли был по существу между Python и Perl: другие языки сценариев были либо незрелыми (я не думаю, что Ruby был вокруг еще, например), либо имел другие проблемы и ограничения. Perl был более зрелым (особенно с точки зрения его экосистемы доступных надстроек через CPAN), но Python считался более читаемым и поддерживаемым, а взаимодействие с библиотеками С++ (через SWIG) было проще.

Java появилась позже, охватывая промежуточную нишу - и совсем недавно, конечно, Go был разработан (хотя я не думаю, что в нем еще много работы по производству, поскольку оно все еще развивается и созревает). Некоторые специализированные языки, такие как sawzall, также находятся в миксе для очень специфических задач, и, конечно же, Javascript очень важен для работы на стороне браузера.

Другие языки, в том числе те, которые Грег упоминает в "06", либо "случайны", либо используются для других конкретных задач (например, Objective C для клиентов на iPhone или Mac) - например, когда Google нанял первые системные администраторы, эти сотрудники неизбежно приходили с очень сильным мастерством Perl и Bash, и часто использовали любой из этих языков для разработки сложной внутренней системы; частое перекодирование в Python (для упрощения развертывания и сопровождения). Другие (например, С#), возможно, были в миксе временно из-за приобретений, но, опять же, перекодировка на одном из "основных языков Google" всегда является довольно высоким приоритетом (в случае С# перекодировка обычно будет в основном на Java, поскольку два языка относятся к аналогичным областям с точки зрения уровней абстракции).

Ответ 2

Я не читал всю статью, и я не знаю, насколько это представительно, но, возможно, это отвечает на ваш вопрос: Python в Google.

Хорошо, я читал большую часть этого, к сожалению, это не так много понимания, но я думаю, что это все еще интересная статья. Возможно, самое главное:

В Google, python является одним из трех "официальных языков" наряду с С++ и Java. Официальный здесь означает, что Googlers разрешено развернуть эти языки на производственные услуги. (Внутри Google люди используют множество технологий, включая PHP, С#, Ruby и Perl). Python хорошо подходит для инженерного процесса в Google. Типичный проект в Google состоит из небольшой команды (3 человека) и короткой продолжительности (3 месяца).


Не забывайте, что Guido van Rossum создатель Python работал в Google с 2005 по 2012 год;)


Я также нашел эту цитату, но я не могу ее проверить:

"Python был важной частью Google с самого начала и остается настолько, что система растет и развивается. Сегодня десятки инженеров Google используют Python, и мы ищем больше людей с навыками на этом языке"
- Питер Норвиг, директор по качеству поиска в Google

Ответ 3

Я читал о Unladen-Swallow - проекте, целью которого является повышение производительности CPython. Во время просмотра своего дискуссионного форума я наткнулся на эту дискуссию, где Collin Winter (сотрудник Google и основной разработчик Python) отвечает на утверждение о том, что Сотрудникам Google не рекомендуется использовать Python для новых проектов:

Ну, простой здравый смысл собирается ограничить применимость Python, когда работает в масштабе Google: это не так же быстро, как Java или С++, потоки отстой, использование памяти выше и т.д. Одно из конструктивных ограничений, с которыми мы сталкиваемся при проектировании любой новой системы, "что происходит, когда нагрузка растет на 10x или 100x? Что произойдет, если целая планета думает, что ваша новая услуга это потрясающе?" Любая технология, которая что затрудняет это ограничение - и я думаю, что Python попадает в это категории - следует обескуражить, если у него нет особого случая сделанный в его пользу по другим причинам. Вы должны балансировать сильные стороны Python с его недостатками: ваши инженеры может быть более продуктивным с использованием Python, но если им приходится больше работать производительность/масштабирование на уровне платформы ограничения по мере увеличения объема, вы выходите вперед? и др.

Ответ 4

Если вы подписываетесь на идею Павла Грэма о том, что сжатость == власть (т.е. если я могу написать код на языке X в 10 строках, чтобы выполнить что вы взяли 100 строк языка Y, мой язык более мощный)

В наши дни аппаратное обеспечение дешево, мясопродукты дороги. Я знаю, что в Python я могу писать намного больше, быстрее, лучше и яснее, чем на других языках, просто потому, что батареи обычно включаются. Конечно, это может быть медленнее, но вы действительно заметите разницу между 0,55 секунд и 0,0005 секунд?

В более реалистичном примере, если разработчики Google напишут программу на Python, где им никогда не придется беспокоиться о сборке мусора, а компания X пишет программу на С++, и они тратят 10% своего времени на отслеживание ошибок, связанных с распределение памяти, угадать, кто сделал быстрее - даже если магазину С++ удается записать остальную часть своего кода так же быстро.

Итак, да, я бы сказал, что это конкурентное преимущество для кода на Python.