Scala是个有趣的语言

       经常读我的博客的人应该知道,我最喜欢的编程语言是Haskell。我喜欢函数式编程,Haskell是一个能把函数式编程推向极致的语言。虽然如 此,我仍然时刻关注着其它新兴的和即将产生的编程语言,特别是函数式的编程语言,所以,当Scala诞生之初我就知道了这种语言。当时,我粗略的对它了解 了一下,并不是很喜欢;我感觉它的那些语法对于我的口味来说过于甜腻,而且这种语言看起来异常的复杂。然而,一些我很尊敬的人都喜欢这种语言,所以我就再 次的看了看。我的评论并不是基于对这种语言的一个全面的了解之上,只是我通过几周的阅读和实验得到的收获。不管怎样,我已经有足够的认识来声 明,Scala是个有趣的语言,值得去研究,特别是当你有Haskell编程背景的情况下。我使用的是一本“阶梯教程”(Programming In Scala by Odersky et al),这本书写的非常好,我全力的推荐大家读一下。

 

       我想学一种新的编程语言主要有两个原因。一个是我想找一种跟目前我使用的语言不同的语言,我想寻找一种另外的编程体验。另一个是我想找一种具有很多我从没见过的有趣的新特征的语言。Scala的出现完全满足了我的苛求。.

本质上来讲,Scala是一种运行在JVM之上的语言,它很快,使用它我可以做图形界面编程,web编程(用它的Lift框架),和移动设备编程 (使用Android,我也知道让Scala程序在Android上运行并不是一个很容易的事)。Scala在这些领域出现的时间比Haskell早的 多。我期望Haskell能最终赶上,但是我现在就已经喜欢上了写这些类型的程序了。

        从理论的角度来看,Scala的诉求是静态类型背景下的函数式编程和面向对象编程的组合。这可不容易做到。在动态语言里倒是容易些(例如Lisp使 用CLOS),而静态类型会使事情变得非常的复杂,尤其是子类型化和继承方面。Haskell可部分的支持面向对象编程(特别是使用类型类和现有类型), 但我在Haskell里没有发现面向对象风格的继承模型,尽管这是十分有用的。Scala有一个非常复杂的面向对象系统,还包括一些诸如显式sub-和 supertype标记,协方差(covariance)和反变(contravariance)标记,等等。这些都超越了我所见过的其它的面向对象的编 程语言。实际上,Scala实现了把所有的函数性特征都作为对象,所以把它称作一种对象-函数式语言并不准确,不如称作为超级面向对象语言更合适。

        我认为Scala的面向对象不是Haskell能比的;它是对于它的这种范式上的一个最佳案例。(我这里忽略掉了那些类型依赖的函数式语言,诸如 Agda/Coq/Epigram,我知道它们,但基本上它们已经不再被当成一种用来做普通编程的语言了。)对于在静态类型的环境中,是否对象已经超过函 数变成一种更基础的结构,我并不清楚。在动态类型语言中,你可以由函数得到对象(可以假设函数就是闭包),或者你可以由对象得到函数,所以两种观念是可以 相互转换的。不论这是不是一种使用静态类型的案例,我想,用两种语言从不同的方向来考虑这个问题是件很有趣的事情。另一方面,我曾学习过 Smalltalk的面向对象特征,我不得不说,我从没见过第二个静态类型的语言具有Smalltalk这样优雅的简单消息传输模型。再一方面,我更希望 用Scala而不是Smalltalk来写一个大型程序。(并且,如果你真的想直接进行消息传输时,Scala也有Actors类库来支持你。)

         另一个Scala里我喜欢的东西,也是Haskell共有的东西,就是他们都有学院理论根源。当你在设计一种具有深奥的类型系统的语言时,了解一些 类型理论会非常的有帮助。Scala和Haskell的设计者都清楚这一点,这也就是在这些语言里有很多高质量的特性的原因。我希望有一天那些把希曼式实 用主义当作理论基础的人会闭嘴,因为事实证明通过学院派设计出来的语言才是解决现实问题的上上之选。

        我会一直关注着Scala,我希望能对它了解的更多。但我仍然喜欢Haskell,我从来不会打算放弃它。 ;-)

 

 

翻译来源:外刊IT评论

 

 

;)

ISO21434 组织网络安全管理(二) 为了实现网络安全工程,该组织建立并维护网络安全治理和网络安全文化,包括网络安全意识管理、能力管理和持续改进。这涉及到指定针对本文档的目标进行独立审计的特定于组织的规则和过程。 为了支持网络安全工程,该组织实施了网络安全的管理系统,包括管理工具和应用质量管理系统。 阅读详情

相关推荐

win10系统下使用Mask_Rcnn训练自己的数据

版权所有,翻版必究。https://mp.youkuaiyun.com/console/editor/html/106094147 运行环境:WIN10,pycharm,相应的CUDA,CUDNN,tensorflow1.15.0,tensorflow-gpu-1.14.0,Anaconda3 第一步:Mask RCNN开源项目:https://github.com/matterport/Mask_RCNN 第一步:数据准备 首先安装labelme进行数据的标注。安装方法pip install labe

fightingxyz的博客 1750

Scala基础

一、简介 Scala是一门多范式的编程语言,一种类似java的编程语言 ,设计初衷是实现可伸缩的语言 、并集成面向对象编程和函数式编程的各种特性。 1.发展背景 联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计Scala。随着大数据领域的兴起,由于他的函数式编程的特点,广泛被应用在spark等 编程中 2.说明 类似于java :Scala源代码(.scala)会被编译成java字节码(.class),然后运行在JVM之上,并可以调用现有的Java类

又小雨的博客 566

SQLite性能优化:从WAL模式到内存映射的深度解析

本文深入解析SQLite性能优化策略,重点介绍WAL模式和内存映射技术的应用。通过合理配置WAL日志、同步策略和事务批处理,SQLite的IO吞吐量可提升3-5倍。结合内存映射和缓存优化,性能可进一步提升至默认配置的50倍,适用于高并发读写场景。

weixin_29231027的博客 456

点评Scala语言适合干什么

在计算机编程领域,每种都有其特点和适用场景,不同的语言在不同的领域中会有不同的表现。就是这样一种语言,它结合了面向对象和函数式编程的特点,使其在某些特定领域表现出色。那么 Scala 到底适合干什么呢?

y632481222的博客 1084

跟着Cell学单细胞转录组分析(五):单细胞转录组marker基因鉴定及细胞群注释

书接上回(跟着Cell学单细胞转录组分析(四):单细胞转录组测序UMAP降维聚类)。完成数据降维和细胞聚类后,最主要的环节和工作就是确定各个细胞群,明确是什么类型的细胞,正群的细胞定群很关键,涉及到整个研究,所以这一步宁愿多费时间,也不要出错。当然,这也不是一蹴而就的,需要反复的确认。 要确定各个群是什么细胞,首先需要了解细胞群的marker基因,因为不同类型的细胞突出 表达的基因也是不同的。这里使用FindAllMarkers鉴定各个细胞群的高表达基因。 DefaultAssay(scedata)

qq_42090739的博客 1万+

跨域问题 - 其他 method 都没有跨域问题,只有delete有跨域的问题

跨域的配置等一切正常,GETPOSTPUTOPTIONS都可以正常访问, 唯独有一个DELETE有跨域的问题, 经过排查发现这个DELETE请求有body, 经过一系列排查, 发现头部有一个不太正常的值是为了避免浏览器的影响, 直接在 postman 中新建一个请求, 竟然也有跨域的问题, 后来把的值改成了请求就可以正常调用了.

galoiszhou的博客 528

大数据之Scala

Scala是一种多范式的编程语言,具有面向对象和函数式特点,它运行在jvm平台上。 Scala的特点:优雅、开发速度快、能融合到Hadoop生态圈。

大数据同盟会的博客 995

数字电子时钟——数字电路课设

本文设计了一种基于中小规模集成电路的数字电子时钟系统,采用模块化设计方法,包含晶振电路(CD4060+D触发器)、计时电路(74HC161计数器)、数码管驱动(CD4511)和整点报时功能。系统实现了60进制秒/分、24进制小时、7进制星期的计时显示,支持手动校时功能,并具备整点报时特性(59分54-58秒5次500Hz低音,59秒1次1000Hz高音)。通过分模块调试与整合,最终实物电路满足设计要求,获得优秀评价。

来自FZU——电子科学与技术专业 1494

scala语言介绍

什么是Scala scala(Scalable Language)是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。 Scala运行于Java平台(java虚拟机上),并兼容现有的Java程序。 面向对象(将对象当作参数传来传去) + 面向函数(方法,可以将函数当作参数传来传去) 为什么要学Scala 优雅:这是框架设计师第一要考虑的 速度快 Spark就是使用Scala编写的,因此为了更好的学习Spark,需要掌握Scala这门语言 =Spark的兴起,带动Scala语言的

程序员杂谈 1万+

15、人工智能社会学:关系视角下的机器相遇

本文探讨了将人工智能视为社会主体的可能性,提出了一种关系视角下的人工智能社会学。通过结合卢西亚娜·帕里西、艾伦·图灵和乔治·赫伯特·米德的理论,强调不确定性在人工智能运行中的核心地位,并分析了人工智能如何通过与社会环境的互动催生新奇性,从而拓展社会学的研究范畴。文章还讨论了人工智能对社会结构和社会互动的影响,以及其作为社会主体所带来的理论和实践意义,为未来人工智能社会学的发展提供了方向。

pea55的博客 74

QT5.12.1报错:1. clang++:error: :fatal error andriod Input/output error

QT5.12.1报错:1. clang++:error: :fatal error andriod Input/output error 解决方式: 1.qt程序不要放在共享目录下编译,直接拷贝到ubuntu系统中编译 2.修改/home/xt/Qt5.12.1/5.12.1/android_armv7/mkspecs/android-clang中 #QMAKE_LINK = QMAKECXXQMAKE_CXX QMAKEC​XXQMAKE_CFLAGS -Wl,–exclude-libs,libgc

xt18971492243的博客 738

【Scala】

1、什么是Scala与历史 1.1概述 Scala是Spark编程常用的语言之一。Scala是Scalable Language的简写,是一门多范式的编程语言。Scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程。 1.2历史 Scala编程语言是由联邦理工学院洛桑(EPFL)的Martion Odersky(马丁.奥德斯基)于2001年基于Funnel的工作开始设计并开发的,设计初衷是要集成面向对象编程和函数式编程的各种特性。由于Martiion Odersky之前的工作是开

qq_56896306的博客 1182

ABB机器人刷功能选项全一篇就够——不怕丢失程序和IO配置数据

ABB机器人刷功能选项

m0_66701835的博客 1260

scala是个有趣的语言

      我想学一种新的编程语言主要有两个原因。一个是我想找一种跟目前我使用的语言不同的语言,我想寻找一种另外的编程体验。另一个是我想找一种具有很多我从没见过的有趣的新特征的语言。Scala的出现完全满足了我的苛求。.  本质上来讲,Scala是一种运行在JVM之上的语言,它很快,使用它我可以做图形界面编程,Web编程(用它的Lift框架),和移动设备编 程(使用Android,我也知...

后知后觉的it路 219

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

[转]Scala是个有趣的语言

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34403693的博客 114

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

有趣的 Scala 语言: 简洁的 Scala 语法

有趣的 Scala 语言: 简洁的 Scala 语法 Scala 是一种有趣的语言。它一方面吸收继承了多种语言中的优秀特性,一方面又没有抛弃 Java 这个强大的平台,它运行在 Java 虚拟机 (Java Virtual Machine) 之上,轻松实现和丰富的 Java 类库互联互通。它既支持面向对象的编程方式,又支持函数式编程。它写出的程序像动态语言一样简洁,但事实上它确是

wzb56的资料库 1413

Scala是门有趣的语言

经常读我的博客的人应该知道,我最喜欢的编程语言是Haskell。我喜欢函数式编程,Haskell是一个能把函数式编程推向极致的语言。虽然如此,我仍然时刻关注着其它新兴的和...

ifeves的博客 107

有趣的 Scala 语言: 函数成了一等公民

有趣的 Scala 语言: 函数成了一等公民 Scala 是一种有趣的语言。它一方面吸收继承了多种语言中的优秀特性,一方面又没有抛弃 Java 这个强大的平台,它运行在 JVM 之上,轻松实现和丰富的 Java 类库互联互通。它既支持面向对象的编程方式,又支持函数式编程。它写出的程序像动态语言一样简洁,但事实上它却是严格意义上的静态语言。Scala 就像一位武林中的集大成者,将过

wzb56的资料库 1683

有趣的 Scala 语言: 使用递归的方式去思考

尊重作者,注明出处:https://www.ibm.com/developerworks/cn/java/j-lo-funinscala1/ Scala 是一种有趣的语言。它一方面吸收继承了多种语言中的优秀特性,一方面又没有抛弃 Java 这个强大的平台,它运行在 Java 虚拟机(Java Virtual Machine)之上,轻松实现和丰富的 Java 类库互联互通。它既支持面向

吟啸徐行 786

有趣的Scala语言: 使用递归的方式去思考

转自:http://developer.51cto.com/art/201308/407614.htm 在初学计算机编程时,我想大多数人的经历会和作者一样,学校为我们挑选一门语言,大多为 C 或 Java,先是基本的数据类型,然后是程序控制语句,条件判断,循环等,书上会教我们如何定义一个函数,会说程序就是一条一条的指令,告诉计算机该如何操 作。同时,我们还会看到如何定义一个递归函

付哥的技术课堂 688

Scala破冰之旅

即使水墨丹青,何以绘出半妆佳人。Scala是一门优雅而又复杂的程序设计语言,初学者很容易陷入细节而迷失方向。这也给我的写作带来了挑战,如果从基本的控制结构,再深入地介绍高级的语法结构,难免让人生厌。 为此,本文另辟蹊径,尝试通过一个简单有趣的例子,概括性地介绍Scala常见的语言特性。它犹如一个迷你版的Scala教程,带领大家一起领略Scala的风采。问...

weixin_34051201的博客 205

scala笔记- 有趣的记录

前言 就是记录一些scala中有趣的特性。   import 排除 import java.math.BigInteger.{ ONE => _, TEN } println(TEN) // println(ONE) compile error 可以把ONE 给排除掉。   抽象类型 package typeless ...

chenjingbo009的专栏 200

scala与Akka的一些源码资源

scala官方源码:https://github.com/scala/scala scala编写的一些有趣的库,框架和工具软件: https://github.com/lauris/awesome-scala 用scala语言实现的一些算法:https://github.com/TheAlgorithms/Scala Akka官方: https://github.com/ak...

ForestCat的专栏 419

编程之美中烙饼排序的scala实现

最近看了《编程之美》,书中讲了很多有趣的小例子,突然发现生活中有很多事情都可以和编程结合起来分析,感觉自己之前的思路真是太窄了,正好目前主要使用的编程语言是scala,于是选取几个例子,动手使用scala实现一遍,有感兴趣的朋友看看就好啦。 代码如下: object CookieSort{ var cakeArray: Array[Int] = Array.empty //炊饼数组

u013597009的博客 438

详述三种现代JVM语言--Groovy,Scala和Clojure

Java的遗产将是平台,而不是程序设计语言。 Java技术的原始工程师们作出了一个明智的决定,就是将编程语言与运行时环境分开,最终这使得超过200种语言能够运行在Java平台上。这种架构对于该平台的长期活力是至关重要的,因为计算机程序设计语言的寿命一般都是比较短。从2008年开始,由Oracle主办的一年一度的JVM语言峰会为JVM上其它的语言实现与J...

weixin_33979745的博客 417
上一篇: 是否应该允许开发人员进入生产环境?
下一篇: 云计算与无状态会话
iteye_16227
博客等级 码龄8年 1粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值