Hello World
Spiga

在QCon中了解到的一些有关Groovy和F#的内容

2010-04-24 01:39 by 老赵, 4559 visits

今天参加了QCon Beijing 2010的活动,第一天采访了Groovy和F#两种语言的技术领袖,在交流的过程中也了解了不少内容,趁着还有一些印象就记点下来吧。Groovy方面这次来的是社区中贡献最多(没有之一)的Paul King,他也是《Groovy in Action》的作者之一。F#方面参加QCon的是Timothy Ng,年轻高大帅气,生于香港,四岁去加拿大,毕业后加入微软至今,目前是F#开发团队的Senior Dev Lead。与Tim晚餐时聊了许多,最大的收获是……发现我的英语也不是太哑巴嘛。

关于Groovy

在和Paul的交流过程中,我主要把关注点集中在Groovy语言本身的特点上。对于JVM平台上的语言来说,我个人最喜欢的是Scala,因为它足够灵活,把生产力交还给了程序员,更重要的是这是一门静态语言。静态这点很关键,因为如果要作为Java语言长期的替代者,它必须要在二进制层面做到和Java的对象模型保持一致。这样,只要能用Java的地方就可以用Scala。但对于JRuby,Jython,Groovy,Clojure等动态语言来说(奇怪,JVM上为什么没有什么静态语言呢?),假设,它的一个“类型”并不一定是个标准的Java类,它的“函数”也并非是标准的方法,更没法定义接口,那么这样对于一些面向Java对象模型的执行环境/框架/平台来说,就不能“打保票”说一定也可以执行了。就好比Android平台开发可以使用Java语言,那么我们便可以“不加思索”地确定它也可以使用Scala进行开发(因为它的对象模型和Java可以完全一致,只是代码表现方式不同),但是对于是否能够使用JRuby,就要进一步考察了(自然也不是一定不行)。

当然,对象模型和静态还是动态语言并没有绝对必然的联系,不过JVM上的静态语言基本都会使用Java的对象模型。而动态语言,尤其是语言特性并非Java超集的动态语言,必然需要有所折衷,此时就不一定了。

只是我也不得不承认,相对于Scala来说,Java程序员可能更容易接受Groovy。在Paul看来,Groovy本身便是一门更容易使用,有更多高级特性,且没有那么多“语法噪音”的Java语言。就基本语法来说,一段Java程序可能只需要稍作修改便可以变成一段合法的Groovy代码了。然后,再把Java的各类信息,如类型申明等等一点点删除,便成为了一段更“标准”的Groovy程序。看的出来,从Java语言过渡时学习难度也是Groovy语言设计中思考的一部分。在今天的“Groovy Power Features”中,一开始Paul就开始拿一段Java代码出来进行简化,巨大的差距便一点点体现出来了。

但是对于Groovy毕竟还是一门动态类型的语言,它在编译的二进制形式上,静态检查及性能等方面还是不如Java或Scala。Paul告诉我,其实Groovy本身也还在不断改进,例如在未来的Groovy 1.8和2.0中,其中一个方面便是在Groovy中加入“静态”的特性,例如通过一些强制指定的类型标识或参数,这样便可以获得一部分静态语言的特性,例如编译期的检查及执行性能。对于Groovy来说,对自身的不断演变也是非常重视的,这是我认为一门富有活力的语言所必需的特性。对于Java语言的评价,Paul也认为说Java好比是JVM平台上的汇编语言,这和我的观点一致

关于F#

关于F#,我主要关注它的历史和文化,倒并非语言本身的特性。例如F#为什么叫作F#——因为F表示“Fun”。F#的创始人是微软剑桥研究院的Don Syme。Don是函数式编程的支持者,因为他认为函数式编程语言可以用简单的方法解决复杂的问题。Don的主要研究目标是ML,直到现在它也是学术界的宠儿之一。早在微软.NET平台发布时,Don便希望在.NET平台上实现一个ML语言。后来在实现上发现没有运行时上的泛型支持实在是不便,因此他又将主要精力放在了CLR的泛型支持上,因此他也是CLR泛型功能的主要设计者之一。而CLR 2.0发布之后,他实现一个.NET平台上的OCaml语言也是顺理成章的事情了。选用OCaml作为F#语言的“基础”的主要原因,主要在于Don认为OCaml的语言表现力更强,更为简单,也是一种静态语言,且带有面向对象的特性……那么还有比它更适合CLR的语言吗?Tim说,由于Don参与了CLR的设计,因此对于CLR本身能力十分了解,因此F#可以生成非常高效的IL代码。

F#的第一个编译器是用OCaml语言实现的,猜猜看这是为什么?这是因为,在使用了OCaml实现了F#编译器之后,便可以使用这个编译器重新编译“编译器自身”——F#可以识得OCaml代码。于是在接下来的改进中,直到现在,F#语言的编译器是用F#自身编写的。F#的编译器和核心库的代码可以在微软研究院的网站上获得,使用MSR-SSLA协议发布,简单地说便是种只能看不能碰的协议。Tim说他们的目标是将F#以MS-PL协议发布,也就是真正的开源。目前F# PowerPack增强包的源代码已经开源了,托管在CodePlex网站上。

Tim说,其实微软内部也知道一些问题。例如微软也明白,在许多高校里的教授并不喜欢微软,主要是因为不开源。教授的工作是研究,而不开源就难以深入研究,自然就不受欢迎了。而教授的研究内容往往也会影响其讲课内容的选择,因此这对于微软技术的发展也是不利的。为了设法改变这一点,微软也采取了一些行动,例如主动联系高校,赞助一些学术研究,并邀请教授们参与微软的学术交流,并向部分高校开放一部分源代码——如Windows内核,允许学生们进行改写与尝试。还有便是慢慢变得开放,例如F#,争取成为一个真正开源的语言。现在就有一些类似于这样的情况,因为不开源的缘故,教授会拒绝使用C#或VB.NET教学,但是不少人也表示出对F#的兴趣。

F#其实在微软内部已经进行了一定程度的使用和推广,我们可以发现如今随VS 2010发布的F#是2.0版,那么1.0版呢?其实都是微软内部在交流与尝试。后来微软发现,.NET平台上缺少一门成熟的函数式编程语言,而函数式编程,尤其是F#自身,对于如今不少领域,如金融,数据处理,异步编程等方面的确有许多帮助,因此决定将其真正产品化。有趣的是,F#团队正在招聘跨平台的F#开发人员,这个职位最主要的工作便是提高F#在非Windows平台上的运行质量。Tim说,其实说白了就是改进mono,使其能够更好地作为F#的运行环境。这意味着微软官方已经开始对mono进行了一定的支持,事实上这才是最令我感到高兴的事情。

关于Groovy和F#就先记录这么多吧,如果回忆起新的内容我再进行补充。至于对Paul和Tim的采访,我想InfoQ中文站也会尽快发表,欢迎大家保持关注。

Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名赵劼(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言

Add your comment

39 条回复

  1. xiaoQcn
    121.22.17.*
    链接

    xiaoQcn 2010-04-24 08:06:47

    推荐本经典的算法入门书籍吧(java或C#都行,c也可以),赵哥 最好不要涉及汇编,现在还没看到

  2. 链接

    crazycode 2010-04-24 08:35:18

    你认为JRuby,Jython,Groovy,Clojure等动态语言可能在不同的jvm可能不能使用,因为没有静态类型的原因?这个只是猜测,然后使用猜测误导群众吧?

    应该说,这是不成立的,jruby、groovy产生的是标准的jvm字节码,是可以在支持jvm规范的任何虚拟机上执行的,当然我也认为动态语言生成的字节型在jvm上执行效率不会太好,但动态语言本来就不会优先考虑执行效率的。

    不要拿android说事,android不是jvm,是另一种google写的叫dalvik的虚拟机,不完全符合jvm规范,只是刚好google选择了java作为语言而已。详情可以看一下http://www.infoq.com/cn/news/2007/11/dalvik

  3. absolute
    220.181.61.*
    链接

    absolute 2010-04-24 09:21:50

    有没有视频可以看啊,国内难得的顶尖交流

  4. 老赵
    admin
    链接

    老赵 2010-04-24 09:49:41

    @crazycode: 你认为JRuby,Jython,Groovy,Clojure等动态语言可能在不同的jvm可能不能使用,因为没有静态类型的原因?这个只是猜测,然后使用猜测误导群众吧?

    我可没这么说,这个简单的常识我还是有的,怎么我普通一句话你就想到我要去误导群众,误导群众对我有什么好处?即使我说错了,何必如此猜测我的意图。

    何况我只是说,在有的“执行环境/框架/平台”(不是指JVM),如果不是标准的Java成员,那么有时候就没法使用了。比如,一个JRuby语言,如何实现一个接口?如果不行的话,那么对于那些需要接口的环境/框架/平台,就不能使用JRuby了。而像Scala,它是在二进制层面可以实现Java所有的东西,只是换种更简单的写法而已,就基本可以打包票地替代Java。

    当然,对象模型和静态还是动态语言并没有绝对必然的联系,不过JVM上的静态语言基本都会使用Java的对象模型。而动态语言,尤其是语言特性并非Java超集的动态语言(一个极端的例子,Clojure),必然需要有所折衷,此时就说不准了。

    Android为什么不能说?你的意思难道是,因为Android不是标准的JVM平台,因此可以用Scala编程代替Java,但在标准的JVM平台上就不一定了吗?

  5. 老网虫
    124.14.84.*
    链接

    老网虫 2010-04-24 14:21:06

    虽然很多人喜欢叫你老赵,你也很乐意接受这个称号。 可你除了技术研究的热情以外(尽管技术离真正大牛还有不小距离),其他地方真的没有什么太值得让人称道的地方。

    年轻人,你的路还很长很长。有空的时候关注一下技术以外的世界。

  6. jason
    124.160.98.*
    链接

    jason 2010-04-24 14:39:57

    呵呵,老赵你可以考虑应聘F#的开发人员

  7. 老赵
    admin
    链接

    老赵 2010-04-24 14:43:34

    @老网虫: 年轻人,你的路还很长很长。有空的时候关注一下技术以外的世界。

    呵呵,谢谢指点,不知道您说的“技术以外的世界”具体是指哪些呢?

  8. gakaki
    114.91.198.*
    链接

    gakaki 2010-04-24 16:25:26

    scala和 jruby都可以开发android的 但是步骤太繁琐了。。android上scala编译时间是要比java要多些

  9. 老赵
    admin
    链接

    老赵 2010-04-24 16:47:35

    @gakaki

    JRuby没试过,不过其实Scala开发Android不复杂啊,我试过。编译时间倒不清楚,因为我试过的Android的程序都很小,呵呵。

  10. oraclesun
    118.112.40.*
    链接

    oraclesun 2010-04-24 19:38:20

    对JAVA一窍不通也敢对JAVA评头论足,勇气可嘉,可以反驳但请不要删除我的评论。

  11. Mikeshi
    114.82.139.*
    链接

    Mikeshi 2010-04-24 20:53:44

    好多莫名倚老卖老的人啊,虽然不知道他们的实际年龄。

  12. 老赵
    admin
    链接

    老赵 2010-04-24 21:17:08

    @oraclesun

    我咋反驳啊,你一点理由都没说。如果说我对Java一窍不通,就给点理由嘛。还有我只删不和谐的和说脏话,不担心,呵呵。

  13. Where
    121.62.126.*
    链接

    Where 2010-04-24 21:24:23

    老赵,你丫的多大岁数了?

  14. 菜鸟
    219.134.178.*
    链接

    菜鸟 2010-04-24 21:38:02

    @老网虫

    您还是关注自身视野和道德品德建设吧。

  15. 冰の酷龙
    222.240.11.*
    链接

    冰の酷龙 2010-04-24 23:05:36

    例如主动联系高校,赞助一些学术研究,并邀请教授们参与微软的学术交流,并向部分高校开放一部分源代码——如Windows内核,允许学生们进行改写与尝试。

    真是羡慕= =,我都忘记我们学校在实验室给我们啥待遇去了。。。

  16. 链接

    Ivony 2010-04-24 23:47:39

    看来老赵的确得罪了很多Java阵营的家伙,不过,到现在为止都是些奇怪的家伙。

  17. crazycode
    124.65.129.*
    链接

    crazycode 2010-04-25 01:55:54

    我可没这么说,这个简单的常识我还是有的,怎么我普通一句话你就想到我要去误导群众,误导群众对我有什么好处?即使我说错了,何必如此猜测我的意图。

    何况我只是说,在有的“执行环境/框架/平台”(不是指JVM),如果不是标准的Java成员,那么有时候就没法使用了。比如,一个JRuby语言,如何实现一个接口?如果不行的话,那么对于那些需要接口的环境/框架/平台,就不能使用JRuby了。而像Scala,它是在二进制层面可以实现Java所有的东西,只是换种更简单的写法而已,就基本可以打包票地替代Java。

    那可能是我看错了,当时给我的感觉是这样的: 因为scala是全兼容的静态语言,所以scala相对其它动态语言的jvm实现有优势。

    但你后面这个解释也是有问题的,也是建立在“如果”、“猜测”上面。

    Ruby原生语言没有接口的需要,但JRuby是支持实现接口的,我所知道的groovy也是支持接口的。当然你可能只是想到接口这个问题,可能还有别的问题,所以我也不能说是反驳你什么,只是就事论事。

    而“对于一些面向Java对象模型的执行环境/框架/平台”,如果人家根本就没去保证Java原生的字节码的是能够被执行的,那就不是Scala的优势问题了,可能java都玩不转了。

  18. 老赵
    admin
    链接

    老赵 2010-04-25 08:56:44

    @crazycode

    我不觉得我的话是基于猜测的,确切地说是基于“合理推测”吧,推测是有根据的。我想,我的意思其实都是明确的,至于你说连Java bytecode都不能确切执行的环境,那还真是没有必要讨论了吧,呵呵……不过其实我写了,只是对“对象模型”有要求而已,一个JVM上的语言,只有支持完整的Java对象模型(类、方法、接口、标注……),那么才能用来在任意场合代替Java语言。

  19. Terry Sun
    111.193.159.*
    链接

    Terry Sun 2010-04-25 11:06:07

    1、Tim说,其实微软内部也知道一些问题。例如微软也明白,在许多高校里的教授并不喜欢微软,主要是因为不开源

    2、有趣的是,F#团队正在招聘跨平台的F#开发人员,这个职位最主要的工作便是提高F#在非Windows平台上的运行质量。Tim说,其实说白了就是改进mono,使其能够更好地作为F#的运行环境。这意味着微软官方已经开始对mono进行了一定的支持,事实上这才是最令我感到高兴的事情。

    这两点真的让我很兴奋

  20. crazycode
    124.65.129.*
    链接

    crazycode 2010-04-25 11:41:50

    刚才在qcon的中场休息时见到了老赵,感觉现实世界中更低调一些。

    接着是回复一下老赵。我的意思是,你做的不是“合理推测”,只是对jvm上的动态语言特性不够了解的基础上做的推测。

    比如,一个JRuby语言,如何实现一个接口?如果不行的话,那么对于那些需要接口的环境/框架/平台,就不能使用JRuby了。

    可能这些说法你会觉得我比较咬文嚼字,对不起,我的意思只是希望不要用“可能”这样的话描述一些技术。

    另一个话题,我表态一下我的看法,个人认为,jvm上静态语言很少,而出现大量动态语言的原因,应该说java已经是一门很好的静态语言,而静态语言发展这么多年,已经不会是将来的主要发展方向了;代表高效开发的动态语言会成为一种潮流。

    而函数式语言,个人认为更多是一种新瓶装旧酒,在部分领域会有所发展,但很难成为主流。Lisp,Haskell在传统平台上存在了几十年,但始终没有成为主流,只是在特定的问题域产生重大作用,所以我有理由相信,将来在jvm或.net平台上,这些语言工具也很难有大发展,只会在特定领域会对解决特定问题有很大帮助。

    当然,学习一些比较古老或专用的语言,对开拓程序员视野有很大帮助,这是个人修炼问题,我也有这样的爱好,emacs比我们大部分人的年龄都大,我很喜欢这东西。如果有一天,我们国家有很多很多的程序员更多把这些东西作为一种玩具,并玩出花样,那是我很期望的事情。

  21. 老赵
    admin
    链接

    老赵 2010-04-25 12:05:55

    @crazycode

    非低调,只是客气,呵呵。

    我的确是没有去关注JRuby或Jython……那我就不说JRuby了罢,就说一门我实现的语言吧,叫做Jeffz,是基于JVM实现的Effz语言,它无法定义JVM上的接口,因此会有我说的限制。嗯,其实我就是这个意思。假设是技术推断的重要部分,就像我们什么时候离得开if了啊?

    至于你说Java是一门很好的静态语言,这就是我相当不赞同的一个看法(当然也可能是角度和标准不同吧)。为什么呢?因为有人一直说动态语言生产力高等等,主要例子就是举Java,然后比如拿个Python来比。但事实上,Java并没有发挥静态语言的生产力。C#,Haskell,Scala都是静态语言,但是生产力都远超Java,Java真是一门非常糟糕的生产力低下的静态语言。

    至于你对函数式编程语言的评价,我的看法是:首先,可能它的确对少部分领域更合适,但是如果这些领域愈发重要的话,那么函数式语言自然也会越来越重要。其次,以前函数式语言发展不好的原因,在于缺少个合适的“平台”。语言不是生产力的唯一因素,平台,类库,环境都是很重要的。而函数式语言的门槛往往高于Java等命令式编程,因此在环境缺乏的情况下自然难以被广大开发者接受。但是现在生态环境已经被Java,C#等语言塑造起来了,有好的工具,好的框架、类库、运行时,有大量开发人员。这时候,函数式编语言也有了很好的基础(当然我是指基于Java或.NET平台的语言),已经是时候推进了。

    事实上,从平时使用来看,的确在很多方面(不是少部分)函数式编程语言可以让编程更容易一些,也更易懂(毕竟是声明式代码,比命令式易懂),这个我以后也会多谈的,呵呵。

  22. bob
    166.111.138.*
    链接

    bob 2010-04-25 13:34:50

    你了解monad吗,了解monad transformer吗,了解arrow吗. 你前面的博文都只是函数式语言的一点很肤浅的语法糖.自己实现一个async 就会真正了解一点点函数式语言的东西了。f# 跟haskell比起来设计的差远了,唯一的好处就是多了library,带来的是你离不开特定的公司,没有ide 干不了活.

  23. 老赵
    admin
    链接

    老赵 2010-04-25 13:52:43

    @bob

    只能说了解过一些,呵呵。其实F#的Computation Expression不就是一个类monad的东西么。话说我也正在实现一个async,因为F#虽然有很好的语言基础,但是async类库似乎还有点缺陷,我在设法改进。

    其实有lib和runtime难道是语言可以推广开来,甚至是“基本应用”的重要方面吗?至于你说离不开特定的公司,我没有听懂你的意思,照你这么说,用Java可以离开Java平台吗?用Haskell不也要个GHC,不也要用lib吗?如果你说没有IDE干不了活,其实如果你如果可以用普通的编辑器编写Haskell,那么你也可以用普通编辑器编写F#,一回事。

    至于你说F#的设计比Haskell差远了,我虽然也了解一点Haskell,但是这方面倒真没太多体会了。我能看出两者的“差别”,但看不出“差距”,我很希望听您详细谈一下这个话题。

  24. NealLee
    125.33.195.*
    链接

    NealLee 2010-04-25 18:06:28

    老赵来京城了?

  25. 链接

    clk_z 2010-04-26 09:30:07

    @老网虫

    虽然很多人喜欢叫你老赵,你也很乐意接受这个称号。可你除了技术研究的热情以外(尽管技术离真正大牛还有不小距离),其他地方真的没有什么太值得让人称道的地方。

    年轻人,你的路还很长很长。有空的时候关注一下技术以外的世界。

    确实还有很多路需要老赵去走,但您的旅途已经到达了终点! 一个称谓而已,您也能扯出这么一大堆的夸夸其谈,我真是甚感佩服!

    作为一只菜鸟,虽然对老赵提出的一些问题和想法不能评头论足,但是他这种追求技术的精神以及严谨、用事实说话的态度是值得我们每一个人学习的!技术上的东西,即使现在看不懂,不一定就是永远也看不懂,但前提是起码态度得端正吧!

    即使他说错了又如何,您可以用事实来反驳啊!夸夸其谈谁不会?如果这样更能显示出您(Super Better)的能力,那我也是无话可说!

  26. kios
    210.159.178.*
    链接

    kios 2010-04-26 09:39:30

    其实好多人都想反驳老赵,就是水平不行,加上老赵技术确实很踏实。

  27. 链接

    韦恩卑鄙 @waynebaby 2010-04-26 22:43:58

    看看打酱油

    呀 要我多写点

  28. bob
    220.181.61.*
    链接

    bob 2010-04-27 08:51:36

    Jeffey, 如果你真的对FP感兴趣的话,建议多看看haskell的paper, tutorial的东西属于入门,就像您之前推荐的scip属于eecs的入门教材,前面三章根本不值一提。有一本书好像是叫write your scheme in 48 hours in haskell,对应的就是该书的一个大作业。这些还只是engineering 的东西。理论基础在群论和范畴论,这两者是非常有意思的东西。Don syme 和 John Harrop 写过的两本书对于haskeller的guru来说属于入门级的trick, Don syme相对于其他haskeller的优势在于他对cli 非常了解,也因为他是在ms工作吧,我关注F#也有四五年了,从一开始的目标是 cross-compile OCaml 到后来的逐渐改变的慢慢不兼容,谁也说不清楚一个公司的政策到底是什么,对于新手来说F#显得具有亲和力主要是在visual studio 的intellisense,2010的感知已经很稳定了,但是我觉得写代码应该抛弃使用intellisense 的想法,反复的自己敲打函数名会加深你对函数的理解,就像你刚开始接触电脑,盲打键盘总会觉得不如看着键盘舒服,到后来你慢慢熟悉了盲打以后就会觉得一切是那么的水到渠成. 还有 Java的设计是非常优秀的,它的缺点当时有它的具体环境,开博客和大家分享是一件很称赞的事情,但是这样的标题不值得称道,我也是被你的几篇Java的文章吸引过来的.

  29. 老赵
    admin
    链接

    老赵 2010-04-27 09:03:52

    @bob

    多谢您的建议。我想听一下您为什么觉得Java的设计非常优秀,您可以根据我已经谈过的和以后要谈的内容有针对性地评价一下吗?我也知道Java的缺点往往是受到各方面情况影响,但是这并不说明Java的设计就不糟糕了,不是吗?

  30. 链接

    梓瀚 2010-04-28 07:48:33

    从一个编译器的开发者的角度来说,老赵说的东西大部分都是正确的。其实比较一门语言抛弃库来讲在天朝的现实意义不大,正如袁腾飞同学说的,“天朝只关心能够立刻变成钱的东西。”那么比较一门语言的时候鉴定抛弃库是什么人呢,就是做学术的人。当然任何一个做学术的人并不代表他不做工程,这是不矛盾的。其实搞搞基础研究也是挺有意思的,这就是为什么我明知我的codeplex工程赚不了钱也发不出论文还没是继续写的原因。

    纵观上面的讨论,大部分还是文质彬彬地没有理由地漫骂。我跟老赵一样也在讲没有理由地反对是没有意义的,不过人家就是喜欢这样。为什么呢,如果你否定了java,并且将影响扩大开去,那么那部分人的饭碗就要完蛋了。虽然我认为他们是活该,离不开java跟离不开微软的IDE和C#其实没任何区别。

    总的来说我还是很支持老赵的,说什么话至少都是拿出了理由的。

  31. tom
    58.20.36.*
    链接

    tom 2010-04-30 18:40:22

    支持老赵!如果有人觉得他技术方面的文章有什么不对的地方,请客观批评指正,不要讲一些无意义话或者讽刺==之类。 我真希望国人做技术的,能够各抒己见,认真负责的讨论问题。每个人的能力都是有限的(肯定会有理解或描述不对的地方),我们团结起来力量就是无限的。

  32. 链接

    walklone 2010-05-05 17:20:08

    老赵 这次大会的视频 你知道在哪能搞到么 前一阵子出去了 没来得及关注这个事儿呢。。

  33. 老赵
    admin
    链接

    老赵 2010-05-05 22:53:51

    @walklone

    我也不知道什么时候会有,关注InfoQ中文站吧。

  34. bob
    220.181.61.*
    链接

    bob 2010-05-08 00:35:50

    Jeffery, you can have a try with a Monad Transformer in F#, currently I found no ways to finish such a common task in haskell using FSharp ?

  35. chenkai
    123.10.32.*
    链接

    chenkai 2010-05-24 13:26:40

    持续关注中.F#2.0伴随VS2010发布. 其实我是发现SL开发对大批量数据并行处理上 我打算尝试F#. 正好你这个系列看了收益匪浅.....持续跟进中.....

  36. laohoo
    183.17.31.*
    链接

    laohoo 2010-09-20 16:11:45

    JRuby,Jython,Groovy,Clojure等动态语言来说(奇怪,JVM上为什么没有什么静态语言呢?)

    没看懂这句话,java不算静态语言?还有最新的scala。JVM上静态语言有JAVA就够了。

    作为java程序员,对scala语法比较反感,感觉是为了不同而不同,很不习惯。使用编程语言是为了解决问题,什么语言和技术能够比较快速的掌握,并能解决问题,就应该选择谁,从这点来说,大部分务实的人会选择groovy。如果需要考虑性能,可以用JAVA来编写。虽然scala兼具动态语言和静态语言的特性,可是真的有这种需要吗?用grovvy+java就能解决问题。就算有些语言本身的特性不具备,别忘记grovvy是个没有历史包袱的快速发展的语言,完全可以借鉴过来。

  37. 老赵
    admin
    链接

    老赵 2010-09-20 17:28:16

    @laohoo

    “没有什么静态语言”的意思是“静态语言怎么那么少”。Java绝对是静态语言的反面教材,Java太普及了,大家以为静态语言就是Java这种的,于是造成了冗余、罗唆、开发效率低下的态度。

    Scala是标准的静态语言,不知道你为什么说是“兼具动态语言特性”。话说其实我也认识很多Java程序员都觉得Scala和Ruby等等很好,所以我还是对Scala有信心,毕竟Scala是最有能力替代Java语言的,而像Groovy,由于性能,对象模型等等,可能终究还只能作为Java的补充……

  38. cttet
    137.132.250.*
    链接

    cttet 2011-04-19 15:41:28

    我是一个编程的外行人,在你的博客学到了很多,非常感谢啊—— 我是在用google reader,但是点到文章标题时却进入了出错的页面,希望你能查一下——

  39. 老赵
    admin
    链接

    老赵 2011-04-20 16:40:31

    @cttet

    哪个URL?

发表回复

登录 / 登录并记住我 ,登陆后便可删除或修改已发表的评论 (请注意保留评论内容)

昵称:(必填)

邮箱:(必填,仅用于Gavatar

主页:(可选)

评论内容(大于5个字符):

  1. Your Name yyyy-MM-dd HH:mm:ss

使用Live Messenger联系我