Scala语言学习:Scala是什么?
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是什么?相关推荐
- 第四课 尚硅谷Scala语言学习-面向对象
第四课 尚硅谷Scala语言学习-面向对象 文章目录 第四课 尚硅谷Scala语言学习-面向对象 第一节 Scala 包 1.1 包基本语法 1.2 包说明 1.3 包对象 1.4 导包说明 第二节 ...
- Scala语言学习一——基础语法
什么是 Scala Scala 是一种多范式的编程语言, 其设计的初衷是要集成面向对象编程和函数式编程的各种 特 性 . Scala 运 行 于 Java 平 台 (Java 虚 拟 机 ) , 并 ...
- Scala语言学习开发工具(一)
一:下载与安装 确保你本地已经安装了 JDK 1.5 以上版本,并且设置了 JAVA_HOME 环境变量及 JDK 的 bin 目录 下载 https://www.scala-lang.org/dow ...
- scala语言学习笔记
############### # scala ##### ############### #1.在Windows下安装scala(配置环境变量SLALA_HOME:安装目录 Pat ...
- Spark Scala语言学习系列之完成HelloWorld程序(三种方式)
三种方式完成HelloWorld程序 分别采用在REPL,命令行(scala脚本)和Eclipse下运行hello world. 一.Scala REPL. windows下安装好scala后,直接C ...
- Scala 语言学习之泛型(7)
==> 泛型类 ---> T 可以代表任意类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Person[T]{ private ...
- Scala语言学习-02-实现十进制转换为二进制(Int类型数据)
一.测试环境 名称 版本 操作系统 Red Hat Enterprise Linux Server release 7.9 (Maipo) CPU 12th Gen Intel® Core™ i7-1 ...
- Scala语言学习笔记——泛型、上下界、视图界定、上下文界定、协变逆变不变、闭包、柯里化
1.Scala泛型 应用案例1 /*** @author huleikai* @create 2019-05-27 11:23*/ object TestFanXing {def main(args: ...
- Scala语言学习-06-传名参数、传值参数、传函数参数的区别
一.测试环境 名称 版本 操作系统 win10 CPU 12th Gen Intel® Core™ i7-12700H 内存 16G JDK 1.8.0_171 Scala 3.1.2 二.代码 ob ...
最新文章
- AI进军新药发现研究?这99页slides了解一下
- DFS Gym 100553J Jokewithpermutation
- 【百度地图API】百度API卫星图使用方法和卫星图对比工具
- Linux 服务器安全技巧
- 使用identity+jwt保护你的webapi(二)——获取jwt token
- C语言数组相似度比对,某课程设计---文件相似度判断
- python交互式绘图比较_python – 基于Tkinter和matplotlib的交互式绘图
- ping命令的作用。
- Ubuntu16.04 Jupyter安装(Ipython Notebook安装)
- php生成GIF动态验证码图片(代码家园)
- Mysql安装 | 跟着黑马程序员视频安装Mysql,少走随机密码错误的弯路【有手就行系列】
- 根据百度日历获取当年所有天数,以及判断今天是周几 以及是是节假日或者工作日,阴历阳历
- 【SQL基础】SQLzoo练习
- 磨刀不误砍柴工(一)-高效的第一步
- macbookair有没有touchbar_如何评价新 MacBook Pro 上的 Multi-Touch Bar?
- 在微信小程序中制作的登录功能一定要考虑不同的入口问题
- 网络营销策略常见方法有哪些?
- Unet实现细胞分割
- uni-app 开发微信小程序 自动化编译,启动项目
- vue.js的两个核心