Алекс Мартелли скоро будет принят за принятый ответ ...
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 ++.
Одним из отрывков, которые я получил, прочитав превосходную книгу Леви «В« 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
Так это вопрос вкуса или конкурентного преимущества?
Андрей Чобану
4
@nomemory: Может и то и другое? Он соответствует инженерному процессу (вкусу) и благодаря этому может дать им преимущество, если они могут закончить свою продукцию раньше.
Феликс Клинг
1
Десятки инженеров используют Python? Для такой большой компании, как Google, это вряд ли убедительный случай.
Джейсон Бейкер
28
Я читал о Unladen-Swallow , проекте, который направлен на повышение производительности CPython. Просматривая их доску обсуждений, я наткнулся на это обсуждение , где Коллин Винтер (сотрудник Google и основной разработчик Python) отвечает на утверждение, что сотрудникам Google не рекомендуется использовать Python для новых проектов :
Что ж, простой здравый смысл ограничивает применимость Python при работе в масштабе Google: он не такой быстрый, как Java или C ++, многопоточность - отстой, использование памяти выше и т. Д. Одно из ограничений проектирования, с которым мы сталкиваемся при разработке любой новой системы, «Что произойдет, когда нагрузка возрастет в 10 или 100 раз? Что произойдет, если вся планета сочтет ваш новый сервис потрясающим?» Любая технология, которая затрудняет выполнение этого ограничения - и я думаю, что Python попадает в эту категорию - должнаобескуражить, если у него нет очень веских аргументов в пользу других. Вы должны уравновесить сильные стороны Python с его слабыми сторонами: ваши инженеры могут быть более продуктивными, используя Python, но если им придется обходить больше ограничений производительности / масштабирования на уровне платформы при увеличении объема, вы выходите вперед? и т.п.
Если вы согласны с идеей Пола Грэма, что краткость == сила (т.е. если я могу написать код на языке X в 10 строк, чтобы выполнить то, что вы взяли за 100 строк языка Y, мой язык более мощный)
В наши дни оборудование стоит недорого, мясо стоит дорого . Я знаю, что я могу писать намного больше, быстрее, лучше и понятнее на Python, чем я могу на других языках, просто потому, что батареи, как правило, включены. Конечно, это может быть медленнее, но вы действительно заметите разницу между 0,05 секунды и 0,005 секунды?
В более реальном примере: если разработчики Google пишут программу на Python, в которой им никогда не нужно беспокоиться о сборке мусора, а компания X пишет программу на C ++, и они тратят 10% своего времени на поиск ошибок, связанных с распределением памяти, угадайте, кто сделал быстрее - даже если магазин C ++ сможет написать остальную часть своего кода так же быстро.
Так что да, я бы сказал, что это конкурентное преимущество для кода на Python.
Проклятый редизайн сайта! Ну, у него есть альтернативная ссылка, так что пошли.
Уэйн Вернер
11
«Вы действительно собираетесь заметить разницу между 0,5 секунды и 0,005 секунды?» Вы не работаете в основном поиске Google, YouTube или Gmail?
JWG
5
Аппаратное обеспечение не дешево, когда вам нужно столько, сколько Google.
NGRhodes
5
Отличительной особенностью Python является то, что, когда у вас есть существенное различие в производительности (например, ~ 495 мс), вы можете подключить некоторый код C / C ++. Python позволяет быстро разрабатывать и эффективно оптимизировать.
Тревор
3
Разница между 0,5 и 0,005 секундами заключается в том, что одна заметна, а другая нет.
Ответы:
Я не могу дать однозначного ответа, потому что к тому времени, когда я брал интервью у 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, поскольку два языка обращаются к одинаковым областям с точки зрения уровней абстракции).
источник
Я не читал всю статью и не знаю, насколько она репрезентативна, но, возможно, это отвечает на ваш вопрос: Python в Google .
Хорошо я прочитал большинство из них, к сожалению , это дает не что намного больше информации , но я думаю , что это все еще интересная статья. Может быть, самое важное:
Не стоит забывать, что Гвидо ван Россум, создатель Python, работал на Google с 2005-2012 года;)
Я также нашел эту цитату, но я не могу проверить это:
источник
Я читал о Unladen-Swallow , проекте, который направлен на повышение производительности CPython. Просматривая их доску обсуждений, я наткнулся на это обсуждение , где Коллин Винтер (сотрудник Google и основной разработчик Python) отвечает на утверждение, что сотрудникам Google не рекомендуется использовать Python для новых проектов :
источник
Если вы согласны с идеей Пола Грэма, что краткость == сила (т.е. если я могу написать код на языке X в 10 строк, чтобы выполнить то, что вы взяли за 100 строк языка Y, мой язык более мощный)
В наши дни оборудование стоит недорого, мясо стоит дорого . Я знаю, что я могу писать намного больше, быстрее, лучше и понятнее на Python, чем я могу на других языках, просто потому, что батареи, как правило, включены. Конечно, это может быть медленнее, но вы действительно заметите разницу между 0,05 секунды и 0,005 секунды?
В более реальном примере: если разработчики Google пишут программу на Python, в которой им никогда не нужно беспокоиться о сборке мусора, а компания X пишет программу на C ++, и они тратят 10% своего времени на поиск ошибок, связанных с распределением памяти, угадайте, кто сделал быстрее - даже если магазин C ++ сможет написать остальную часть своего кода так же быстро.
Так что да, я бы сказал, что это конкурентное преимущество для кода на Python.
источник