Google 下一张幻灯片中使用的是什么语言

What language is used in this slide from Google Next

我正在观看 Google 下一节课,因为我对 Google 的云和他们的 Go 语言很感兴趣。

开发者ecosystems/communities有他们的做事方式,文化习俗,这对于没有经验的外行来说真的很陌生。

所以我有几个菜鸟问题:

代码示例看起来像是用 Scala 或 Java 编写的。您可以从一些指标中看出:

  • 代码具有 Java 风格的语法
  • 方法是在对象上调用的(例如input),这意味着它是一种面向对象的语言
  • new BigQuerySchemaMutator() 是典型的 Java - 样式构造函数

然而,这些指标并没有给出任何迹象表明它是 Scala 还是 Java。这些语言的语法非常相似,都是JVM-lanugages。

在我看来,Scala 的最强指标是代码是用函数式的方式编写的,它包含对 BigQueryIO 的两个方法调用,这可以是 [=56= 的静态方法] BigQueryIO 本身在 Java 的情况下,或者是在 Scala 中的 object BigQueryIO 上定义的方法,这是该语言中的常见设计模式。

然而,最后的 ; 只有 Java 才需要。

对于阅读代码示例的人来说,这个问题实际上并不重要,因为 Apache Beam(这里似乎使用的是 SDK)是一个 Java 库 - 它可以在 Java 和 Scala。


getFailedInserts 的结果似乎通过调用 .apply 进一步处理。这种风格叫做函数式编程.

这是一种完全不同的编程方法,而不是大多数其他语言中常见的过程编程模式。 (例如,将某些内容存储在变量/一般变量中)

请注意,此示例本身实际上不包含任何函数式编程(例如,高阶函数别名 lambda),但函数式编程风格很明显。


不使用魔法字符串一直被认为是最佳实践,但对于这样的代码示例,他们可能希望代码尽可能简单——因为它已经是单行代码了(尽管有换行符)。

代码示例 Java 使用 Apache Beam 编程模型 (https://beam.apache.org/)

我相信幻灯片中的完整代码在这里: https://github.com/ryanmcdowell/dataflow-dynamic-schema/blob/master/src/main/java/com/google/cloud/pso/pipeline/DynamicSchemaPipeline.java

幻灯片中的代码:

  1. 尝试将数据插入 table 'events_table'
  2. 如果它 returns 来自 Big Query API 的暂时性错误(例如 "column 'foo' does not exist"),它会运行 table 突变添加 'foo' 并插入数据再次。

它是一种将灵活的 tables 创建到 Big Query 中的模式,Big Query 是一个预定义的模式列式数据库。