Правильна відповідь " тому, що різні мови мають різну силу " вже викладена. Але дозвольте надати трохи детальніше, чому:
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 та сумісних програм означає, що використовувати менше мов у межах одного середовища виконання менш болісно.