Використання мови програмування в Google [закрито]


29

Я чув, що Google використовує Python, Java та C ++. Але я не знаю, як використовується кожна з цих мов програмування. Я маю на увазі, для чого в Google використовується Python, Java та C ++. Чому б вони використовували до 3 мов програмування, коли достатньо однієї мови. Хтось знає?


16
Крім того, ви забули Go.
cbrandolino

22
Якщо однієї мови достатньо, чому взагалі існують Python, C ++ або Java? Усі ми могли просто використовувати мову складання для процесора, на якому працюють наші системи.
Лазар

Сказати, що однієї мови достатньо - це як сказати, що одного типу деревини вистачає, чи поважатимеш ти столяра, який працював тільки в Сосновій, але ніколи не кленовий чи дубовий?
Захарій К

Також ви забули Sawzall labs.google.com/papers/sawzall.html
Chiron

1
Вони використовували java Перевірте це reddit.com/r/google/comments/3sdx3b/…
Ельшан

Відповіді:


97

Правильна відповідь " тому, що різні мови мають різну силу " вже викладена. Але дозвольте надати трохи детальніше, чому:

C ++

C ++ має головну перевагу - найшвидший із партії. Не потрібно, тому що Java та Python повільні, а тому, що в C ++ ви маєте більше контролю над тим, як все виконується.

Наприклад, якщо ви пишете інтерфейс веб-служб, який вимагає затримки менше 30 мс, ви можете налаштувати код C ++, щоб досягти цієї продуктивності. У керованій мові, як Java, трохи складніше змусити GC ідеально співпрацювати.

C ++ використовується для багатьох "чарів Google", таких як BigTable, MapReduce та пошук Google.

Java

Для більшості стандартних програм Java - це ідеально чудова мова. У ньому представлені чудові інструменти, безліч існуючих бібліотек і не багато часу, витраченого на налагодження.

Java використовується для багатьох більших веб-сайтів, які було б набагато складніше підтримувати мовою нижчого рівня, як C або C ++. Наприклад, я розумію, що GMail написаний на Java.

Також зауважте, що ви можете використовувати веб-інструментарій Google для компіляції коду Java в JavaScript. Тож ця дивовижна веб-сторінка чи віджет, які ви бачите, могли почати життя як клас Java.

Пітон

Python - це фантастична мова загального призначення, але не пропонує стільки дрібного контролю, як навіть Java. (Наприклад, існують усілякі шалені аргументи JVM для речей - чи python пропонує подібну конфігурацію?)

Однак, Python ідеально підходить для простих веб-сайтів і додатків, які в іншому випадку були б жахливими скриптами оболонки. Наприклад, якщо ви хочете написати простий тестовий зразок, щоб зібрати дані з деяких джерел, обробити їх і завантажити їх у App Engine Python було б хорошим вибором. (Якщо вам потрібно було розподілити цю обробку на 1000 машинах, можливо, ви можете використовувати іншу мову ...)

JavaScript

Очевидно, Google використовує багато JavaScript. Однак тип JavaScript, написаний в Google, відрізняється від того, що ви бачите в дикій природі. Google розробив оптимізуючий компілятор JavaScript, який дозволяє будувати примітки в коментарях в обмін на кращі оптимізації та статичну перевірку. Див. Розділ Закриття Google .

Мова не має значення (інтероп)

Ще одна причина, чому Google не використовує лише одну мову, - це не потрібно. Практично в кожній сучасній мові програмування є засоби для входу у зовнішні бібліотеки, бібліотеки яких можуть бути написані іншою мовою. (Див. Свиг .)

Крім того, оскільки App Engine запускає JVM, ви можете запустити будь-яку мову, що компілюється в байтний код Java. (В Google ми в першу чергу дотримуємося згаданих тут мов, але це не важка вимога.) Якщо ви хочете використовувати програму Closing, Groovy або Scala у програмі App Engine, якщо ви додаєте правильні файли JAR, все повинно просто працювати.

Відкрите джерело

Крім того, Google використовує та сприяє безлічі відкритих джерел, де це можливо. Зазвичай ці проекти написані однією з перерахованих вище мов, і це вимагає, щоб вони використовувались у Google.

Суть - це дві речі:

  • Кожна мова програмування має свої сильні сторони. Якщо не скористатися ситуаційно, скористайтеся цими сильними сторонами було б прикро.
  • Наявність наборів інструментів interop та сумісних програм означає, що використовувати менше мов у межах одного середовища виконання менш болісно.

З вашого пояснення чи означає, що GMail використовує GWT?
Джошуа Партогі

1
В даний час Google також використовує python для веб-додатків.
Рафаель

Видатний Googler Алекс Мартеллі пояснює: "Python, де ми можемо, C ++, де треба"
Пітер М. - виступає за Моніку

17
1 language is enough

Можливо, однієї мови достатньо, щоб адекватно виконати ряд різних завдань, але різні мови мають різні сильні, слабкі та здібності.

Оскільки Google, ймовірно, програмує для великої кількості різних ситуацій, це справа коней на курси, найкращий інструмент для роботи.


4
+1, використовуючи найкращий інструмент для роботи. Зараз я працюю над однією настільною програмою, яка використовує 3 мови програмування (плюс різні мови розмітки та бази даних). Близький до металевих речей з C ++, основний додаток з Java, і деякі Jython тут і там для легкої настройки. Є сенс взяти найкраще з усіх трьох світів, IMO :-)
Joonas Pulakka


9

Ці три мови використовуються для різних цілей.

Python може використовуватися для написання сценаріїв автоматизації.
C ++ для реалізації складних алгоритмів (індексатор, сканер, зменшення карт, велика таблиця)
Java для веб-служб, веб-додатків тощо.

Це лише мої припущення.


Я би реалізував складні алгоритми - не дуже критичні для продуктивності - в Python.

3

Python використовується для веб-сайту їх підтримки, ви можете бачити, що ця сторінка генерується сценарієм python, вони використовують бібліотеки Java для веб-додатків, отже, підтримка GWT та java в двигуні додатків

Я думаю, що вони використовують C ++ для google Earth або взагалі для настільних додатків


2

"1 мова достатня" може бути правдивою лише в тому випадку, якщо кожен ваш проект є певним видом. А для деяких проектів навіть C ++ Java і Python - не найкращі інструменти. Крім того, знання однієї мови є відмінною рисою поганого програміста.


0

Вони також пишуть рідні додатки для Mac та iPhone, і вони знаходяться в Objective-C. Причина, чому вони це роблять, проста: API знаходяться в Objective-C.

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