Использование языка программирования в Google [закрыто]

29

Я слышал, что Google использует Python, Java и C ++. Но я не знаю, как используется каждый из этих языков программирования. Я имею в виду то, что Python, Java и C ++ используются в Google. Почему они используют до 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 ++

С ++ имеет главное преимущество - быть самым быстрым из всех. Не обязательно, потому что 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.

Суть в двух вещах:

  • Каждый язык программирования имеет свои сильные стороны. Не использовать в своих интересах эти преимущества было бы позором.
  • Доступность наборов инструментов взаимодействия и совместимых сред выполнения означает, что менее болезненно использовать несколько языков в одной среде выполнения.
Крис Смит
источник
Из вашего объяснения это означает, что GMail использует GWT?
Джошуа Партоги
1
Google в настоящее время также использует python для веб-приложений.
Рафаэль
Известный гуглер Алекс Мартелли объясняет: «Питон, где мы можем, C ++, где мы должны»
Питер М. - означает Моника
17
1 language is enough

Возможно, одного языка достаточно для адекватного выполнения ряда различных задач, но разные языки имеют свои сильные и слабые стороны и способности.

Так как Google, скорее всего, программирует для большого количества различных ситуаций, это случай лошадей для курсов, лучший инструмент для работы.

StuperUser
источник
4
+1, используя лучший инструмент для работы. В настоящее время я работаю над одним настольным приложением, которое использует 3 языка программирования (плюс различные языки разметки и базы данных). Близко к металлическому материалу с C ++, основному приложению с Java и некоторым Jython тут и там для легкой настройки. Имеет смысл взять лучшее из всех трех миров, ИМО :-)
Joonas Pulakka
9

Эти три языка используются для разных целей.

Python может быть использован для написания сценариев автоматизации.
C ++ для реализации сложных алгоритмов. (Indexer, Crawler, Map-Reduce, Big Table)
Java для веб-сервисов, веб-приложений и т. Д.

Это только мои предположения.

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

Python используется для их веб-сайта поддержки, вы можете видеть, что эта страница генерируется скриптом Python, они используют библиотеки Java для веб-приложений, следовательно, GWT и поддержка Java в движке приложения

Я думаю, что они используют C ++ для Google Earth, или для настольных приложений в целом

Махмуд Хоссам
источник
2

«1 языка достаточно» может быть правдой только в том случае, если каждый проект, который вы делаете, имеет определенный вид. А для некоторых проектов даже C ++ Java и Python не самые лучшие инструменты. Кроме того, знание только одного языка является отличительной чертой плохого программиста.

Eldritch Conundrum
источник
0

Они также пишут собственные приложения для Mac и iPhone, и они находятся в Objective-C. Причина, по которой они это делают, проста: API находятся в Objective-C.


источник