Scala是什么?

最近想学习Scala语言,Scala官方网站

下面这篇文章不错,来自http://www.scalachina.com/article-12-1.html

面向对象的函数编程:了解 Scala 如何利用两个领域
    在历史上,Java™ 平台一直属于面向对象编程的领域,但是现在,甚至 Java 语言的坚定支持者也开始注意应用程序开发中的一种新趋势:函数编程。在这个新的系列中,Ted Neward 介绍了 Scala,一种针对 JVM 将函数和面向对象技术组合在一起的编程语言。在本文中,Ted 将举例说明您为何应该花时间学习 Scala(例如并发),并介绍如何快速从中受益。

您永远不会忘记您的初恋!

对于我来说,她的名字是 Tabinda (Bindi) Khan。那是一段愉快的少年时光,准确地说是在七年级。她很美丽、聪明,而最好的是,她常常因我的笨拙的笑话而乐不可支。在七年级和八年级的时间里,我们经常 “出去走走”(那时我们是这么说的)。但到了九年级,我们分开了,文雅一点的说法是,她厌倦了连续两年听到同样的笨拙的男孩笑话。我永远都不会忘记她(特别是因为我们在高中毕业 10 周年聚会时再次相遇);但更重要的是,我将永远不会失去这些珍贵的(也许有点言过其实)回忆。

Java 编程和面向对象是许多程序员的 “初恋”,我们对待它就像对待 Bindi 一样尊重和完全的爱慕。一些开发人员会告诉您 Java 将他们从内存管理和 C++ 的炼狱中解救出来了。其他一些人会告诉您 Java 编程使他们摆脱了对过程性编程的绝望。甚至对于一些开发人员来说,Java 代码中的面向对象编程就是 “他们做事情的方式”。(嘿嘿,如果这对我爸爸,以及爷爷有用该多好!)

然而,时间最终会冲淡所有对初恋的记忆,生活仍然在继续。感情已经变了,故事中的主角也成熟了(并且学会了一些新笑话)。但最重要的是,我们周围的世界变了。许多 Java 开发人员意识到尽管我们深爱 Java 编程,但也应该抓住开发领域中的新机会,并了解如何利用它们。

我将始终爱着你 ……

在最近五年中,对 Java 语言的不满情绪逐渐增多。尽管一些人可能认为 Ruby on Rails 的发展是主要因素,但是我要争辩的是,RoR(被称为 Ruby 专家)只是结果,而非原因。或者,可以更准确地说,Java 开发人员使用 Ruby 有着更深刻、更隐伏的原因。

简单地说,Java 编程略显老态了。

或者,更准确地说,Java 语言 略显老态了。

考虑一下:当 Java 语言最初诞生时,Clinton(第一位)在办公室中,很少有人使用 Internet,这主要是因为拨号是在家里使用网络的惟一方式。博客还没有发明出来,每个人相信继承是重用的基本方法。我们还相信,对象是为对世界进行建模的最好方法,摩尔定律将永远统治着世界。

实际上,摩尔定律引起了行业内许多人的特别关注。自 2002/2003 年以来,微处理器技术的发展使得具有多个 “内核” 的 CPU 得以创造出来:本质上是一个芯片内具有多个 CPU。这违背了摩尔定律,摩尔定律认为 CPU 速度将每隔 18 个月翻一倍。在两个 CPU 上同时执行多线程环境,而不是在单个 CPU 上执行标准循环周期,这意味着代码必须具有牢固的线程安全性,才能存活下来。

学术界已经展开了围绕此问题的许多研究,导致了过多新语言的出现。关键问题在于许多语言建立在自己的虚拟机或解释器上,所以它们代表(就像 Ruby 一样)到新平台的转换。并发冲突是真正的问题所在,一些新语言提供了强大的解决方案,太多的公司和企业对 10 年前从 C++ 到 Java 平台的迁移仍记忆犹新。许多公司都不愿意冒迁移到新平台的风险。事实上,许多公司对上一次迁移到 Java 平台仍心有余悸。

了解 Scala。

一种可伸缩语言

Scala 是一种函数对象混合的语言,具有一些强大的优点:

首先,Scala 可编译为 Java 字节码,这意味着它在 JVM 上运行。除了允许继续利用丰富的 Java 开源生态系统之外,Scala 还可以集成到现有的 IT 环境中,无需进行迁移。
    其次,Scala 基于 Haskell 和 ML 的函数原则,大量借鉴了 Java 程序员钟爱的面向对象概念。因此,它可以将两个领域的优势混合在一起,从而提供了显著的优点,而且不会失去我们一直依赖的熟悉的技术。
    最后,Scala 由 Martin Odersky 开发,他可能是 Java 社区中研究 Pizza 和 GJ 语言的最著名的人,GJ 是 Java 5 泛型的工作原型。而且,它给人一种 “严肃” 的感觉;该语言并不是一时兴起而创建的,它也不会以同样的方式被抛弃。

Scala 的名称表明,它还是一种高度可伸缩 的语言。我将在本系列的后续文章中介绍有关这一特性的更多信息。

下载并安装 Scala就可以使用。

Scala语言学习:Scala是什么?相关推荐

  1. 第四课 尚硅谷Scala语言学习-面向对象

    第四课 尚硅谷Scala语言学习-面向对象 文章目录 第四课 尚硅谷Scala语言学习-面向对象 第一节 Scala 包 1.1 包基本语法 1.2 包说明 1.3 包对象 1.4 导包说明 第二节 ...

  2. Scala语言学习一——基础语法

    什么是 Scala Scala 是一种多范式的编程语言, 其设计的初衷是要集成面向对象编程和函数式编程的各种 特 性 . Scala 运 行 于 Java 平 台 (Java 虚 拟 机 ) , 并 ...

  3. Scala语言学习开发工具(一)

    一:下载与安装 确保你本地已经安装了 JDK 1.5 以上版本,并且设置了 JAVA_HOME 环境变量及 JDK 的 bin 目录 下载 https://www.scala-lang.org/dow ...

  4. scala语言学习笔记

    ############### #   scala     ##### ############### #1.在Windows下安装scala(配置环境变量SLALA_HOME:安装目录    Pat ...

  5. Spark Scala语言学习系列之完成HelloWorld程序(三种方式)

    三种方式完成HelloWorld程序 分别采用在REPL,命令行(scala脚本)和Eclipse下运行hello world. 一.Scala REPL. windows下安装好scala后,直接C ...

  6. Scala 语言学习之泛型(7)

    ==> 泛型类         ---> T 可以代表任意类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Person[T]{   private ...

  7. Scala语言学习-02-实现十进制转换为二进制(Int类型数据)

    一.测试环境 名称 版本 操作系统 Red Hat Enterprise Linux Server release 7.9 (Maipo) CPU 12th Gen Intel® Core™ i7-1 ...

  8. Scala语言学习笔记——泛型、上下界、视图界定、上下文界定、协变逆变不变、闭包、柯里化

    1.Scala泛型 应用案例1 /*** @author huleikai* @create 2019-05-27 11:23*/ object TestFanXing {def main(args: ...

  9. Scala语言学习-06-传名参数、传值参数、传函数参数的区别

    一.测试环境 名称 版本 操作系统 win10 CPU 12th Gen Intel® Core™ i7-12700H 内存 16G JDK 1.8.0_171 Scala 3.1.2 二.代码 ob ...

最新文章

  1. AI进军新药发现研究?这99页slides了解一下
  2. DFS Gym 100553J Jokewithpermutation
  3. 【百度地图API】百度API卫星图使用方法和卫星图对比工具
  4. Linux 服务器安全技巧
  5. 使用identity+jwt保护你的webapi(二)——获取jwt token
  6. C语言数组相似度比对,某课程设计---文件相似度判断
  7. python交互式绘图比较_python – 基于Tkinter和matplotlib的交互式绘图
  8. ping命令的作用。
  9. Ubuntu16.04 Jupyter安装(Ipython Notebook安装)
  10. php生成GIF动态验证码图片(代码家园)
  11. Mysql安装 | 跟着黑马程序员视频安装Mysql,少走随机密码错误的弯路【有手就行系列】
  12. 根据百度日历获取当年所有天数,以及判断今天是周几 以及是是节假日或者工作日,阴历阳历
  13. 【SQL基础】SQLzoo练习
  14. 磨刀不误砍柴工(一)-高效的第一步
  15. macbookair有没有touchbar_如何评价新 MacBook Pro 上的 Multi-Touch Bar?
  16. 在微信小程序中制作的登录功能一定要考虑不同的入口问题
  17. 网络营销策略常见方法有哪些?
  18. Unet实现细胞分割
  19. uni-app 开发微信小程序 自动化编译,启动项目
  20. vue.js的两个核心

热门文章

  1. GD32F310 (二) 按键轮询输入
  2. VinsFusion中的MEI模型解析
  3. Android刘海屏适配
  4. 华为OD机试题 - 找出重复代码(JavaScript)| 包含代码编写思路
  5. 学生管理系统——Django
  6. 软件测试工作中遇到的痛点,RPA解决方案:几个典型行业痛点工作场景
  7. 大疆Onboard SDK 3.2玫瑰线例程浅析
  8. 以太坊用户体验的痛点
  9. Spring中添加自定义标签
  10. PoW 、PoS , DPoS 算法