淡黄的长裙,蓬松的头发,Scala是个啥?干啥得靠它

笔者今天开始记录一下Scala语言的基础学习。Scala语言一般很少独立使用,而是作为在大数据领域的开发语言,是Spark的底层语言,也是Spark的首选调用语言。

Scala简介

    先安利一波儿Scala:java的运行效率,python的开发效率,ruby的糖,erlang的皮实,haskell的逼格,它不香吗?(香不香不知道,反正不火)。下图中TIOBE显示了截至2020年4月的编程语言流行排行榜,大家普遍认为很香的Python暂列第三。

    Scala位列28位,是不是表明这门语言不好呢?说到这又不得不提Spark,现在Spark是大数据领域的杀手级应用框架,互联网领域巨头都全面使用Spark了,这个时候再谈Scala适不适合大数据开发其实意义不大。因为大家比的不只是编程语言,而是构建在这个编程语言之上的类库、社区和生态圈(包括文档和数据、衍生类库、商业技术支持、成熟产品等等)。

    Scala是一门现代的多范式编程语言,平滑地集成了面向对象和函数式语言的特性,旨在以简练、优雅的方式来表达常用编程模式。Scala的设计吸收借鉴了许多种编程语言的思想,只有很少量特点是Scala自己独有的。Scala运行于Java平台(JVM,Java 虚拟机)上,并兼容现有的Java程序,Scala代码可以调用Java方法,访问Java字段,继承Java类和实现Java接口。在面向对象方面,Scala是一门非常纯粹的面向对象编程语言,也就是说,在Scala中,每个值都是对象,每个操作都是方法调用。

    Spark的设计目的之一就是使程序编写更快更容易,这也是Spark选择Scala的原因所在。总体而言,Scala具有以下突出的优点:

  •     Scala具备强大的并发性,支持函数式编程,可以更好地支持分布式系统;

  •     Scala语法简洁,能提供优雅的API;

  •     Scala兼容Java,运行速度快,且能融合到Hadoop生态圈中。

    实际上,Scala近年来也吸引了不少开发者的眼球,例如,知名社交网站Twitter已将代码从Ruby转到了Scala,其余部分也打算要迁移;此外,Wattzon已经公开宣称,其整个平台都已经是基于Scala基础设施编写的;瑞银集团把Scala用于一般产品中;Coursera把Scala作为服务器语言使用。

    Scala是Spark的主要编程语言,但Spark还支持Java、Python、R作为编程语言,因此,若仅仅是编写Spark程序,并非一定要用Scala。Scala的优势是提供了REPL(Read-Eval-Print Loop,交互式解释器),因此,在Spark Shell中可进行交互式编程(即表达式计算完成就会输出结果,而不必等到整个程序运行完毕,因此可即时查看中间结果,并对程序进行修改),这样可以在很大程度上提升开发效率。现在的计算机都是多核CPU,想充分利用其多核处理,需要写可并行计算的代码。而函数式编程在并行操作性有着天生的优势,函数式编程没有可变变量,就不会有内存共享的问题。

Scala安装

    接下来介绍Scala的安装与配置。在安装之前先确保Java已安装。在终端中输入以下命令查看Java版本:

java -version

    如果出现以下输出即表明Java已成功安装

java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)

    之后在官网上下载scala:https://www.scala-lang.org/download/

    下载之后将安装包解压至/usr/local并重命名:

sudo tar zxvf ~/Downloads/scala-2.13.1.tgz -C /usr/local/
cd /usr/local
sudo mv scala-2.13.1 scala

    之后配置环境变量:

sudo vim /etc/profile

    添加如下内容:

SCALA_HOME=/usr/local/scala
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$SCALA_HOME/bin
export SCALA_HOME

    之后执行source命令即可:

source /etc/profile

    最后在本地输入scala即可启动scala:

Hello World

接下来使用一个例子来测试scala的正常使用。使用下面命令到达指定目录,并新建一个test.scala文件:

cd ~
vim test.scala

在test.scala文件中输入以下代码:

object HelloWorld {
    def main(args: Array[String]){
        println("Hello, World!")
    }
}

关于上面代码,需要重点说明三点:
(1)在上面代码中,定义了程序的入口main()方法。可以看出,关于main()方法的定义,Java和Scala是不同的,在Java中是用静态方法(public static void main(String[] args)),而Scala中则必须使用对象方法,本例中,也就是HelloWorld对象中的main()方法。
(2)对象的命名HelloWorld可以不用和文件名称一致,这里对象名称是HelloWorld,而文件名称却是test.scala。这点和Java是不同的,按照Java的命名要求,这里的文件名称就必须起名为HelloWorld.scala,但是,在Scala中是没有这个一致性要求的。
(3)Scala是大小写敏感的,所以,不要输入错误,比如把小写开头的object输成大写开头的Object。文件名Test.scala和test.scala也是两个不同的文件。

下面我们用scalac命令编译test.scala代码文件,并用scala命令执行,如下:

scalac test.scala //编译的时候使用的是Scala文件名称
scala -classpath . HelloWorld  //执行的时候使用的是HelloWorld对象名称

即可执行完成,输出如下内容:

Hello, World!

参考链接:

https://www.tiobe.com/tiobe-index/

http://dblab.xmu.edu.cn/blog/929-2/

https://www.runoob.com/scala/scala-install.html

历史推荐

妈妈再也不用担心双系统安装了!

Spark机器学习不想跟你说话并向你扔了一个kaggle小例子

爬虫实战:Selenium爬取京东商品

爬虫实战:豆瓣电影top250爬取

爬虫实战:Scrapy框架爬取QQ音乐

数据分析与挖掘

数据结构与算法

机器学习与大数据组件

欢迎关注,感谢“在看”,随缘稀罕~

 

一个赞,晚餐加鸡腿

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值