为什么Scala非常复杂?[已关闭]

2022-09-02 22:47:12

我是学生。我在第二年学习了Java。现在我是四年级学生。我对Java感到厌倦,我开始学习Scala。当我学习它时,我发现它非常复杂(尽管我喜欢它)。我的问题可能适用于所有新的复杂语言。

为什么 Scala 如此复杂?
是因为我们需要创建复杂的软件,还是我是唯一一个认为它很复杂的人?


答案 1

@Anantha 在过去的十年里,大多数大学一直在教学生Java作为第一语言。我听说过很多这样的案例,它甚至仍然是学生在大学期间唯一可以学习的语言 - 除非他们自己学习其他东西,那就是。

纯粹从语言的角度来看,Java的三个最具特征的特性是

  1. 势在必行
  2. 它是面向对象的
  3. 它被垃圾收集

功能1和2使其与Algol / C和C++家族的各种语言非常相似。所有这些语言要么在范式上具有相似之处,要么甚至使用完全相同的语言。

例如,C#尽管语法不同,但Windows作为主要目标操作系统,.NET框架作为“类库”,对于Java程序员来说非常容易掌握。这是因为两种语言共享相同的编程范例。

另一方面,Scala - 尽管在JVM上运行,但提供了与Java API的简单互操作性 - 通常被称为多范式语言。该语言提供了函数式编程语言功能的深度语法集成,但以面向对象的方式构建代码。

函数式编程的概念 - 特别是一旦你进入代码超越琐碎的教程 - 对于只对命令式OO语言有经验的开发人员来说,这很难。我个人在帮助其他开发人员快速了解Scala等人方面的经验是,它非常有助于教他们方案第一;)这是一种很好,小巧,干净的Lisp方言。它有助于传达先进的功能概念。如果你决定试一试,我建议你看看“小阴谋家”和“经验丰富的策划者”。一旦你读完了这两本书,我敢打赌你会更容易地查看Scala的语法,并更清楚地看到它的概念。

简而言之:恕我直言,不是Scala很难学习,函数式编程范式是大多数开发人员的原因,他们只接触过命令式语言,很难跟上速度。


答案 2

这里有两个问题:

  1. 学习Scala比Java更难吗?
  2. 用 Scala 编写的代码是否往往比用 Java 编写的代码更复杂?

第一个问题更容易回答:Scala语言比Java更丰富。特别是,它的类型系统比Java更具表现力,这意味着可以将更多的逻辑错误表示为编译时错误。但是,为了利用这些功能,需要熟悉语言的不同构造(依赖类型,案例类,方差注释,视图等)。掌握这些需要时间,这就是为什么Scala比Java更难学习。

第二个问题更棘手。Scala的倡导者声称,这些新结构使编写正确的程序变得更加容易,并且生成的代码更简单。其他人则说,Scala的额外功能并没有超过理解其结构的语义学的复杂性(例如,看看这个演讲。搜索“Scala”)。这是更广泛的争议的表现:静态与动态类型语言。


推荐