“Thinking in Scala” 如果我有 Java/C++ 背景?
“Thinking in Scala" if I have a Java/C++ background?
我熟悉在 Java 中开发服务器端应用程序,但现在我想开始使用 Scala。你能描述一下必要的范式转变吗?以下是一些可能有助于您确定答案的问题:
- 如何以不同的方式构建和设计 Web 应用程序?什么是
最大的区别?
- 我应该停止什么doing/using;我应该从什么开始 doing/using
相反?
- 有没有客户端considerations/restrictions?
我不是在寻找 Java 和 Scala 之间的详细比较。
Scala 和 Java 的主要区别在于 Scala 对函数式编程的使用。
- 对于网络应用程序,您将使用不同的框架。 Play是目前最流行的口味。它感觉类似于其他框架中的 MVC 工作,但更倾向于功能纯粹(尽管大多数 Play 应用程序远非纯粹)
- 您应该停止考虑内存中的可变字段,而应该考虑不可变值的数据流。当您可以使用
val
时,请不要使用 var
。循环将主要被更高阶的构造所取代,例如 map
和 fold
。避免空值,改用 Option
s。
- 假设一个网络客户端,不。除非你想将 Scala 编译成 JS。然后同样的东西适用。
学习明智,我会从Twitter Scala school, then once you grok that, I recommend the book Functional Programming in Scala开始。我认为这两个资源将指导您朝 FP 方向发展,而不是使用新语法编写 Java 风格的程序。然后,在 OOP/FP 量表中找到适合手头问题的正确位置。
我熟悉在 Java 中开发服务器端应用程序,但现在我想开始使用 Scala。你能描述一下必要的范式转变吗?以下是一些可能有助于您确定答案的问题:
- 如何以不同的方式构建和设计 Web 应用程序?什么是 最大的区别?
- 我应该停止什么doing/using;我应该从什么开始 doing/using 相反?
- 有没有客户端considerations/restrictions?
我不是在寻找 Java 和 Scala 之间的详细比较。
Scala 和 Java 的主要区别在于 Scala 对函数式编程的使用。
- 对于网络应用程序,您将使用不同的框架。 Play是目前最流行的口味。它感觉类似于其他框架中的 MVC 工作,但更倾向于功能纯粹(尽管大多数 Play 应用程序远非纯粹)
- 您应该停止考虑内存中的可变字段,而应该考虑不可变值的数据流。当您可以使用
val
时,请不要使用var
。循环将主要被更高阶的构造所取代,例如map
和fold
。避免空值,改用Option
s。 - 假设一个网络客户端,不。除非你想将 Scala 编译成 JS。然后同样的东西适用。
学习明智,我会从Twitter Scala school, then once you grok that, I recommend the book Functional Programming in Scala开始。我认为这两个资源将指导您朝 FP 方向发展,而不是使用新语法编写 Java 风格的程序。然后,在 OOP/FP 量表中找到适合手头问题的正确位置。