Google активно использует Python, это просто вопрос вкуса или это дает им конкурентное преимущество?
Google активно использует Python, это просто вопрос вкуса или это дает им конкурентное преимущество?
Ответы:
Я не могу дать однозначного ответа, потому что к тому времени, когда я брал интервью у 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 .
Хорошо я прочитал большинство из них, к сожалению , это дает не что намного больше информации , но я думаю , что это все еще интересная статья. Может быть, самое важное:
В Google Python является одним из 3 «официальных языков» наряду с C ++ и Java. Официальный здесь означает, что гуглерам разрешено развертывать эти языки в производственных сервисах. (Внутри Google люди используют много технологий, включая PHP, C #, Ruby и Perl). Python хорошо подходит для процесса разработки в Google. Типичный проект в Google состоит из небольшой команды (3 человека) и небольшой продолжительности (3 месяца).
Не стоит забывать, что Гвидо ван Россум, создатель Python, работал на Google с 2005-2012 года;)
Я также нашел эту цитату, но я не могу проверить это:
«Python был важной частью Google с самого начала и остается таковым по мере роста и развития системы. Сегодня десятки инженеров Google используют Python, и мы ищем больше людей с навыками в этом языке»
- Питер Норвиг, Директор по качеству поиска в Google
Я читал о 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.