Правильный ответ « потому что разные языки имеют разные сильные стороны » уже был заявлен. Но позвольте мне рассказать подробнее о том, почему:
C ++
С ++ имеет главное преимущество - быть самым быстрым из всех. Не обязательно, потому что Java и Python медленны, а потому, что в C ++ у вас больше контроля над тем, как все выполняется.
Например, если вы пишете веб-интерфейс, который требует задержки менее 30 мс, вы можете настроить код C ++ для достижения этой производительности. В управляемом языке, таком как Java, немного сложнее заставить GC идеально взаимодействовать.
C ++ используется для многих «магии Google», таких как BigTable, MapReduce и search goo.
Джава
Для большинства стандартных приложений Java - прекрасный язык. Это отличные инструменты, множество существующих библиотек и не много времени, затрачиваемого на отладку.
Java используется для большого количества больших веб-сайтов, которые было бы намного сложнее поддерживать на языке более низкого уровня, таком как C или C ++. Например, я понимаю, что GMail написан на Java.
Также обратите внимание, что вы можете использовать Google Web Toolkit для компиляции кода 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 мы в основном придерживаемся упомянутых здесь языков, но это не является жестким требованием.) Если вы хотите использовать Closure, Groovy или Scala в App Engine, если вы добавляете правильные файлы JAR, все должно работать.
Открытый источник
Кроме того, Google использует и вносит свой вклад во множество открытых источников, где это возможно. Эти проекты обычно написаны на одном из перечисленных выше языков и требуют, чтобы он использовался в Google.
Суть в двух вещах:
- Каждый язык программирования имеет свои сильные стороны. Не использовать в своих интересах эти преимущества было бы позором.
- Доступность наборов инструментов взаимодействия и совместимых сред выполнения означает, что менее болезненно использовать несколько языков в одной среде выполнения.