成为一个称职的 Scala 程序员需要你成为一个称职的 Java 程序员吗?[已关闭]

2022-09-01 03:12:30

在美学上,我是Scala的忠实粉丝,并且投入到其类型系统和库等内容中的许多概念工作。

然而,当我开始修补Scala时(并看到我的一些同事修补它),我发现自己不得不挖掘越来越多的Java知识(特别是以库的方式)。

这给我带来了一些问题:

  • 我从未成为Java程序员,我对Java标准库或其他流行的库(如Apache Commons)不熟悉或不舒服。
  • 我在Java领域的google-fu很弱。很难知道要搜索什么 - 这个问题因大量针对编程新手的不相关或基本的java教程而加剧。

然而,在这一点上,我不确定我是否应该咬紧牙关,尝试找到最快,最全面的Java之旅,以赶上自己20年的Java开发,或者当我在scala周围徘徊时继续尝试逐步修补我的知识是否合理。

Scala在我们中间可以提供的任何智慧都将不胜感激。

附言:我毫不怀疑自己熟悉 Scala 语法的能力,我对函数式编程和 scala 社区的范式非常满意和满意。但是,程序员的能力不仅基于一个人自学的能力,还取决于一个人向他人学习和采用工具和技能的能力。


答案 1

你应该采取一种方法来学习Java。在您需要时学习它。lazy

在我看来,许多旧的Java知识已经过时了,许多新的教程都是多余的。例如,您当然不想为Java的过时而烦恼。许多基于Java的框架可以安全地忽略。重量级的JavaEE堆栈可以安全地绕过,直到你被迫使用它的一部分。Collections

Java中的许多常见模式在Scala中要简单得多,前者背负着许多样板代码。核心逻辑应该始终在 Scala 中实现。我相信你可以直接在Scala中完成大部分工作,只需要在构建Swing或与Spring集成等内容时深入Java。

关于选择和使用Java库,我个人的指导方针是:

  1. 如果弹簧可以做到,那就用弹簧
  2. 如果Spring太重,请使用Spring使用的东西。
  3. 如果Spring做不到,请检查github项目
  4. 如果 github 上没有任何内容,请查看 Apache 项目
  5. 如果 Apache 没有任何内容,请检查 sourceforge(t)。
  6. 最后,谷歌随机或只是自己构建它。

这有点不合时宜,但这是我在过去12年里做过Java之后对第三方库的成熟度和稳定性的印象。


答案 2

如果你想学习西班牙语,开始学习西班牙语,而不是拉丁语。编程语言也是如此。Java中有两件事值得了解:

首先是 API。但是,您只需要对存在的内容进行一般概述。即使是很长一段时间的Java程序员也不知道所有的细节。为问题找到合适的API或lib通常很容易,因为Java是如此普遍,即使Google Fu很弱,你也不应该有任何问题。

你需要知道的第二件事是Java和JVM的一些基本原则和局限性(包括如何构建和运行),这有助于你理解Scala的一些问题和设计决策。一个典型的例子是“类型擦除”:如果你不理解Java泛型的这种局限性,那么在Scala中使用泛型时,你会遇到问题。

如您所见,您真正需要知道的事情是有限的。其他一切都可以在路上捡到。


推荐