Google的编程语言用法[关闭]


29

我听说Google使用Python,Java和C ++。但是我不知道如何使用每种编程语言。我的意思是Google使用了Python,Java和C ++。当一种语言足够时,为什么他们要使用多达3种编程语言。有人知道吗


16
另外,您忘记了。
cbrandolino

22
如果一种语言就足够了,为什么还要有Python,C ++或Java?我们都可以将汇编语言用于我们系统正在运行的处理器。
Lazarus

说一种语言就足够了,就像说一种木头就够了,您会尊重仅在松木工作但从未使用过枫木或橡木的木匠吗?
Zachary K

另外,您还忘记了Sawzall labs.google.com/papers/sawzall.html
Chiron

Answers:


97

正确的答案是“ 因为不同的语言具有不同的优势 ”。但是,让我提供更多有关原因的详细信息:

C ++

C ++的主要优点是速度最快。没有必要,因为Java和Python是缓慢的,但由于在C ++中,你有更多的控制权有关如何事情得到执行。

例如,如果您编写的Web服务前端需要少于30ms的延迟,则可以调整C ++代码以实现该性能。在Java之类的托管语言中,要使GC完美协作会有些困难。

C ++用于很多“ Google魔术”,例如BigTable,MapReduce和search goo。

爪哇

对于大多数标准应用程序,Java是一种非常好的语言。它具有出色的工具,大量现有的库,并且无需花费大量时间进行调试。

Java被用于许多较大的网站,这些网站将很难以较低级别的语言(例如C或C ++)进行维护。例如,我的理解是GMail是用Java编写的。

另外,请注意,您可以使用Google的Web工具包将Java代码编译为JavaScript。因此,您看到的超赞网页或窗口小部件可能已经开始作为Java类出现。

蟒蛇

Python是一种出色的通用语言,但没有Java那样提供细粒度的控制。(例如,对于事物,有各种各样疯狂的JVM参数-python提供类似的配置吗?)

但是,Python非常适合简单的网站和应用程序,否则它们将是可怕的shell脚本。例如,如果您想编写一个简单的测试用例以从某些来源收集数据,进行处理,然后将其上传到App Engine Python,将是一个不错的选择。(但是,如果您需要在1000台计算机上分配该处理,也许可以使用其他语言...)

的JavaScript

显然,Google使用了大量JavaScript。但是,在Google上编写的JavaScript的类型与您在野外看到的不同。Google开发了一种优化的JavaScript编译器,可让您在注释中构造注释,以换取更好的优化和静态检查。请参阅Google关闭

语言无关紧要(互操作)

Google不只使用一种语言的另一个原因是它不需要。几乎每种现代编程语言都具有调用外部库的功能,这些库可以用其他语言编写。(请参阅swig。)

另外,由于App Engine运行JVM,所以您可以运行任何编译为Java字节码的语言。(在Google中,我们主要遵循此处提到的语言,但这不是硬性要求。)如果要在App Engine上使用Closure,Groovy或Scala,并且要包含正确的JAR文件,则所有内容都应该可以使用。

开源

此外,Google尽可能使用并为许多开源做出贡献。这些项目通常是用上述一种语言编写的,并要求在Google中“使用”。

最重要的是两件事:

  • 每种编程语言都有自己的优势。不根据情况利用这些优势将是可耻的。
  • 互操作性工具箱和兼容的运行时的可用意味着在同一个运行时环境中使用多种语言会更轻松。

根据您的解释,是否表示GMail使用GWT?
2011年

1
Google目前也在将python用于网络应用程序。
拉斐尔

著名的Google员工Alex Martelli 解释了 “ Python在哪里,C ++在我们必须的地方”
Peter M. –代表Monica,

17
1 language is enough

也许一种语言足以完成许多不同的任务,但是不同的语言具有不同的优势,劣势和能​​力。

由于google最有可能针对大量不同的情况进行编程,因此这是一门适合上课的马,这是工作的最佳工具。


4
+1,使用最适合工作的工具。我目前正在使用3种编程语言(以及各种标记和数据库语言)的单个桌面应用程序上工作。接近C ++的金属材质,Java的主要应用程序,以及一些Jython,可轻松自定义。充分利用IMO的所有三个世界是有道理的:-)
Joonas Pulakka 2011年


9

这三种语言用于不同的目的。

Python可能用于编写自动化脚本。
用于实现复杂算法的C ++。(Indexer,Crawler,Map-Reduce,Big Table)
用于Web服务,Web应用程序等的Java。

这些只是我的假设。


我会在Python中实现复杂的算法-并非对性能至关重要。

3

使用Python作为其支持网站,您可以看到此页面是由python脚本生成的,它们将Java库用于Web应用程序,因此在App Engine中具有GWT和Java支持

我认为他们将C ++用于Google Earth或一般用于桌面应用程序


2

仅当您所做的每个项目都是特定种类时,“一种语言才够”才是正确的。对于某些项目,即使C ++ Java和Python也不是最好的工具。此外,只懂一种语言是可怜的程序员的显着特征。


0

他们也编写本机Mac和iPhone应用程序,它们都在Objective-C中。他们这样做的原因很简单:API在Objective-C中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.