社区编辑申请
注册/登录
影响Scala语言设计的因素列表
开发 后端
本文介绍Scala语言设计的影响因素。在最表层,Scala采用了Java和C#语法的大部,而它们大部分借自于C和C++句法的改变。Scala的统一对象模型是由Smalltalk发起的。

Scala语言设计概述

Scala的设计受许多编程语言和研究思想的影响。事实上,仅很少的Scala的特点是全新的;大多数都已经被以另外的形式用在其他语言中了。Scala的革新主要来源于它是如何构造并放在一起的。在这部分里,我们罗列了对Scala设计的主要影响。列表并不全——因为围绕着编程语言的设计有太多的好点子,没办法全都列举在这里。

51CTO编辑推荐:Scala编程语言专题

Scala语言设计的“蓝本”语言

在最表层,Scala采用了Java和C#语法的大部,而它们大部分借自于C和C++句法的改变。表达式,句子和代码块多数和Java一样,同样还有类,包和引用的语法。除语法之外,Scala还采用了Java的其他元素,诸如它的基本类型,类库和它的执行模式。

Scala也欠了其他语言的很多情。它的统一对象模型是由Smalltalk发起的,之后又被Ruby发扬光大。他的通用嵌套的思想(几乎所有的Scala里的构造都能被嵌套进其他构造)也出现在Algol,Simula,和最近的Beta与gbeta中。它的方法调用和字段选择的统一访问原则来自于Eiffel。它函数式编程的处理方式在骨子里与以SML,OCaml和F#为代表的ML家族语言很接近。许多Scala标准库里面的高阶函数同样也出现在ML或Haskell中。Scala的隐式参数灵感激发自Haskell的类型类;它们用一种更经典的面向对象设定获得了类似的结果。Scala的基于行动类的并发库几乎全是Erlang的思想。

Scala语言设计:特点的继承

Scala不是第一种强调伸展性和扩展性的语言。能够横跨不同应用领域的可扩展语言的历史根源是Peter Landin在1966年的论文“之后的700种编程语言” (这篇论文中描述的语言,Iswim,与Lisp一同为开先河的函数式语言)。把前缀的操作符视为函数的特别的思想可以被回溯到Iswim和Smalltalk。另一个重要的思想是允许函数式文本(或代码块)作为参数,从而能让库定义控制结构。同样可以追回到Iswim和Smalltalk。Smalltalk和Lisp两者都具有灵活的语法,广泛应用在建造内嵌的领域特化的语言。C++是另一种能通过操作符重载和他的模板系统被改造和扩展的可伸展语言;与Scala相较,它是建在低层级,更面向系统的内核上。

Scala也不是第一个集成函数式和面向对象编程的,尽管也许在这个方向上它走得最远。其他在OOP里集成了函数式编程的一些元素的包括Ruby,Smalltalk和Python。在Java平台上,Pizza,Nice和Multi-Java都用函数式思想扩展了类Java内核。还有一些接受了对象系统的以函数式为主的语言;OCaml,F#和PLT-Scheme是其中的例子。

Scala同样也对编程语言领域贡献了一些革新。举例来说,它的抽象类型提供了对泛型类型来说更面向对象的替代,它的特质允许灵活的控件组合,还有他的拆分器提供了独立于表达的方式去做模式匹配。这些革新已在近年编程语言会议中阐述在论文里了。

本文节选自Martin Odersky,Lex Spoon和Bill Venners所著,Regular翻译的《Programming in Scala》的第一章。

【相关阅读】

  1. 喜欢Scala编程的四个理由
  2. Scala融合面向对象和函数概念的方法
  3. Scala的语言特性——可伸展的语言
  4. 学习Scala中的Case类
  5. Groovy创始人:Java面临终结 Scala将取而代之
责任编辑:杨鹏飞 来源: Artima
相关推荐

2022-06-05 21:09:47

Python办公自动化

2022-06-13 12:43:13

Java模块

2022-06-15 11:02:40

网络安全运营

2022-05-11 15:08:52

驱动开发系统移植

2022-06-28 10:58:35

勒索软件攻击事件

2022-06-27 17:46:53

PythonFlask

2022-06-29 09:19:09

静态代码C语言c代码

2022-06-30 09:07:52

2022-06-27 08:07:13

Go语言互斥锁

2022-06-25 21:22:30

编程Rust代码

2022-06-30 10:56:18

字节云数据库存储

2022-06-01 11:14:22

云原生安全架构设计

2022-06-21 09:02:49

python技巧

2022-06-27 23:44:37

云原生云存储云计算

2022-06-02 15:28:42

网络安全信息通信数据保护

2022-06-21 10:34:56

芯片短缺供应链问题

2022-05-05 08:16:47

Spark架构Hadoop

2022-06-27 09:54:38

编程语言JavaC++

2022-06-02 07:13:12

Python3.11编程语言

2022-06-28 05:35:46

勒索软件网络安全网络攻击

同话题下的热门内容

源码探秘:Python 中对象是如何被调用的?吐血推荐17个提升开发效率的“轮子”超全!Python 中常见的配置文件写法Pandas 新手容易犯的六个错误Python 中的万能之王 Lambda 函数整理了100个Python精选库,建议收藏!Python进行数据可视化,你会用什么库来做呢?Spring MVC中@InitBinder注解是如何应用的?

编辑推荐

使用Kotlin做开发一个月后的感想面试官问你什么是消息队列?把这篇甩给他!五大自动化测试的Python框架图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)2018年最流行的十大编程语言,其中包括你用的语言吗?
我收藏的内容
点赞
收藏

51CTO技术栈公众号