Google의 프로그래밍 언어 사용법


29

Google이 Python, Java 및 C ++을 사용한다고 들었습니다. 그러나 내가 모르는 것은 각각의 프로그래밍 언어가 어떻게 사용되는지입니다. Google에서 Python, Java 및 C ++이 사용되는 것은 무엇입니까? 1 개의 언어로 충분할 때 왜 최대 3 개의 프로그래밍 언어를 사용했을까요? 아무도 아는가?


16
또한, 당신은 Go를 잊었다.
cbrandolino

22
하나의 언어로 충분하다면 왜 파이썬, C ++ 또는 Java가 있습니까? 시스템이 실행중인 프로세서에 어셈블리 언어를 사용할 수 있습니다.
나사로

한 언어만으로 충분하다고 말하는 것은 한 가지 유형의 나무만으로 충분하다는 것입니다.
Zachary K


답변:


97

정답은 " 다른 언어가 다른 강점을 가지고 있기 때문에 "이 이미 언급되었습니다. 그러나 이유에 대해 좀 더 자세히 설명하겠습니다.

C ++

C ++은 가장 빠른 것의 주요 이점이 있습니다. Java와 Python이 느리기 때문에 필요하지는 않지만 C ++ 에서는 작업 실행 방법 에 대해 더 많은 제어 권한 이 있기 때문에 필요하지 않습니다 .

예를 들어 대기 시간이 30ms 미만인 웹 서비스 프런트 엔드를 작성하는 경우 C ++ 코드를 조정하여 해당 성능을 달성 할 수 있습니다. Java와 같은 관리되는 언어에서는 GC가 완벽하게 협력하는 것이 조금 더 어렵습니다.

C ++은 BigTable, MapReduce 및 search goo와 같은 많은 'Google magic'에 사용됩니다.

자바

대부분의 표준 응용 프로그램에서 Java는 완벽하게 훌륭한 언어입니다. 훌륭한 도구, 기존 라이브러리가 많으며 디버깅에 많은 시간을 소비하지 않았습니다.

Java는 C 또는 C ++와 같은 저수준 언어로 유지하기가 훨씬 더 어려운 많은 대형 웹 사이트에 사용됩니다. 예를 들어, GMail은 Java로 작성되었습니다.

또한 Google의 웹 툴킷을 사용하여 Java 코드를 JavaScript로 컴파일 할 수 있습니다. 따라서 멋진 웹 페이지 또는 위젯이 Java 클래스로 시작되었을 수 있습니다.

파이썬

파이썬은 환상적인 범용 언어이지만 Java만큼 세밀한 제어를 제공하지는 않습니다. (예를 들어, 모든 종류의 미친 JVM 인수가 있습니다-파이썬은 비슷한 구성을 제공합니까?)

그러나 Python을 사용하면 끔찍한 셸 스크립트 인 간단한 웹 사이트 및 응용 프로그램에 완벽하게 적합합니다. 예를 들어, 일부 소스에서 데이터를 수집하기 위해 간단한 테스트 케이스를 작성하고 처리 한 후 App Engine에 업로드하려면 Python을 선택하는 것이 좋습니다. (그러나 1,000 대의 컴퓨터에 처리를 분산 해야하는 경우 다른 언어를 사용할 수 있습니다 ...)

자바 스크립트

분명히 Google은 많은 JavaScript를 사용합니다. 그러나 Google에서 작성된 JavaScript 유형은 실제로 볼 수있는 것과 다릅니다. Google은 최적화 및 정적 검사를 개선하기 위해 주석에 주석을 작성할 수있는 최적화 JavaScript 컴파일러를 개발했습니다. Google 폐쇄를 참조하십시오 .

언어는 중요하지 않습니다 (interop)

Google이 언어를 하나만 사용하지 않는 또 다른 이유 는 언어 가 필요하지 않기 때문입니다. 거의 모든 현대 프로그래밍 언어에는 외부 라이브러리, 다른 언어로 작성된 라이브러리를 호출하는 기능이 있습니다. ( swig 참조 )

또한 App Engine은 JVM을 실행하므로 Java 바이트 코드로 컴파일되는 모든 언어를 실행할 수 있습니다. (Google에서는 주로 여기에 언급 된 언어를 고수하지만 이는 어려운 요구 사항은 아닙니다.) 올바른 JAR 파일을 포함하는 경우 App Engine에서 Closure, Groovy 또는 Scala를 사용하려면 모든 것이 제대로 작동합니다.

오픈 소스

또한 Google은 가능한 경우 많은 오픈 소스를 사용하고 기여합니다. 이러한 프로젝트는 일반적으로 위의 언어 중 하나로 작성되며 Google에서 '사용'해야합니다.

결론은 두 가지입니다.

  • 모든 프로그래밍 언어에는 고유 한 장점이 있습니다. 상황에 따라 이러한 강점을 활용하지 않는 것은 부끄러운 일입니다.
  • interop 툴킷과 호환 가능한 런타임을 사용할 수 있다는 것은 동일한 런타임 환경에서 여러 언어를 사용하는 것이 덜 고통 스럽다는 것을 의미합니다.

귀하의 설명에서 GMail이 GWT를 사용한다는 의미입니까?
Joshua Partogi

1
Google은 현재 웹 애플리케이션에도 Python을 사용하고 있습니다.
라파엘

저명한 Google 직원 인 Alex Martelli "우리가 할 수있는 파이썬, 우리가 필요한 곳에 C ++"
Peter M.은 Monica

17
1 language is enough

어쩌면 하나의 언어로 여러 가지 다른 작업을 충분히 완료 할 수 있지만 언어마다 다른 강점, 약점 및 능력이 있습니다.

구글은 아마도 많은 다른 상황을 위해 프로그램을 할 것이기 때문에, 직업을위한 최고의 도구 인 코스를위한 말의 경우입니다.


4
+1, 작업에 가장 적합한 도구 사용. 현재 3 가지 프로그래밍 언어 (다양한 마크 업 및 데이터베이스 언어)를 사용 하는 단일 데스크톱 응용 프로그램 에서 작업 하고 있습니다. C ++, Java를 사용하는 기본 응용 프로그램 및 일부 Jython을 사용하여 쉽게 커스터마이징 할 수 있습니다. IMO :-)
Joonas Pulakka의


9

이 세 가지 언어는 다른 목적으로 사용됩니다.

자동화 스크립트 작성에 Python을 사용할 수 있습니다.
복잡한 알고리즘 구현을위한 C ++ (인덱서, 크롤러, 맵 축소, 빅 테이블)
웹 서비스, 웹 앱 등을위한 Java

이것들은 나의 가정 일뿐입니다.


파이썬에서 복잡한 알고리즘을 구현할 것입니다.

3

Python은 지원 웹 사이트에 사용됩니다. 이 페이지 는 Python 스크립트에 의해 생성되며 웹 응용 프로그램에 Java 라이브러리를 사용하므로 앱 엔진에서 GWT 및 Java 지원을 사용합니다.

Google 어스 또는 일반적으로 데스크톱 응용 프로그램에 C ++을 사용한다고 생각합니다.


2

"1 개의 언어로 충분하다"는 모든 프로젝트가 특정 종류 인 경우에만 해당됩니다. 그리고 일부 프로젝트의 경우 C ++ Java 및 Python조차도 최고의 도구가 아닙니다. 게다가 한 언어 만 아는 것은 가난한 프로그래머의 특징입니다.


0

기본 Mac 및 iPhone 응용 프로그램도 작성하며 Objective-C에 있습니다. 그들이하는 이유는 간단합니다. API는 Objective-C에 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.