阅读更多

11顶
1踩

编程语言

Computerworld的A-Z编程语言栏目采访了Scala语言的开发者Martin Odersky

 

Scala是强类型语言,设计意图是要整合面向对象编程和函数式编程的各种特性。它吸引了从Web 2.0公司新创公司到大企业如索尼影业的注意,是流行网站Twitter和LinkedIn所用的语言

 

Odersky称Scala这个名字意味着它是一个可扩展的、灵活性很强的语言,可以从一个很小的起点出发,逐步扩充。对新手来说,它有几分像脚本语言, 就如JavaOne ScriptBowl,但它却能做Java所能实现的任何东西。

 

Odersky曾经参与开发Java语言及其编译器,后在10年前移居到瑞士后开始做一些 基础研究工作。他研究了是否能让面向对象编程和函数式编程结合起来。第一个试验成果便是Pizza,但由于他们的开发是基于Java,而Java并不具有 延展性,所以Pizza还很原始。

 

大约在2000年左右,Odersky与瑞士洛桑理工学院的团队一起开发新的语言,能延续与Java的互操作,同时又能 有效整合面向对象和函数编程。最初它被称为Funnel,后来才改名为Scala。2006年他们发布了Scala 2,此后它越来越受欢迎。

 

Twitter在今年初宣布从Ruby转向完全使用Scala

来自: solidot
11
1
评论 共 8 条 请登录后发表评论
8 楼 徐风子 2009-08-31 16:30
night_stalker 写道
scala 是静态类型(编译时决定类型),隐式转换(就算决定了,一个类型还是可以当成其它类型用),不是强类型。

c语言的宏也是在编译的时候决定类型,你说他也是弱类型?
7 楼 RednaxelaFX 2009-08-26 14:34
night_stalker 写道
RednaxelaFX 写道
是强类型吧……隐式转换是编译器trick,下面实际上是包装了对象,而没有改变对象(值)的类型。不像Perl那样,值本身的类型就会随着上下文的不同而改变。

但是 …… 如果不用编译器 trick,按照语言 spec 实现一个弱类型 scala ……

但是强类型和implicit method都是spec里规定的,根据spec实现不出弱类型的Scala……
6 楼 flysheet 2009-08-26 14:28
Scala连Groovy的创始人都吹捧的语言,看来还是还是挺不错的,有空研究研究,究竟这种语言有什么优势
5 楼 night_stalker 2009-08-26 13:33
RednaxelaFX 写道
是强类型吧……隐式转换是编译器trick,下面实际上是包装了对象,而没有改变对象(值)的类型。不像Perl那样,值本身的类型就会随着上下文的不同而改变。

但是 …… 如果不用编译器 trick,按照语言 spec 实现一个弱类型 scala ……
4 楼 RednaxelaFX 2009-08-26 13:26
night_stalker 写道
scala 是静态类型(编译时决定类型),隐式转换(就算决定了,一个类型还是可以当成其它类型用),不是强类型

是强类型吧……隐式转换是编译器trick,下面实际上是包装了对象,而没有改变对象(值)的类型。不像Perl那样,值本身的类型就会随着上下文的不同而改变。
3 楼 night_stalker 2009-08-26 12:27
scala 是静态类型(编译时决定类型),隐式转换(就算决定了,一个类型还是可以当成其它类型用),不是强类型
ruby 是动态类型(运行时决定类型),强类型(一旦决定,一个类型不能当成其它类型用)。

弱类型和隐式转换很相似,和动态类型是两码事。

作为脚本运行的话(动态编译的伪脚本),速度比 ruby 慢很多。
编译运行有速度优势,但不绝对 …… 比起 ruby 的 C 扩展还是慢多了。
2 楼 jackzw 2009-08-25 14:25
Scala要来了?对手是谁?
1 楼 easylife 2009-08-25 12:32
为啥总有人有意或无意忽略一些事实呢
源新闻:http://developers.solidot.org/article.pl?sid=09/08/24/1030237
从发布源新闻和发布源新闻中引用的新闻的昵称们,以及源新闻中无视自己引用的事实来看,有意的成分多了些
厌恶可以,讹传就不对了

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • LLVM Cookbook中文版+英文版.rar

    《LLVM Cookbook中文版》以任务驱动的方式,带领读者编写基于LLVM 的编译器前端、优化器、后端。通过丰富的实例,读者能够从中理解LLVM 的架构,以及如何使用LLVM 来编写自己的编译器。

  • C++ Cookbook 中文版

    http://book.csdn.net/bookfiles/529/10052917890.shtml

  • C++ Cookbook by Eric

    按照来源的不同,有两种类型的头文件:自己编写的头文件和标准库(编译器或者其他库的头文件);对于自己编写的头文件使用。对于标准库头文件使用。

  • LLVM Cookbook

    链接 https://blog.csdn.net/qq_23599965/article/details/88344459 https://github.com/zy445566/llvm-guide-zh 万花筒:用LLVM实现语言(备注:万花筒(Kaleidoscope)是LLVM实现的语言名称) 万花筒:教程简介和Lexer 万花筒:实现解析器和AST 万花筒:代码生成到L...

  • [llvm cookbook] 1、LLVM设计与使用

    了解如何把C语言代码编译为LLVM IR(Intermediate representation)及其他多种形式。与其他编译器(如 GNU Compiler Collection) 不同,LLVM 设计目标是成为一系列的库。

  • LLVM 程序员手册 —— LLVM 4.0 文档 - 可译网

    LLVM 程序员手册 —— LLVM 4.0 文档LLVMLLVMLLVMLLVM

  • LLVM编译器,可以二次开发

    LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。

  • LLVM Cookbook(高清非打印完整版)

    《LLVM Cookbook》以任务驱动的方式,带领读者编写基于LLVM 的编译器前端、优化器、后端。通过丰富的实例,读者能够从中理解LLVM 的架构,以及如何使用LLVM 来编写自己的编译器。 相比于传统的介绍编译技术的书籍,此书更偏向于实战,因此适合熟悉编译但对LLVM 比较陌生的人员,也适合正在学习编译技术并且在寻找实战机会的人员。

  • llvm合集.rar

    LLVM图书合集,包含LLVM Essentials、LLVM Cookbook、Getting Started with LLVM Core Libraries。

  • Cookbook系列之Cpp:类

    问题01:如何初始化成员变量? 你应该总是在构造函数的初始化列表中初始化成员变量,并且避免在构造函数体中进行成员变量的初始化工作。如果这个成员变量是一个类,在初始化列表中进行初始化,只需要一次构造操作;如果在函数体中进行初始化,则需要一次构造和一次赋值操作。此外,初始化列表还可以使你获得自动的异常处理。 引用变量的初始化必须使用初始化列表。根据标准,一个引...

  • 对LLVM的认识与理解(LLVM与传统编译器对比)

    基础概念 LLVM(Lower Level Virtual Machine):是一个编译器(编译器就是把人类可读的 高级语言映射到机器执行码)基础框架、是模块化和可重用的编译器和工具链技术的集合。 LLVM的代码有 3种表示形式:内存编译器中的IR(intermediate representation 中间代码)、存于磁盘的bitcode(也称为字节码——bytecode,由两部分组成:位流bitstream,可类比字节流,以及将 LLVM IR 编码成位流的编码格式。),以及用户可读的汇编码。 ..

  • C++ Programmer's Cookbook C++基础和C++高级

    C++ Programmer's Cookbook C++基础和C++高级

  • 使用Sphinx翻译LLVM的中文文档

    Sphinx是一款非常方便的文档生成工具,以前就早有耳闻,最近计划将LLVM的文档翻译一些,在打开LLVM的文档源文件后发现,整个文档部分整理的非常整洁。下载的最新版LLVM-3.8版的源码,已经完全使用Sphinx生成文档,于是我也学习了一些Sphinx的相关用法。

  • LLVM每日谈之五 LLVM文档介绍

    作者:snsn1984 LLVM的文档挺多,而且都是官方的文档,刚开始接触的时候很容易让人摸不着头脑,这里就简单的介绍下这些文档。希望能给学习LLVM的人提供一些帮助。 当前版本和发布版本的文档: 首先,因为LLVM分发布版本和当前版本,发布版本是正式的对外发布的版本,当前版本是不断更新的最新版本。 目前最新的发布版本是3.1.而LLVM的文档也分发布版本和当前版本。 ...

Global site tag (gtag.js) - Google Analytics