Сильне використання Python в Google [закрито]


185

Гугле використання Python від Google - це лише питання смаку чи це дає їм конкурентну перевагу?


21
Це має бути вікі спільноти
AutomatedTester

72
Алекс Мартеллі приходить за прийнятою відповіддю незабаром, ....
ChristopheD

4
Насправді я думаю, що на цю відповідь можна відповісти об’єктивно (десь має бути заява від Google, чому вони її використовують;))
Фелікс Клінг

15
@nomemory, "важкий" є досить правильним прикметником тут (звичайно, вам потрібно мати змогу подивитися на нашу кодову базу для підтвердження - скільки Python vs Java vs C ++ і т. д. - але, я вмію на це подивитися , і сприяти цьому, в основному, Python, щодня ;-) І питання не в усьому ІТ-індустрії - це конкретно в Google, компанії на 20 000 співробітників (включаючи непрограмістів), де дехто з нас краще «мав загальний погляд», оскільки формував цю думку та діючи на це основні частини нашої роботи ;-). Отже, я голосую за повторне відкриття.
Алекс Мартеллі

7
@nomemory, завжди є захоплені рекрутери Oracle на конференціях Python, тому я здивуюся, дізнавшись, що Python "не існує" в їхній кодовій базі (якщо так, ці рекрутери брешуть, а також витрачають власний час і піфоністів " ;-). І все-таки, як насправді конкурують Oracle та Google? -)
Alex Martelli

Відповіді:


286

Я точно не можу дати остаточної відповіді, тому що до того, як я взяв інтерв'ю в Google в 2004 році, Python вже був помітним в Google.

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

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

Почалося все, я вважаю, тому що найдавніші Googlers (Сергій, Ларрі, Крейг, ...) прийняли хороше інженерне рішення: "Python, де ми можемо, C ++, де треба" - вони використовували (підмножина) C ++ для частин стеку програмного забезпечення, де дуже низька затримка та / або жорсткий контроль пам’яті були вирішальними, і Python, що дозволяє більш швидку доставку та обслуговування програм, для інших частин. У той час, наприкінці 90-х, вибір останньої ролі був по суті між Python та Perl: інші мови сценаріїв були або недозрілими (я не думаю, що Рубі ще не було, наприклад), або мали інші проблеми та обмеження. Perl був більш зрілим (особливо з точки зору його екосистеми доступних додатків через CPAN), але Python вважався більш читабельним та ремонтопридатним, а взаємодія з бібліотеками C ++ (через SWIG) була простішою.

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

Інші мови, включаючи мови, про які Грег згадував ще у 2006 році, або є "випадковими" або використовуються для виконання інших конкретних завдань (наприклад, ціль C для клієнтів на iPhone або Mac) - наприклад, коли Google найняла своїх перших системних адміністраторів. , ці співробітники неминуче приїжджали з дуже сильним володінням Перлом і Башем, і часто використовували будь-яку з цих мов для розробки якоїсь складної внутрішньої системи; перекодування даних у Python (для більш легкого розгортання та ремонту) часто трапляється. Інші (наприклад, C #), можливо, були тимчасово в поєднанні через придбання, але, знову ж таки, перекодування на одній з "основних мов Google" завжди є досить високим пріоритетом (у випадку C #, перекодування, як правило, здебільшого відбувається на Java, оскільки обидві мови стосуються подібних областей з точки зору рівнів абстракції).


@ Алекс, напевно, я не зрозумів правильно, але, здається, Google хотів, щоб їхнє середовище було відкритим для інженерів (особливо дослідників) тих, хто провів роки в університеті та вийшов на руки лише на C або C ++ (оскільки всі починали з цих мов і більшість із них закінчувалися теж з цим). Тут python є сильним конкурентом, який забезпечує інтерфейс до величезної ліцензії C / C ++.
Раміз Уддін


Дивовижні розуміння !! Можуть допомогти потенційним
гуглерам

3
Один ласощі, який я зібрав, читаючи чудову книгу Леві "В" Plex "- це, як Python потрапив у Google (до того, як його назвали Google - тоді він був" backrub "). Ларрі Пейдж написав "павука", який викреслює в Інтернеті, у абсолютно новій бета-версії Java 1.0, і він був настільки розбитий, що його сусідка по інтернату допомогла йому, переписавши його більш стійкою, міцною та продуктивною мовою ... Пітон. Смішно думати, що без цього "павука" Google, можливо, ніколи не виникне ...
Alex Martelli

34

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

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

У Google python є однією з 3-х «офіційних мов» поряд із C ++ та Java. Офіційне тут означає, що Googlers дозволено розгорнути ці мови у виробничих службах. (Внутрішньо 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, але якщо їм доведеться працювати над більш високими обмеженнями продуктивності / масштабування на платформі в міру збільшення гучності, ви виходите наперед? тощо.


20

Якщо ви підписуєтесь на ідею Пола Грехема, що стислість == сила (тобто якщо я можу написати код мовою X у 10 рядках, щоб виконати те, що ви взяли 100 рядків мови Y, моя мова є більш потужною)

В наші дні обладнання дешеве, м'ясо - дороге . Я знаю, що я можу писати набагато більше, швидше, краще І чіткіше на Python, ніж можу на інших мовах, просто тому, що батареї, як правило, включаються. Звичайно, це може бути повільніше, але чи дійсно ви помітите різницю між .05 секундами і .0005 секундами?

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

Так, так, я б сказав, що це конкурентна перевага в коді в Python.


2
Перероблений дизайн сайту! Ну, він має альтернативне посилання, так що ви йдете.
Уейн Вернер

11
"чи справді ви помітите різницю між .5 секундами і .005 секундами?" Ви не працюєте в основному пошуку Google, YouTube чи Gmail, чи не так?
jwg

5
Обладнання недешеве, коли вам потрібно стільки, скільки Google.
НГР

5
Чудова річ у Python, коли у вас є значна різниця в продуктивності (наприклад, ~ 495 мс), ви можете підключити якийсь код C / C ++. Python дозволяє швидко розвиватися та ефективно оптимізувати.
Тревор

3
Різниця між .5 і .005 секундами полягає в тому, що одне помітне, а інше - ні.
Charlie Schliesser
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.