阅读更多

7顶
7踩

编程语言

转载新闻 Scala是个有趣的语言

2010-08-18 11:03 by 副主编 just_cool 评论(5) 有5239人浏览

经常读我的博客的人应该知道,我最喜欢的编程语言是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,我从来不会打算放弃它。 ;-)

 

[英文出处]:Why Scala Is Interesting

来自: 外刊IT评论
7
7
评论 共 5 条 请登录后发表评论
5 楼 tuoxie007 2010-08-19 12:09
看了之后没有任何收获,感觉像是政府工作总结
4 楼 unika_ly12 2010-08-19 11:26
有些人觉得任何赞美某种东西的文章都是软文
3 楼 chensulong 2010-08-19 08:56
见了文章就喊软文真可怕。
2 楼 易卡螺丝君 2010-08-18 22:43
这软文写真2
1 楼 night_stalker 2010-08-18 20:16
软文 ……

发表评论

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

相关推荐

  • Python分形树(完整代码)

    Python绘制一棵分形树的完整代码。和main。其中,函数是一个递归函数,用于绘制分支的每一部分,而main函数则是程序的入口,负责设置绘图环境、初始化画笔状态、调用绘制函数等。我们将逐一分析这两个函数的作用及实现细节。通过这段代码,我们不仅能够理解如何利用递归绘制分形树,还能够深入学习如何使用Turtle库进行绘图。分形树的绘制展示了递归思想在图形绘制中的应用,同时也为我们提供了一个简洁而美观的图形展示方法。

  • 分形几何-分形树源代码

    分形树的生成算法 实现分形树的绘制 有参数输入窗口,通过该窗口输入生成树的各个参数:颜色,大小,旋转角度等等

  • 一个会变涩的分型树

    这是一棵分型树,有枝干,有叶子,会随着你的鼠标移动和点击来变化自己。按下鼠标就会变一棵树,随着鼠标在画面里的移动这棵树会开合。当鼠标移动出画面的时候,树的开合就变成随机的了,看起来像是微风摇曳。 这过程中用到了很多随机数。随机数是个令人着迷的东西,给出一个随机种子,每次变化出的数字都不一样,完全没有规律,然而又在掌控中,非常矛盾但是却真实体现了统一。可能人本性就好赌吧。 分型这个想法非常的有趣...

  • 分形树(Fractal tree)【代码实现】

    C #include <SDL/SDL.h> #ifdef WITH_CAIRO #include <cairo.h> #else #include <SDL/sge.h> #endif #include <cairo.h> #include <stdlib.h> #include <time.h> #include <...

  • 怎么用Python绘制一个分形树,完整版,每行代码都有注释!

    通过递归函数 draw_tree,每次绘制一个树枝并递归地绘制左右子树,同时不断调整笔宽和颜色,最终形成一棵复杂的分形树。它提供了一个简单的绘图环境,非常适合初学者学习编程和图形绘制。# 如果当前层级小于最大层级,递归绘制子树。# 如果当前层级小于最大层级,递归绘制子树。# 调用绘制树的函数,从第4层开始绘制。# 左转90度,使初始方向向上。# 抬起画笔,移动到初始位置。# 设置新的画笔颜色。# 前进当前树枝长度。# 后退当前树枝长度。# 前进当前树枝长度。# 后退当前树枝长度。# 向后移动初始树枝长度。

  • 用Python画一棵分形圣诞树

    分形树,就是用分形的逻辑去画一棵树,所谓分形,若从编程的角度去理解,其实就是简单规则的反复迭代。

  • 分形树

    分形树 如何画一棵树 想象您正在描述如何绘制一棵树。 您可能会说: 画一条垂直线 在该行的顶部,以AV形状绘制两条较小的线(“分支”) 在这两个分支中的每个分支的末端,绘制两个甚至更小的分​​支 继续重复该过程,绘制越来越小的分支,直到分支太小而无法绘制 以不断减小的比例重复相同设计的过程就是一个分形的例子。 使用分形绘制树木可以提供一些有趣而美丽的图案。 在此分配中,我们将使用递归分支函数创建分形树。 建议完成此作业的步骤: 分叉并克隆该存储库 运行程序。 它应该在屏幕上画一条绿线。 这将是分形树的“树干”。 注意三个private变量。 更改这些private变量中的数字将更改树的外观,即分支的大小变小,分支的变小以及分支之间的角度。 现在,我们将编写一个在树上绘制分支的函数。这是一些描述drawBranches函数的伪代码: 声明两个局部double angle1变量:

  • 分形树最简单单的画法

    分形几何学的基本思想:客观事物具有自相似性的层次结构,局部和整体在形态,功能,信息,时间,空间等方面具有统计意义上的相似性,称为自相似性,自相似性是指局部是整体成比例缩小的性质。

  • 分形图形.生命中的树(图,评,代码) (转)

    分形图形.生命中的树(图,评,代码) (转)[@more@] 程序实现的图形为: 2003-7-29036430.gif" align=baseline border=0>XML:namespace prefi...

  • 大量分形图源代码

    分形图c pascal 源代码

  • 递归分形树源码

    分形树的递归算法,模拟生成树,支持选择树叶形状,递归次数,树干高度、树枝长度缩小比例、叶子颜色、枝干偏移角度等。 用的是DELPHI7写的。

  • 分形算法 分形树 很炫的

    用VC实现的树的分形算法,从树开始生长到落叶

  • 产生分形树的小程序的源代码

    自己写的一个在glut的窗口上绘制一棵分形树的小程序,有需要的可以下载

  • 随机分形树

    分形 树 的随机生成,随机分形的matlab代码

  • C++分形树绘制

    /*参考孙博文的《分形算法与程序设计:Visual C++实现》*/     /*程序代码*/ #include #include #include #include extern "C"WINBASEAPI HWND WINAPI GetConsoleWindow (); #define PI3.1415926 const doub

  • 分形图片和代码展示

    <div class="iteye-blog-content-contain" style="font-size: 14px"></div>   package rzy0705a; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; imp...

  • 分形几何算法和实现(C语言)

    初识分形 1、分形的含义: 英文单词Fractal,它是由美籍法国数学家曼德勃罗(Benoit Mandelbrot)创造出来的。其含义是不规则的、破碎的、分数的。曼德勃罗是想用此词来描述自然界中传统欧几里得几何学所不能描述的一大类复杂无规的几何对象。 2、分形的几何特征: 自相似性:自相似,便是局部与整体的相似。 自仿射性:自仿射性是自相似性的一种拓展。如果,将自相似性看成是局部到整体...

Global site tag (gtag.js) - Google Analytics