斯卡拉简介
Scala 是一种通用的、高级的、多范式的编程语言。它是一种纯面向对象的编程语言,也为函数式编程方法提供支持。没有原始数据的概念,因为在 Scala 中一切都是对象。它旨在以一种精炼、简洁和类型安全的方式表达一般编程模式。 Scala 程序可以转换为字节码,并且可以在JVM (Java虚拟机)上运行。 Scala 代表可扩展语言。它还提供了Javascript运行时。 Scala 深受Java和其他一些编程语言(如 Lisp、Haskell、Pizza 等)的影响。
斯卡拉的演变:
Scala 由瑞士洛桑联邦理工学院 (EPFL)编程方法教授、德国计算机科学家Martin Odersky设计。 Martin Odersky 还是javac (Java Compiler) 、 Generic Java和EPFL 的 Funnel编程语言的共同创造者。他于 2001 年开始设计 Scala。Scala 于2004年首次在Java平台上公开发布,作为其第一个版本。 2004 年6 月,Scala 针对.Net 框架进行了修改。不久之后在 2006 年发布了第二个版本,即(v2.0 )。在 2012 年的JavaOne会议上,Scala 被授予 ScriptBowl 竞赛的获胜者。从 2012 年 6 月起,Scala 不再为.Net Framework提供任何支持。 scala 的最新版本是 2.12.6 ,于 2018 年 4 月 27 日发布。
为什么是斯卡拉?
Scala 在程序员中受欢迎的原因有很多。几个原因是:
- 易于上手: Scala 是一种高级语言,因此它更接近于其他流行的编程语言,如Java、C、C++。因此,任何人都可以轻松学习 Scala。对于Java程序员来说,Scala 更容易学习。
- 包含最佳功能: Scala 包含不同语言的功能,如 C、C++、 Java等,这使其更有用、可扩展和高效。
- 与Java的紧密集成: Scala 的源代码的设计方式使其编译器可以解释Java类。此外,它的编译器可以利用框架、 Java库和工具等。编译后,Scala程序可以在JVM上运行。
- Web – 基于和桌面应用程序开发:对于 Web 应用程序,它通过编译为 JavaScript 来提供支持。同样对于桌面应用程序,它可以编译为 JVM 字节码。
- 大公司使用:大多数流行的公司,如 Apple、Twitter、Walmart、Google 等,将大部分代码从其他一些语言转移到 Scala。原因是它具有高度可扩展性,可用于后端操作。
注意:人们总是认为 Scala 是Java的扩展。但事实并非如此。它完全可以与Java互操作。 Scala 程序编译成功后会转换成包含Java字节码的.class 文件,然后可以在 JVM(Java虚拟机)上运行。
从 Scala 编程开始
寻找编译器:有各种在线 IDE,例如GeeksforGeeks IDE 、 Scala Fiddle IDE等,无需安装即可运行 Scala 程序。
Scala 编程:由于 Scala 在语法上与其他广泛使用的语言非常相似,因此在 Scala 中编码和学习更容易。可以在任何广泛使用的文本编辑器(如Notepad++ 、 gedit等)或任何文本编辑器上用 Scala 编写程序。编写程序后,使用扩展名.sc或.scala保存文件。
对于 Windows 和 Linux:在 Windows 或 Linux 上安装 Scala 之前,您必须在系统上安装Java Development Kit (JDK) 1.8或更高版本。因为 Scala 总是在Java 1.8或更高版本上运行。
在本文中,我们将讨论如何在在线 IDE 上运行 Scala 程序。
示例:打印Hello Geeks 的简单程序!使用面向对象的方法。
Scala
// Scala program to print Hello, Geeks!
// by using object-oriented approach
// creating object
object Geeks {
// Main method
def main(args: Array[String])
{
// prints Hello, Geeks!
println("Hello, Geeks!")
}
}
输出:
Hello, Geeks!
注释:注释用于解释代码,其使用方式与Java 、C 或 C++ 中的类似。编译器忽略注释条目并且不执行它们。注释可以是单行或多行。
- 单行评论:
句法:
// Single line comment
- 多行注释:
句法:
/* Multi-line comments
syntax */
object Geeks: object 是用于创建对象的关键字。这里的“ Geeks ”是对象的名称。
def main(args: Array[String]): def是Scala中用于定义函数的关键字,“main”是Main方法的名称。 args: Array[String]用于命令行参数。
println(“Hello, Geeks!”): println是 Scala 中用于在控制台上显示字符串的方法。
Note: There is also functional approach that can be used in Scala programs. Some Online IDE doesn’t provide support for it. We will discuss it in upcoming articles.
斯卡拉的特点
有许多特点使它与其他语言不同。
- 面向对象: Scala 中的每个值都是一个对象,因此它是一种纯面向对象的编程语言。对象的行为和类型由 Scala 中的类和特征描述。
- 函数式:它也是一种函数式编程语言,因为每个函数都是一个值,每个值都是一个对象。它提供了对高阶函数、嵌套函数、匿名函数等的支持。
- 静态类型:验证和执行类型约束的过程是在 Scala 的编译时完成的。与 C++、C 等其他静态类型编程语言不同,Scala 不期望用户提供冗余类型信息。在大多数情况下,用户不需要指定类型。
- 可扩展:可以以库的形式将新的语言结构添加到 Scala。 Scala 旨在与JRE(Java运行时环境)进行插值。
- 并发和同步处理: Scala 允许用户以不可变的方式编写代码,这使得应用并行(同步)和并发变得容易。
- 在 JVM 上运行并可以执行Java代码: Java和 Scala 有一个共同的运行时环境。因此用户可以轻松地从Java迁移到 Scala。 Scala 编译器将程序编译成 .class 文件,包含JVM可以执行的字节码。 Scala 可以使用Java SDK 的所有类。在 Scala 的帮助下,用户可以自定义Java类。
好处:
- Scala 的复杂特性提供了更好的编码和性能效率。
- 元组、宏和函数是 Scala 的进步。
- 它结合了面向对象和函数式编程,这反过来又使它成为一种强大的语言。
- 它具有高度可扩展性,因此为后端操作提供了更好的支持。
- 它降低了与Java中较高的线程安全相关的风险。
- 由于功能性方法,通常,用户最终会得到更少的代码行和错误,从而提高生产力和质量。
- 由于惰性计算,Scala 仅在程序中需要表达式时才计算它们。
- Scala 中没有静态方法和变量。它使用单例对象(源文件中有一个对象的类)。
- 它还提供了 Traits 概念。特征是可以编译成Java接口的抽象和非抽象方法的集合。
缺点:
- 有时,有两种方法使 Scala 难以理解。
- 与Java开发人员相比,可用的 Scala 开发人员数量有限。
- 它在 JVM 上运行时没有真正的尾递归优化。
- 它始终围绕面向对象的概念展开,因为在 Scala 中,每个函数都是值,每个值都是对象。
应用:
- 它主要用于使用 spark 进行数据分析。
- 用于开发 Web 应用程序和 API。
- 它提供了开发框架和库的工具。
- 首选用于后端操作以提高开发人员的工作效率。
- 并行批处理可以使用 Scala 完成。