Интенсивное использование Python в Google [закрыто]

185

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

Рон Чан
источник
22
Это должно быть сообщество вики
AutomatedTester
72
Алекс Мартелли скоро будет принят за принятый ответ ...
ChristopheD
4
На самом деле, я думаю, что на этот ответ можно дать объективный ответ (где-то должно быть заявление от Google, почему они его используют;))
Феликс Клинг,
15
@nomemory, «тяжелый» здесь вполне корректное прилагательное (конечно, вам нужно иметь возможность посмотреть на нашу кодовую базу для подтверждения - сколько Python против Java против C ++ и т. д.), но я могу посмотреть на это и вносить свой вклад в это, в основном Python, чаще всего каждый день ;-). И вопрос не во всей ИТ-индустрии, а конкретно в Google, компании с 20 000 сотрудников (включая непрограммистов), где некоторые из нас лучше «имеют общее представление», поскольку формируют это мнение и действуют на основе это основные части нашей работы ;-). Итак, я голосую за открытие.
Алекс Мартелли
7
@nomemory, на конференциях по Python всегда присутствуют верные рекрутеры Oracle, поэтому я с удивлением узнаю, что Python «не существует» в их кодовой базе (если так, то рекрутеры лгут, а также тратят свое время и Pythonistas). ;-). И вообще, как на самом деле конкурируют Oracle и Google? -)
Алекс Мартелли

Ответы:

286

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

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

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

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

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

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

Алекс Мартелли
источник
@ Алекс, возможно, я не правильно понял, но, похоже, Google хотел, чтобы их среда была открыта для инженеров (особенно исследователей), которые провели годы в университете и вышли только на C или C ++ (так как все начинали с этих языков, и большинство из них заканчивали с этим тоже). Здесь Python является сильным соперником и предоставляет интерфейс для огромной библиотеки C / C ++.
Рамиз Уддин
8
Путешествие во времени FTW: web.archive.org/web/20091222094118/http://labs.google.com/…
Джесс Телфорд
Потрясающие идеи! Может помочь будущим гуглерам
kmario23
3
Одним из отрывков, которые я получил, прочитав превосходную книгу Леви «В« Plex »», является то, как Python попал в Google (раньше он назывался Google - потом «backrub»). Ларри Пейдж написал «паучок» для веб-поиска в совершенно новой бета-версии Java 1.0, и он был настолько сломан, что его сосед по комнате в общежитии помог ему, переписав его на более устойчивом, надежном и продуктивном языке ... Python. Забавно думать, что без этого «паука» Google, возможно, никогда бы не появился ...
Алекс Мартелли
34

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

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

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


Не стоит забывать, что Гвидо ван Россум, создатель Python, работал на Google с 2005-2012 года;)


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

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

Felix Kling
источник
Так это вопрос вкуса или конкурентного преимущества?
Андрей Чобану
4
@nomemory: Может и то и другое? Он соответствует инженерному процессу (вкусу) и благодаря этому может дать им преимущество, если они могут закончить свою продукцию раньше.
Феликс Клинг
1
Десятки инженеров используют Python? Для такой большой компании, как Google, это вряд ли убедительный случай.
Джейсон Бейкер
28

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

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

datentyp
источник
20

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

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

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

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

Уэйн Вернер
источник
2
Проклятый редизайн сайта! Ну, у него есть альтернативная ссылка, так что пошли.
Уэйн Вернер
11
«Вы действительно собираетесь заметить разницу между 0,5 секунды и 0,005 секунды?» Вы не работаете в основном поиске Google, YouTube или Gmail?
JWG
5
Аппаратное обеспечение не дешево, когда вам нужно столько, сколько Google.
NGRhodes
5
Отличительной особенностью Python является то, что, когда у вас есть существенное различие в производительности (например, ~ 495 мс), вы можете подключить некоторый код C / C ++. Python позволяет быстро разрабатывать и эффективно оптимизировать.
Тревор
3
Разница между 0,5 и 0,005 секундами заключается в том, что одна заметна, а другая нет.
Чарли Шлиссер