Hello World
Spiga

幻灯片:Why Java Sucks and C# Rocks

2010-04-18 17:52 by 老赵, 15503 visits

昨天在5173与博客园联合举办的技术交流活动中进行了演讲,现在幻灯片终于可以放出了。当然,光看幻灯片本身的效果不大,在演讲过程中我进行了非常多的代码演示和说明,幻灯片本身只能算是一个辅助手段,因此各位没有来听演讲的朋友,还是等我慢慢地对这个话题进行详细讨论吧。

不过既然幻灯片放出了,那么我进行这场“闹剧”的目的也可以完全公开了,其中有三:

  • 揭露Java语言的生产力的缺失
  • 表达C#的发展现状与常用编程范式
  • 鼓励别人抛弃Java语言,采用Scala。

没错,我的最终目的不是为了“让Java程序员使用C#”,而是“让Java程序员使用Scala”。

这里我不得不多说几句。前天我写了“比较的意义与目的”之后得到了许多评论,从评论中我看得出,许多朋友在评论时并没有看我的文章。为什么这么说?因为我已经在文章里不断强调“只是让Java程序员抛弃Java语言,不是Java平台”,而且“并没有想让Java程序员转向C#”。难道这还不能看出,我是想要推广JVM上的另一门语言吗?只可惜我还是收到了许多类似的回复:

  • 你说要用另一门语言来代替Java,这门语言是什么,C#吗?可笑……
  • 你让黑莓,Android程序员去使用C#?他们看了只会一笑了之……
  • 比较Java和C#语言本身不会有什么结果的,做开发还得看整体情况……

如果不是没有看我的文章,那么我只能想出另一种可能了:有些朋友并不知道JVM上的语言发展情况,并不知道目前JVM平台上除Java外最火热的语言是什么。那我就觉得奇怪了,要知道,现在可是在开Scala Days 2010呢,而且之前连Java之父高司令都高度评价Scala

Java的粉丝们一直认为Java平台的最大优势是开放,我同意。但是,我想Java如此开放,但是为什么一些Java粉丝给我的感觉却是狭隘的心态和视野呢?例如,看到有人说Java坏话了,于是立即热血上涌,文章内容也不用看,文章目的也不去关心,不管三七二十一就在评论中想尽各种办法进行反驳。抛出各种论点,却鲜有论据——我是指靠谱的论据,而不是向某个朋友说的“.NET程序员90%只会拖控件,而Java程序员90%是了解核心技术的”这种莫名其妙的说法。要知道,论点易抛,论据难得。我的文章动辄数千字,就是为了想办法把文章内容说清楚。但是不管怎么努力,我还是会不断发现值得额外详述的地方——更何况在评论中的寥寥数字?

是的,从某个角度来说.NET平台资源是比Java平台要少。所以我觉得很高兴,我可以时刻发现前进的目标。例如有人说Java平台有个地方很好而.NET很糟糕,我不会想办法去驳倒对方,我会很乐意去了解它,然后看看它在.NET平台有没有类似的东西,它的思想能否借鉴给.NET平台,如果发现这种说法有明显问题才去“摆事实、讲道理”。除了Java平台之外,我还关注其他各种技术,让各技术为我所用。

Java平台的确开放,但对于某些Java粉丝来说,这难道只是您用来建立信心的借口吗?我一个封闭的微软平台的封闭的.NET程序员,如果心态和眼界都比您要开阔──就好比,一个Java平台上的Scala语言需要我一个.NET程序员告诉您,这难道不很讽刺吗?还好,我相信说一些没边评论的Java粉丝只是少数盲目分子,而Java领域的大部分朋友还是相当靠谱的。

那么,我单纯比较Java和C#语言有意义吗?当然有,我只要能说明Java语言本身是多么糟糕,让我们有足够的理由转向Scala就行了。

感谢韦恩卑鄙提供演讲录音,关于演讲的详细内容,自然还是请关注的我的后续文章:

Creative Commons License

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

Add your comment

146 条回复

  1. 链接

    韦恩卑鄙 2010-04-18 18:08:53

    啦啦啦 哪里可以上传录音捏

  2. justin
    122.234.248.*
    链接

    justin 2010-04-18 18:10:37

    鼓励别人抛弃Java语言,采用Scala。

    额,为了这的话,起“Why Java Sucks and C# Rocks”的名字就太……

  3. Fred_Xu
    116.227.39.*
    链接

    Fred_Xu 2010-04-18 18:10:59

    昨天膜拜了老赵,讲演很专业啊,佩服的五体投地,在听完您的讲演后感觉Java确实低能了一些。特别是习惯了Linq和Lambda表达式后再去用Java,过程是相当痛苦的。

  4. pixysoft
    121.32.25.*
    链接

    pixysoft 2010-04-18 18:14:06

    到了53就没有图片了?不知道其他人是否遇到

  5. 老赵
    admin
    链接

    老赵 2010-04-18 18:16:04

    @pixysoft: 到了53就没有图片了?不知道其他人是否遇到

    刷新一下看看?我检查过了没有问题。

  6. 链接

    william 2010-04-18 18:29:25

    @韦恩卑鄙
    http://twaud.io/

  7. Simcoder
    113.109.219.*
    链接

    Simcoder 2010-04-18 18:31:37

    对于JAVA与MS的讨论很难在一个时间段内消失,尤其是择业的朋友,不过随着互联网的推广,更多的重视中小型企业,我在广州看到的更多招聘还是.NET,本人也正在找这方面的工作,努力学习,不把时间浪费在争锋相对上!

  8. damngoto
    113.57.67.*
    链接

    damngoto 2010-04-18 18:41:07

    o,楼上的好眼熟

  9. xiaop
    123.185.210.*
    链接

    xiaop 2010-04-18 18:45:38

    老赵,视频有没? 还有我是在104那里没有图片的!!!

  10. xiaop
    123.185.210.*
    链接

    xiaop 2010-04-18 18:47:36

    还有,老赵你那个send my comment的按钮说实话,实在太闹心人了,尤其当我用手机版本看RSS的时候,那个按钮小的简直了。。。 还不如直接在这个输入框下面来个回复呢,还清楚还舒服!!!

  11. and
    111.173.69.*
    链接

    and 2010-04-18 18:51:11

    我们学校计算机毕业! 选择java的一般都混得不好, 选择.net的只有学得好的,都混得好!

  12. 老赵
    admin
    链接

    老赵 2010-04-18 18:55:48

    @xiaop

    我这儿每一页都是好的,重新加载吧。你说用手机看RSS,那么和这个按钮有什么关系啊。

  13. 克伟
    207.46.92.*
    链接

    克伟 2010-04-18 19:02:15

    这PPT写的真是太棒了,悔恨没能听到你的演讲

  14. 链接

    Dy Carl 2010-04-18 19:15:41

    我用了很久的java语言,也体会到java语言里一大堆的繁琐的语法,有些语法比如内部类的实现实在是sucks . 现在我已经全面转向一种更'简单'的java语言groovy了

  15. 链接

    韦恩卑鄙 2010-04-18 19:22:09

  16. grapeot
    207.46.92.*
    链接

    grapeot 2010-04-18 19:34:26

    啊,老赵的slides是在太精彩了,有理有据,条理清晰,让人信服。而且论点也很客观。很期待下面的文章!

  17. Gabry
    210.13.69.*
    链接

    Gabry 2010-04-18 19:45:04

    现场没JAVA牛人来PK,对于这个主题,可惜了

  18. 老赵
    admin
    链接

    老赵 2010-04-18 19:57:07

    @韦恩卑鄙

    昨天居然录音了?

  19. 链接

    韦恩卑鄙 2010-04-18 20:05:10

    个人爱好 里面的咳嗽都是我本人的

  20. 链接

    韦恩卑鄙 2010-04-18 20:06:41

    @Gabry

    话说java的牛人不可能对语言没有怨言啊

  21. zzfff
    222.53.140.*
    链接

    zzfff 2010-04-18 20:14:03

    老赵“折腾”完了,我来发点bia言:)

    我觉得,理工科生有真伪之分,区分标准很简单:粗暴简单。

    把这四字金言嘀咕一万遍,会得出什么结论?赚钱多少是衡量技术强弱的唯一标准。

    微软在企业领域赚钱多吗?SharePoint server,BizTalk server,Exchange server,SQL server,Windows server...(可惜我不是严谨的老赵,不然我会去找数据)

    太阳技术强吗?强就不会卖身了。

    记住:“你”是理工科生,get tmd f**king work done是你存在的唯一目的,其终极价值是:创造财富。

    (我在想,粗暴简单到底是绝对理性呢还是绝对感性?:)

  22. 老赵
    admin
    链接

    老赵 2010-04-18 20:25:27

    @zzfff: 太阳技术强吗?强就不会卖身了。

    技术强和赚钱其实是不等价的,太阳其实技术很强,可惜结果不太好。

  23. zzfff
    222.53.140.*
    链接

    zzfff 2010-04-18 20:30:58

    @老赵

    你还不是理工科生——我所谓的。

    :)

  24. 老赵
    admin
    链接

    老赵 2010-04-18 20:34:20

    @Dy Carl: 我用了很久的java语言,也体会到java语言里一大堆的繁琐的语法,有些语法比如内部类的实现实在是sucks . 现在我已经全面转向一种更'简单'的java语言groovy了

    我下周会在QCon上采访Groovy的创始人Paul King,如果您有什么问题,可以告诉我。

  25. zzfff
    222.53.140.*
    链接

    zzfff 2010-04-18 20:52:53

    照我的“理论”,太阳技术弱并不能得出Java suite弱。只要.net不若就够了(m$的server系已大量使用.net)。

  26. jason
    221.175.47.*
    链接

    jason 2010-04-18 21:40:13

    老赵你上课不会讲英文吧-

  27. crazycode
    58.32.208.*
    链接

    crazycode 2010-04-18 21:42:20

    看过slide了,写得不错,果然是标题党。

    我读出来的主体思想应该是程序员要开拓视野。里面提的大部分思想我是赞同的,如果一个Java程序员在最近三年中都没有注意到JVM的动态化及多语言化趋势,或者没有跳出简单Java语言,言必称SSH,那这个人不是初入行的工程师,就是思想相对保守的操作型人才,或者是正在向管理人员转型的有为青年。相信.net开发或其它开发平台上,这样的人也是占大多数的。

    另一方面,微软向C#这个瓶子塞入了太多的东西,作为当前市场占用率领先的公司,当然可以造就它的流行,但个人觉得,可能总有一天,C#会被所承载的东西压跨。当然,我说的是C#语言,不是.net平台,嘿嘿。

  28. zzfff
    222.53.140.*
    链接

    zzfff 2010-04-18 21:43:01

    其实这个“理论”不是我发明的——小平同志的“猫论”嘛。

    BTW:四川人都务实得令人发指~~

  29. xjb
    222.247.89.*
    链接

    xjb 2010-04-18 21:56:27

    学习老赵这种认真的精神.

    btw:在chrome下,留言如果超过两行,和左侧的ip地址重叠。

  30. 老赵
    admin
    链接

    老赵 2010-04-18 22:03:51

    @crazycode

    我还是觉得不标题党啊,呵呵,内容和标题完全吻合。

    我倒觉得,只要是真的“没注意到多语言”那就是眼界太封闭了,就不是任何类型的人才。我又不是说要有多么了解多么精通,我只是要求知道有这么个东西而已。就像你说的“正在想管理人员转型的有为青年”,转型不一定是坏事,但是管理人员连技术人员该听说过的东西都不知道,这眼界怎么做管理啊。

    当然其实我觉得在国内每个平台大部分人还都是眼界不够宽的,其实以前我倒都是对.NET平台程序员说,不要老是跟着微软,看看开源界,看看社区里的东西,技术会议等等。这次倒真是很多人跳出来了,我就正好也评论一下一部分搞Java的。

    你说C#被压垮这一点,其实我也听说过很多次了。不过我倒觉得,C#的发展状况一直不错(如C# 3.0),但C# 4.0的改变已经缓下来了。而从Anders最近的演讲中,他并没有在语法层面上做文章了,倒是再一些编译器的扩展性上,如Compilers as Services,REPL,解释执行上努力等等。

    这也是我觉得C#不会成为下一个C++的原因,因为增加语言特性不是坏事,这是进步的表现,不妥的只是“盲目”增加语言特性,或是增加“不好”的语言特性。Anders说到底还是个工程师(其他MS的Tech Fellow倒基本都是科学家,在MSR工作的,Anders从来就不是,呵呵),C#交给他我放心,嘿嘿。

  31. 老赵
    admin
    链接

    老赵 2010-04-18 22:04:44

    @jason: 老赵你上课不会讲英文吧

    这倒没有,不过基本所有东西在脑子里用英文说过一遍,就当锻炼英文,呵呵。

  32. 老赵
    admin
    链接

    老赵 2010-04-18 22:07:53

    @xjb: 在chrome下,留言如果超过两行,和左侧的ip地址重叠。

    Chrome的bug,在win xp或2003下没法显示小于10pt的字体。其他浏览器或是其他操作系统上的Chrome就完全正常。

  33. bookcold
    222.79.245.*
    链接

    bookcold 2010-04-18 22:40:04

    能不能把你演示代码打包提供下载呢?这样看幻灯片才更有感觉!哈哈

  34. 老赵
    admin
    链接

    老赵 2010-04-18 22:53:58

    @bookcold

    会有的,不过我在写文章的时候还会进行细化,所以等等吧。

  35. 姜敏
    211.102.147.*
    链接

    姜敏 2010-04-18 23:23:59

    老赵:请教个问题,你这个博客网站是用什么做的,使用的博客模板还是自己开发的?我非常想做一个自己的网站,就是不太会做博客网站啊,老赵指点下.同时你在这写文章还能转移到博客园,这多好啊.

  36. 老赵
    admin
    链接

    老赵 2010-04-18 23:33:20

    @姜敏

    皮肤是基于一个wordpress的皮肤改的,其他都是自己写的,博客网站和普通网站没什么区别,需要什么功能自己做就行了。

  37. 链接

    Ivony 2010-04-18 23:34:15

    听录音觉得没去亏了。。。。。

  38. crazycode
    58.32.208.*
    链接

    crazycode 2010-04-18 23:41:59

    我倒觉得,只要是真的“没注意到多语言”那就是眼界太封闭了,就不是任何类型的人才。我又不是说要有多么了解多么精通,我只是要求知道有这么个东西而已。就像你说的“正在想管理人员转型的有为青年”,转型不一定是坏事,但是管理人员连技术人员该听说过的东西都不知道,这眼界怎么做管理啊。

    你不会真以为我说的“人才”、“有为青年”是褒义词吧?

    当然其实我觉得在国内每个平台大部分人还都是眼界不够宽的,其实以前我倒都是对.NET平台程序员说,不要老是跟着微软,看看开源界,看看社区里的东西,技术会议等等。这次倒真是很多人跳出来了,我就正好也评论一下那些搞Java的。

    当然,我的观点和你的也有不一样,我认为每个人有每个人的世界,有自己的眼界。只会java或C#不一定是眼界低,会scala或几门动态语言,或者紧跟业界潮流也不一定是眼界宽广 :) 做好自己选择的事,love it, play it, enjoy it, 这样每个人的选择都是自己喜欢的选择,说sucks or rocks可能意义不大,不知道你怎么看,反正我是不会去强求别人如何的,当然,项目已经作出的选择需要强求大家遵循。

    我有我自己喜欢的技术,如archlinux、emacs、git、ror,但我不会主动去要求别人也喜欢这些变态(呃,说好听点,Geek)的东西,相反,我会鼓吹ubuntu、eclipse、svn、Spring这样的目前证明容易被接受的(嗯,市场所选择的)东西。至于每个人能达到什么境界,那是个人造化,与时有关,与我无关。

  39. 老赵
    admin
    链接

    老赵 2010-04-18 23:48:16

    @crazycode

    我没说一定要紧跟,我是说,“知道”总归是需要的,“知道”不能说明眼界宽,但是“不知道”肯定是眼界窄了,霍霍。例如你喜欢arch,emacs,git,ror,我喜欢ubuntu,vi,svn(其实我还是喜欢git),django(好吧,其实我也只是简单了解过一些),这都可以说是个人选择,即使别人不喜欢不研究不关注也不能说明什么。但是,如果一个人都“不知道”这些东西的话(呃……还是应该就事论事,比如一个Java程序员不知道JVM上的其他语言),这就是一个问题了。

  40. 老赵
    admin
    链接

    老赵 2010-04-18 23:50:18

    @Ivony: 听录音觉得没去亏了。。。。。

    Ivony兄太给面子了

  41. Popeye Zhong
    58.251.84.*
    链接

    Popeye Zhong 2010-04-19 00:53:49

    没有录音可惜了,要不老赵自己再重新录一遍吧,虽然我以前上课的时候,在C#课上讲解一些C#语言特性时(譬如:Propert[Setter, Getter]、构造函数的调用方式、自定义特性(Attribute)、委托、Boxing/Unboxing、Lambda、Linq...),会特别强调这门语言的美感,以及让学生讨论为什么Anders要这么设计,如果是你去设计C#语言的话,你会怎么做?在讲解的时候,为了体现它的美,经常不得不拿出别的语言来对比一下,正所谓没有对比就看不出差距,没办法。但是,却没有像老赵这样系统的整理这些论据,所以,希望老赵同志能提供视频演示。

    计算机程序语言的语言美感非常重要,这是鄙人欣赏某门语言的一个重要指标。个人感觉C#的语言设计理念与C语言是一样的,那就是“干练”。当然,由于这两种语言的定位不一样,在一些特定具体的设计上,C#更趋严谨与安全,但是,Anders对美感与安全之间的平衡拿捏得确实是非常得体而高明的。就委托(Delegate)这个特性而言,即兼顾了类型安全又照顾到了语言书写的简洁流畅,正是这么漂亮的设计,才为后来版本中的匿名委托(方法)、扩展方法、Lambda、Linq这一系列的组合拳提供了基石。后面的扩展方法、Lambda与Linq绝对不只是语法糖这么简单,其实体现了设计者的设计思想,也正是这一步步稳健有序的升级,才有Anders后来思考的Linq具有领域语言的特质,如果理解到这点,再说什么语法糖,那就有点鸡同鸭讲了。

    再来谈谈C#的属性吧,就是那个Setter和Getter以及索引器,为了不开罪J人,我就拿同是盖子同学的VB(非VB.NET)宝贝来比吧。在老VB中我们定义属性是可以从语法上把Getter和Setter进行分离的,而C#从语法的层面杜绝了这种情况,不光如此,还可以对Setter和Getter分别进行作用域定义,这就是美。或许很多人对此不以为然,窃以为美就是这样平凡,没有粉饰、没有做作,自然而然流畅的让人可以发觉不到却又实实在在。平凡中但见伟大,由此可见一番。

    C#在处处细微处闪烁着美感,这种美不光书写简洁而且表意丰富、灵活,但绝不混乱晦涩。唉,我们除了爱她还能要求她怎样呢...

  42. deepnighttwo
    114.92.141.*
    链接

    deepnighttwo 2010-04-19 01:03:21

    幻灯片看了一遍。作为一个玩了7年Java的程序员,我没找出一丝值得我放弃Java的理由。

    当然,Java不是一门完美的语言。相信现在世界上还没有一门语言从核心到边边角角都无懈可击。否则别的语言早嗝屁了。任何一门语言,都是一种取舍。关键是看语言是不是能够足以应对其所面对的应用场景。就C#和Java来说,我倾向于Java。

    我用过半年的C#,经验很浅薄,对C#基本没啥发言权。但是我确实知道,入了微软的门,就等于入了一条封闭的路。Java是有JSR驱动着发展的,而C#则是微软的一言堂。微软最喜欢做的事情,莫过于用看上去很美的IDE和小功能(语法糖?),让开发者对微软的东西产生依赖。而Java则完全没不是这样,Oracle,IBM,都有自己的JVM实现。

    至于ppt中提到的那些个问题,当然确实是存在的(Java所谓的假泛型,确实也让我觉得不爽了一下)。但是我不得不说这些确实是边边角角的小问题。作为一个程序员,我是真的不介意为了实现一个功能,多写几行代码的。反而是代码写的太少,背后隐藏的细节让我不放心。而且,我用Java语言这么些年了,也没觉得时间大部分是花在了“敲”代码上,真正的时间是花在了构思和设计上。真正这些都敲定了,刷刷几行代码还不是手到擒来的嘛。。。不知道这点赵姐夫是不是同意。

    我觉得,一门好的编程语言就应该是开放的。应该海纳百川。这样才有健康的发展。而微软的C#,在可以预见的未来,肯定都是只能玩转在Windows上的。也肯定都是微软一家说了算的。所以,虽然C#的GUI看上去比Swing漂亮,虽然微软内置.net环境让C#程序貌似可以更方便的运行,但是在大学的时候我还是选择了Java。

    封闭是有坏处的。C#这么些年来,也没有一个模块化的事实标准。而Java中OSGi的实现已经很成熟了,并且已经广泛的在商业领域使用了。为啥没人愿意为C#搞一个。让我的话我也不愿意,凭啥啊,这门语言就你一家说了算,我辛辛苦苦弄出来可能还被微软拒绝,或者说,有可能在发展的很好的时候,微软一个回马枪在自己的.net里面内置个OSGi的框架,这对于别的OSGi实现绝对是致命的打击。从这个角度说,谁也不愿意热脸贴到冷屁屁上,对吧。而Java则是开放的,Java的类库已经将很多优秀的第三方类库引入到自己的标准类库中了,这点微软做得到吗做得到吗(回声X100)。

    至于ppt中说的那几门基于JVM的语言,我大概把玩过一下,没啥大的印象。我还是属于一个比较踏实的人,如果一门语言仅仅是为了让我少写几行代码,我觉得这个语言对我意义不大。毕竟敲代码不是个烦心的事儿,是个乐事儿。我更倾向于灵活性和掌控性。

    至于两门语言谁抄谁的feature,这个争论起来没意义哈。我是先学Java的,后来学C#的时候几乎轻车熟路,我觉得还是C#参考Java的多一些吧,至少开始的时候应该是这样的。

    一门好的语言,不应该让程序员过度的依赖于IDE,不应该让程序员一叶障目不见泰山。应该诱导程序员深入这门语言的内部,让程序员更牢固的掌握这门语言。花花绿绿的外表,也只能看个新鲜而已。C#是啥时候发布的我还不是太清楚。。。不过应该没有比Java晚诞生多久,但是为什么开源项目多是选择Java而非C#?相信项目开发者自有自己的考虑吧。

    当然C#也有自己的优秀之处,当初玩了半年C#,做了个小项目。说实话,那个项目如果用Java做,可能工作量会更大,因为牵扯到很多data binding以及GUI(拖控件)的东西。这方便Java确实不在行。

    总之,在我用来和看来,Java语言不是一门完美的语言,这是肯定的。但是,Java语言是一门足够好的语言。

  43. 老赵
    admin
    链接

    老赵 2010-04-19 01:17:32

    @Popeye Zhong

    等文章吧,没视频……

  44. 老赵
    admin
    链接

    老赵 2010-04-19 01:27:08

    @deepnighttwo

    是啊,C#也没比Java晚多少啦,也就8年。C#开源项目少吗?我觉得很多啊,只是Java更多而已。别人用Java写开源项目多,是别人觉得Java平台好咯,谁说一定是Java语言设计好呀?

    其实我只是在说语言设计本身,您又扯到哪里去了呢?非要证明“总体”来说Java平台比较强……好吧,就算我同意您的看法,但是“语言设计本身”来说Java的确就是糟糕,你咋就非要偏到别处去呢?的确,不同人对于“优秀”的定义会不一样,但是我在讨论时也把自己的定义说清楚了,这不就可以了嘛。

    当然,最关键的地方我觉得还是您以为C#只是让程序员少写几行代码,其实上一篇文章中我已经说的很明白的,就是C#是改变编程思维,真正增加代码质量的语言。我其实想证明的东西(之一)也只是“Java语言从设计上就很麻烦,难以写出How to do的代码”,您同意这个观点,我也就达到目的了。我虽说希望所有人抛弃Java,但是您真觉得Java的缺点可以接受,那么您自然可以继续使用啦。

    总之,从您的说法和例子(比如拖控件)来看,您还是没理解我在讨论什么。唉,既然您已经看过幻灯片了还不清楚,我只能表示遗憾了……可能是因为从幻灯片里看,您可能的确会觉得C#只是少写几行代码吧,等我展开论述一下您就知道了。C#不光是少些代码,是真正思维上的改变,还有一些是Java完全做不到的。

    还有就是啊,C#,CLR都是ECMA标准。C#可以在每个平台上跑,因为有mono

  45. 链接

    Ivony 2010-04-19 01:30:39

    @deepnighttwo

    很少能看到来自Java阵营理性的声音。针对几个我不认同的问题,谈谈自己的见解。若有得罪,望海涵。

    首先选择一门优美的语言,绝对不是说,我们可以少写一些代码,用更少的代码去做更多的事情(这似乎与类库的关系更大)。这关乎到一个语言的表现力的问题,换言之事实上C#的优美之处绝不仅在于“好写”,而是在于“好看”。一个充斥着很多How to do的代码,是不会好看的。就比如说yield语法,如果你去看编译器展开后的结果,不费点脑细胞是弄不明白这里到底想干什么的。对于一个熟练的程序员来说,语法糖所带来的简洁的语法,只要习惯成自然,都不是什么问题。但一大堆How to do的代码,维护起来是毫无美感可言的。

    其次,我不否认您举的OSGi例子是.NET平台现在看起来最大的问题。但事实上C#和.NET可能远比你所想象的要开放,C#和CLI早已作为ECMA的标准。换言之事实上任何组织都可以编写兼容C#的编译器和兼容CLR的运行时。而Mono项目也已经得到第三方厂家的支持。其实就连IDE平台都是开放的,Borland之前就开发过C# Builder和Delphi.NET。但微软的确是过分的强大了,所有的.NET第三方开发组织都不得不面对一个事实就是微软随时可以为.NET Framework增加与他们花了很多人力物力开发出来的组件类似的东西。而就一般而言,还很好用。。。。。。不过我们也能看到微软现在也在很多的与社区合作,公开源代码,姿态在逐步的开放,例如为动态语言实现提供了DLR平台而不是强行推广自己的JScript。

  46. 老赵
    admin
    链接

    老赵 2010-04-19 01:44:14

    @Ivony

    不过说起yield,倒真不是个“好看”这方面的问题了。就好比coroutine,还有AsyncEnumerator,这的确是Java语言完全做不到的东西……我举的例子之一就是这个。

  47. 幸存者
    123.120.9.*
    链接

    幸存者 2010-04-19 02:24:36

    @deepnighttwo

    少写几行代码不重要吗?

    有些东西是质的区别,或许现在还不够明显。例如自行车和汽车就是质的区别,可是世界上第一台汽车大概比自行车还要慢得多。

  48. 链接

    xiaotie 2010-04-19 04:05:18

    换一个角度想sun海纳百川,没像ms这样干是sun太弱了。前几天找pdf renderer,竟然找到一个sun的开源项目,下载下来,超级垃圾,一个2页的英文pdf文件打开后看不见一个字 。。。

  49. fu
    77.203.13.*
    链接

    fu 2010-04-19 05:55:30

    scale有多少厂商支持? 语言不在于多有效率多么完美,关键还是得看有多少重量级的厂商支持。 java有oracle,有IBM,scale除了看见google参上一脚,还有谁?

    java本来就是应用于大型项目,java ee才是企业级引用。.net 用于中小型。语言无优劣,只有适用环境的不同。 java有ssh,大型项目构架才是关键。

  50. 老赵
    admin
    链接

    老赵 2010-04-19 07:57:46

    @fu

    您估计还是没看懂Scala是种什么样的语言,那么我说清楚点吧。Scala是种运行在JVM上的语言,可以直接使用Java类库,并可以编写Java类库或框架给Java语言使用。什么ssh,bbt,Java语言可用的都可以直接用于Scala。Orable,IBM支持Java虚拟机,JDK的发展,它们又不是在支持Java语言的发展。

    这就是我推Scala的原因,否则我就直接建议您使用C#了,呵呵。

  51. 链接

    mfjt55 2010-04-19 08:57:04

    难得这些英语我都还看的懂.看完了,支持一下.期待后续.

  52. 链接

    2010-04-19 09:11:26

    那天的演讲,不说其他的。感觉老赵分析问题比较透彻,还是那天的话,语言本身谁都没有错,主要看从什么角度去看了,事物都是具有两面性的,我不是佩服这个话题,学习的是老赵分析问题的能力。

  53. csnx
    123.97.150.*
    链接

    csnx 2010-04-19 09:29:16

    激情澎湃的ppt,势必将引起java与c#之间的腥风血雨

  54. Ivony
    124.193.150.*
    链接

    Ivony 2010-04-19 09:44:34

    其实,从汇编到C#,每一种程序设计语言的诞生一开始都是为了好看吧。如果你能在写程序的一开始把所有细节都考虑清楚,在大脑中构建整个系统,不需要回溯你的代码。怕是用什么语言都是一样的吧。当然世界上不存在这种程序员,也不存在不需要修改的软件,所以这是不切实际的。

    在没有yield的时代,我们会构建一个ArrayList然后返回。这对于大规模的集合或者无限集是不合适的,但总归我们能找到办法去解决。同样的,异步处理也不是非yield不可,想想我们在JavaScript和传统的Windows应用程序也有着很多的经验。局部变量容器+循环释放控制权。

    但随着这些特性的运用,人们开始在这些新的特性上创造出新的思想和理念。这就好比数学,没有乘法的概念,我们仍然可以用加法来模拟,但乘方、指数这些运算和理论,就无法或者很难在单纯的加减运算上发展出来了。

    如果只是为了解决问题,大体上所有的程序设计语言的能力都是差不多的,从汇编到C#。那我们为什么不用汇编语言去写代码呢?

  55. 老赵
    admin
    链接

    老赵 2010-04-19 09:53:07

    @Ivony

    嗯,异步处理自然是不是非yield不可。我的意思是,有了yield和没有yield,在易写易读性,可维护性,代码量方面的差距,比for + if和声明式代码的差距要大得多。所以yield还是个很重要的功能,并非“少写几行代码”这么简单的问题。

  56. GuangXiN
    123.120.18.*
    链接

    GuangXiN 2010-04-19 09:56:09

    发现大量实例没有出现在幻灯片中,估计老赵是用IDE演示的,看来还是得等文字资料出现。

  57. GuangXiN
    123.120.18.*
    链接

    GuangXiN 2010-04-19 09:59:17

    @Ivony

    在.Net平台上M$发言权的确太强大了,subsonic项目当年就是夹缝中生存,LinQ出来之后几乎是灭顶之灾。

    不过凡事都有两面性,正是因为M$的这种一言堂式的强大,才让.Net社区没有出现Java社区那样的严重差异化。事实上在开源社区做事情死亡风险都很高,.Net开源项目常常死于下一代.Net Framework自带功能,而Java平台的开源项目常常死于另一个更受欢迎的Java开源项目。

  58. deepnighttwo
    216.113.168.*
    链接

    deepnighttwo 2010-04-19 10:06:28

    @老赵, @Ivony

    据说mono在别的平台上跑的不咋地。具体不是很清楚,可能距离商用的标准还有点距离吧。如果C#能无缝跑在别的平台上,对别的平台开发来说也是一件好事儿~其实如果当时delphi把跨平台的东西做了,也许delphi现在就是另一番景象了。罢了罢了罢了。。。delphi这事儿不说也罢,delphi如果不挂,C#的爹还不知道谁来当呢。

    两位的意思我懂了一点,按照文中的意思。“C#不是让人少些了几行代码,而是少些了几行代码这个量变,带动了编程思想和程序设计的质变,也就是从how to do进化为what to do”。前段时间被异步编程折腾的不轻。两位大虾能不能给篇介绍yield的文章,我真想读读。

  59. abc
    58.214.113.*
    链接

    abc 2010-04-19 10:37:02

    好东西 希望老赵能多讲一下各种特性的典型应用。

  60. 链接

    陈轶 2010-04-19 10:39:43

    赞同CrazyCode的意见,这slide有点标题党的意思。

    我的最终目的不是为了“让Java程序员使用C#”,而是“让Java程序员使用Scala”。

    这个slide的标题虽然看起来很酷,但和文科生一样不靠谱。这标题就是治学不严谨。这个标题的目的也很明显,故意搞得很偏激,以激起争论。好比写个文章《为什么美国人民傻B中国人民优秀》或者倒过来,不管内容讲什么,这标题不找抽也难。

    既然要讲scala,至少在标题上有个scala。。。个人意见。。。

    既然要心平气和讨论技术,至少标题起得友善点。。。去和人家谈判,开口第一句就算You Fucking Stupid,不管后面什么优惠条件都会马上干起来。

  61. 老赵
    admin
    链接

    老赵 2010-04-19 10:44:58

    @陈轶

    Scala,只是我给Java的解决方案,我完全可以不提Scala,也照样是一次正经的演讲。难道以Scala内容的5%份额,非要在标题上出现,只是为了照顾Java兄弟们的感觉吗?

    我觉得标题一点不偏激,我丝毫不掩饰我对Java语言的厌恶,标题和内容都完全表达了我的看法,没有任何区别。这标题治学不严谨吗?只是不友善而已,但友善和严谨又有什么关系,我的内容有丝毫不严谨的地方吗?如果非要笑嘻嘻地客客气气地提意见才能被接受的话,这在我看来的确还是心胸狭窄的表现了。有谁是谁领导吗?对于问题狠狠批判有啥不可,非要搞那套表面的做什么……

  62. 老赵
    admin
    链接

    老赵 2010-04-19 10:47:03

    @deepnighttwo

    不要据说嘛,mono发展了很多年了,商用无数,官方站上就有很多案例。至于C#语言的优点,我会详细展开谈的,就等我的文章吧。:)

  63. 刀刀
    65.200.157.*
    链接

    刀刀 2010-04-19 10:50:55

    能不能把讲课中涉及的代码也打包发布出来好不?

  64. Wuvist
    220.255.7.*
    链接

    Wuvist 2010-04-19 11:00:15

  65. GreatGhoul
    124.114.234.*
    链接

    GreatGhoul 2010-04-19 11:08:21

    我感觉jython用着也挺亲切的,Java的确缺点太多。

  66. seek
    58.38.99.*
    链接

    seek 2010-04-19 11:29:13

    还有一点必须关注的是以后,以后risc处理器的架构(如arm)的移动应用会大行其道,楼主认为.net平台还有多少生存空间

  67. 链接

    陈轶 2010-04-19 11:30:38

    第一次听到scala这个名字,跑出看了一下:

    在想scala有什么用处。。。如果用成脚本语言的话,以Java的类库设计而言,完全不是Python之类的对手。。。如果是服务器或桌面应用,那么似乎Java也够了。。。所以Scala要成功,必须干掉Java。。。

    但一门语言取代另一种语言并不是易事。。。Scala运行在 JVM上,也就拥有了跨平台。。。它看起来是个未来的可能分支,一个是Java的更高版本,一个是Scala。。。但成败的关键在于它能不能成为一种潮流,也就是是不是有很多厂商看好它,支持它;或者有大牛到处推荐,众多程序员折服。很难说scala能不能成功。

    它对Java源码的不兼容性其实是劣势,基本上老项目不能用它。。。只有新项目才能考虑它。

    新的思想,新的语言总是一波一波的冲击。鹿死谁手,谁也说不准。Ruby还和Python打成一团呢。。。到最后并存的可能性远大于你死我活。

    至于是不是因为一点点特性在不同语言跳来跳去。。。这个,我不是老板,老板说用什么语言,我就用什么语言。。。你C#牛---没错;优秀---同意;好---的确;切换成C#---这个,老板您说了算,您一点头,我马上解散全体项目组,重新招人。。。

    昨天在家在GoogleAppEngine上用Python写东西,好用啊,聚合RSS只有10行代码。。。我马上想,Why Python Rocks while Java/C# Sucks。。。与其C#和Java大战,不如来学Python/Ruby吧。。。那个可以把代码消灭90%。

  68. sxbyl
    58.38.165.*
    链接

    sxbyl 2010-04-19 11:44:25

    题外话,GMail的Web Clips没法用这个博客的RSS Search Results for 'http://blog.zhaojie.me/' No feed was found at the URL you provided.

  69. xiaop
    218.24.162.*
    链接

    xiaop 2010-04-19 11:44:40

    没别的意思就是用手机看你文章的时候,由于分辨率的关系,send my comment 这个按钮会无限的缩小,以至于很难找到的程度。

    其实这本身也无所谓,用心找找还是能找到的,就是有点别扭罢了。

    btw:上次应该不是用的RSS,而是直接通过ucweb访问的,所以会有回复的问题!

  70. 老赵
    admin
    链接

    老赵 2010-04-19 11:58:38

    @陈轶

    第一次听到Scala就是您的不是啦,要关注Java平台的发展。Scala发展很好,如今JVM上最受关注的语言便是Groovy和Scala,都有大量项目和专属会议,现在就在开Scala Tech Days啊,大牛的推动更是不少了,呵呵。这方面现在连我都很关注,Java程序员反而不关心,这多讽刺啊。

    其实老项目也要写新代码,新代码就可以使用Scala。而且,用Scala写个jar包,给Java用也不是什么麻烦事儿。Python是挺好用的,如果您放弃Java转向Jython我也完全赞同。当然,我也支持您说说为什么Python Rocks,但我还是建议您先等我文章写完了,有个参照您可以下手。否则如果您对C#不太了解,写出来也就不专业了,呵呵。

  71. 老赵
    admin
    链接

    老赵 2010-04-19 12:01:18

    @seek: 还有一点必须关注的是以后,以后risc处理器的架构(如arm)的移动应用会大行其道,楼主认为.net平台还有多少生存空间。

    只要C#现在干的活在以后也需要,那么C#还是可以活的好好的啊,呵呵。

  72. fdrex
    58.242.222.*
    链接

    fdrex 2010-04-19 12:14:11

    好多slide看不了……

  73. 老赵
    admin
    链接

    老赵 2010-04-19 12:14:48

    @sxbyl: 题外话,GMail的Web Clips没法用这个博客的RSS Search Results for 'http://blog.zhaojie.me/' No feed was found at the URL you provided.

    为什么会这样呢?

  74. 风枫峰
    111.165.153.*
    链接

    风枫峰 2010-04-19 13:03:34

    录音文件下载下来,说文件已损坏啊! 谁有能往我邮箱发一份吗? email:hfcc8685@gmail.com 谢谢了

  75. 链接

    高歌 2010-04-19 13:10:42

    老赵的PPT够长啊,118页PPT加代码演示可以讲12个小时了

  76. 阿飞
    210.75.7.*
    链接

    阿飞 2010-04-19 13:51:20

    看老赵最近这几篇blog和相应的评论,感慨一下当大家沟通的东西都不在一个水平上的话,真是争论又多又没啥意思啊

  77. 麒麟.NET
    124.42.13.*
    链接

    麒麟.NET 2010-04-19 14:28:53

    老赵的声音跟WebCast不太一样啊,WebCast上很有磁性,现场的声音有点声嘶力竭。。。

  78. 老赵
    admin
    链接

    老赵 2010-04-19 14:34:11

    @麒麟.NET

    感冒,嗓音嘶哑,讲完这两个小时后第二天我就一个字都说不出了,现在还是说不了话。

  79. 链接

    高歌 2010-04-19 15:36:20

    @老赵

    喝水的时候泡点胖大海,有一定效果的

  80. 链接

    麒麟.NET 2010-04-19 15:49:06

    @老赵

    patpat

    btw:没有代码下载吗?

  81. 老赵
    admin
    链接

    老赵 2010-04-19 15:51:59

    @麒麟.NET

    代码等我写好文章吧,写文章时还会继续考量的。

  82. 链接

    麒麟.NET 2010-04-19 16:14:05

    @老赵

    我正在听录音,猜代码。。。

  83. deepnighttwo
    216.113.168.*
    链接

    deepnighttwo 2010-04-19 16:21:04

    @老赵

    求录音~~

    ps:听说此时此刻凤姐正在盛大呢,求真相~~

  84. 老赵
    admin
    链接

    老赵 2010-04-19 19:14:35

    @deepnighttwo

    录音下载链接在文章最后。

    凤姐的确在盛大,不过不在我的部门,我也没见到,呵呵。

  85. tmac
    124.79.175.*
    链接

    tmac 2010-04-19 20:41:08

    想起一个小细节:老赵开讲之前收起了一本书,可见之前还看着书呢,好用功啊~~~ 的确是俺们的楷模。

  86. deepnighttwo
    114.92.152.*
    链接

    deepnighttwo 2010-04-19 21:48:42

    @老赵

    -_-||| 今天路过碧波路的时候不抬头了……

  87. 链接

    cjc1021 2010-04-19 22:24:35

    好强大。学习+围观

  88. Qualle2008
    77.6.5.*
    链接

    Qualle2008 2010-04-19 22:50:22

    相比Scala,我更喜欢Groovy. Scala自称是融合动态语言优雅特性的静态强类型语言,可惜我觉得Scala一点也不优雅,反而很怪异,可能没习惯。

  89. 老赵
    admin
    链接

    老赵 2010-04-20 00:37:28

    @Qualle2008

    这我可以理解,Groovy的确是一门更容易被接受的语言。话说我最近要去采访Groovy的重要贡献者Paul King,也是Groovy in Action的作者,您有什么想问的问题吗?

  90. 程序员
    124.207.121.*
    链接

    程序员 2010-04-20 16:25:46

    老赵?C#是你开发的么?

  91. 老赵
    admin
    链接

    老赵 2010-04-20 16:29:28

    @程序员

    什么意思?我是用C#做开发的。

  92. 程序员
    124.207.121.*
    链接

    程序员 2010-04-20 16:45:15

    那为啥看你的一些文字,就感觉你像是开发C#的呢?

    搞不懂,像你这样的人怎么还停留在语言层面上的针锋相对呢?

    难道选择了C#的人都牛逼,选择了java的人都该死?或者以后就没活路了?你敢保证么?

    你不过是一个开发C#的人,你知道微软或者sun真正怎么考虑的么?你怎么知道以后会怎么滴怎么滴?

    不管你技术多牛逼,我觉得你人品有问题。

  93. 老赵
    admin
    链接

    老赵 2010-04-20 17:43:32

    @程序员

    那为啥看你的一些文字,就感觉你像是开发C#的呢?

    因为我一直说C#好话吗?我只是实事求是而已,不会因为我做什么而为它说好话。我是热爱技术的,如果您真正热爱技术会理解我的。

    搞不懂,像你这样的人怎么还停留在语言层面上的针锋相对呢?

    我觉得,您现在要做的是改变一些想法和做法,例如改变“语言层面争锋相对是没有价值的”,还有“看文章要仔细”,嗯,我的看法都已经写过了。

    难道选择了C#的人都牛逼,选择了java的人都该死?或者以后就没活路了?你敢保证么?

    我可没这么说,您的理解很可怕,我只是反应一个侧面而已,您强行把它推而广之就是您不对了。就好比,我现在说“番茄比黄瓜营养好”,您就问我:难道吃番茄的人都长得高,吃黄瓜的就活不长?

    你不过是一个开发C#的人,你知道微软或者sun真正怎么考虑的么?你怎么知道以后会怎么滴怎么滴?

    我只是根据现状进行的判断,这也没有问题吧。至于Java以后成长了,我自然强烈欢迎。

    不管你技术多牛逼,我觉得你人品有问题。

    呵呵,唉。

  94. 加浓炮
    221.220.167.*
    链接

    加浓炮 2010-04-20 20:55:25

    写的太棒了。 我非常喜欢Scala,但是对它的语法一直有些不爽,可能是我个人的爱好问题。不管怎么样,Scala将JVM的能力淋漓尽致的发挥了出来。

  95. 老赵
    admin
    链接

    老赵 2010-04-20 21:36:35

    @加浓炮

    是的,JVM很强大,其实也该有一门强大的语言与它般配了,呵呵。

  96. 躺着读书
    59.40.250.*
    链接

    躺着读书 2010-04-20 22:56:50

    我尝试过groovy 和 scala 和 javafx

    就提点我的意见:他们都有成为java的替代者的可能。但是……一个语言最重要的还是要有公司去推。以前的sun太穷了,根本出不起这个钱。

    groovy 和java的语法语言结合最好,但是问题一大堆。我说的不是语言的语法和设计上的,而是易用性上的。比如说IDE的支持,比如说获取modules的便利性。我用groovy的Eclipse插件来获取groovy的modules一个下午都没成功。我想用groovy去实现稍微复杂点的东西,就是两眼一黑。官方网站更是垃圾,我明明要下载一个modules它居然不告诉我怎么下,非要用他们的方式去联网更新。你只要给我jar包就行了,我自己去弄classpath还不行么?Grails确实不错,但是同样也是因为没有公司去推。文档缺乏,这个是最要命的。就一个springsource始终就是小打小闹,自己和自己玩。不过他的前景很不错,如果有大公司去推,我肯定会转向groovy。

    Scala我觉得不值一学。设计得虽然好,但是和Hashkell一样,有共同的毛病,学术化思想极其严重。几乎重写了java的所有语法,就这样的理想主义我想来就害怕。如果没有公司去推,这样的语言我一辈子我不会去学。我宁愿去多看看Hashkell的书。

    javafx,不成熟,再等3-5年还差不多。不过最近在Eclipse大会上,甲骨文说会大力推广javafx不知道是不是真的。如果甲骨文推哪个语言,其他的jvm平台的新语言一律否决。

    我个人比较推荐的还是比较成熟的脚本语言ruby或者python,不必提rails,就凭ruby能够调用windows的dll,同时能够调用java的jar就很值得一学了。有的时候网上已经有了大量现成的实现了,这个时候还要重复造轮子是最愚蠢的行为。我觉得我需要的只是一种粘合剂而已。而ruby确实很合适。

  97. 老赵
    admin
    链接

    老赵 2010-04-20 23:15:59

    @躺着读书

    呵呵,其实您这样的评论才是我最欢迎的,这些问题的确也是值得讨论的,有机会希望您也可以详谈。

  98. 无恙
    58.19.18.*
    链接

    无恙 2010-04-21 00:06:17

    不错,很好,受你的影响,准备关注一下Scala。

  99. 123
    125.33.195.*
    链接

    123 2010-04-21 09:22:35

    声音下载有错误..

  100. xiaoetmac
    222.66.14.*
    链接

    xiaoetmac 2010-04-21 09:37:35

    老赵不容易啊,干着费力不讨好的事情,还得接受各种讨伐,支持一下下~

  101. 老赵
    admin
    链接

    老赵 2010-04-21 09:49:00

    @老赵

    我当然知道F#是类似OCaml的,但是我一直强调它对于异步编程的支持,这和OCmal无关。mina是类库,F#是语言,不冲突的。例如,进行简单封装就可以用F#调用mina,这样代码既容易写又容易读,也稳定且易于维护……只可惜Java上还没有F#。

    至于您要的例子,我以后会举的啊。我现在其实就是在推广F#,您说的这些我都一定会做的,呵呵。

  102. Xenofex
    116.226.6.*
    链接

    Xenofex 2010-04-21 10:28:15

    我学了Scala之后觉得它是门非常棒的语言,它的几个关键特性都非常有用,最重要的是很好的将函数式引入JVM的世界。看完一些朋友说Scala语法很怪异之类的,我觉得Scala语法非常有特色。Scala作者Martin Odersky写的Programming in Scala这本书里详细解释了语法设计成这样的原因,看完之后我收获不小。即使我不用Scala去写卖钱的程序,这也是值得一读的一本书。

  103. roy_hu
    199.111.222.*
    链接

    roy_hu 2010-04-21 10:43:03

    @mcpssx

    客观的说,F#并不是对OCaml的简单抄袭。我对J#的历史不清楚,但我感觉J#的推出是微软为了挖Java的墙角,本身发展的就不好,好像和Sun公司的官司也有一定的影响,微软以前还有自己的JVM,好像官司以后就不再做了。F#的诞生不一样,她并不是为了抄袭别的什么语言,因为OCaml本身也不是大众化的,抄袭OCaml有什么意思?F#最初和Haskell一样,都是微软研究院的学术产品,只不过后来微软看到了函数式语言的前景才决定将其产品化的。F#针对OCaml已经做了很多语法上和特性上的改进,吸取了其它语言比如Haskell的特性,再加上其与.Net的紧密结合度以及IDE的支持度,我认为她已经是一门相当不错的语言了。

  104. roy_hu
    199.111.222.*
    链接

    roy_hu 2010-04-21 10:49:31

    @mcpssx

    ocaml.cn后来转到babelnova.net,再后来就一夜之间挂了,我现在也联系不上站长code17,你知道内幕么?

  105. mcpssx
    59.175.192.*
    链接

    mcpssx 2010-04-21 11:05:31

    @roy_hu

    1、ocaml.cn应该是站长懒得维护了。

    2、F#其实是有问题的。它虽然不是为了抄袭ocaml,但是毕竟语法类似。而ocaml之类的语法就是很怪异的,在unix程序员中都不流行,何况在微软程序员中?

    微软如果推出一个c系语法的函数式语言,还有点希望。我看推广F#恐怕是困难很大的。

    有个故事,javascript作者当年本来是直接推scheme做为mozila的扩展语言,被老板批评后就创造了javascript,不然恐怕现在javascript也不会这么流行。

  106. roy_hu
    199.111.222.*
    链接

    roy_hu 2010-04-21 11:20:04

    @mcpssx

    仁者见仁,智者见智吧。在我看来,ML/Haskell的独特魅力就在于它们的简洁优美的语法(Haskell比ML是更进一步),要是搞个C系的函数式语言,只怕两边不讨好。

  107. roy_hu
    199.111.222.*
    链接

    roy_hu 2010-04-21 11:23:14

    @mcpssx

    babelnova上面有不少好帖子,站长本人也挺渊博的,那些帖子都找不到了,有点可惜

  108. Snake
    120.37.2.*
    链接

    Snake 2010-04-21 11:26:46

    赵兄: 我把waynebaby的录音用牛顿3放大了下声音,并压缩一下门限,让您老的声音更清晰平稳了,这样听就不费劲,也不怕声音忽大忽小了.

    我把地址扔着上面来,希望对大家有用. http://cid-e80fec83fafc2075.skydrive.live.com/self.aspx/.Public/jeffz-why-java-suck-n-csharp-rocks.zip

  109. 123
    209.107.217.*
    链接

    123 2010-04-21 12:44:27

    @Snake

    为什么就是不能下呢,提示压缩文件错误..

  110. Snake
    120.37.2.*
    链接

    Snake 2010-04-21 13:57:06

    @123

    可以下载的啊.

  111. 链接

    alexliubo 2010-04-21 16:23:56

    录音不能下了。。 老大更新下啊。。。

  112. xLight
    59.108.84.*
    链接

    xLight 2010-04-22 14:58:12

    任何东西都是由寿命的

    在发展的过程中不经意的某些设定,也许几年以后就会导致无法适应新的环境。 但这个时候却已经不可能转身回去了。 慢慢的被其他适应新环境的东西排挤,等待着的只有消亡。

    呵呵,我都不知道我上面说的是什么。 其实我最想说的是:我讨厌JAVA的啰嗦。

  113. Mikeshi
    114.82.103.*
    链接

    Mikeshi 2010-04-22 16:26:01

    靠,边听韦恩卑鄙的录音再看PPT,完全有一种听AV影片的感受,特别想看看女主角亲自示范啊——怎么没有录像啊,下次有机会要去现场录影,然后放淘宝上卖……哇咔咔咔咔

  114. Snake
    120.42.196.*
    链接

    Snake 2010-04-23 20:57:16

    @Mikeshi 哇你太卑鄙了..哈哈!!

  115. 链接

    蛙蛙王子 2010-04-24 21:40:08

    看了下PPT,讲的内容很多,确实得学学c#语言的新特性,不是为了炫耀,而是确实有意义,能用的上。 不知道的话,得手工写很多代码去实现,甚至如果你不知道这些用法,会限制你的思维。

  116. www
    119.123.73.*
    链接

    www 2010-04-29 20:58:59

    java确实是在某些方面参考了c#的优点,但是你能说c#的发展过程中就没有参考过java的“缺点”麽?不正是基于此“缺点”改进过来的麽?如果不是这样的话那java就不会存在了,那应该是c#一开始就占据了先机的啊?一个净是落后充满缺点的事物发展了真么长时间,必然有他的道理。还有就是不喜欢有人在那对某些事物指指点点,牛逼的话你再给我写个语言出来啊?这种人也就是闲的蛋疼!!!就知道马后炮,乱摆!!难道用java的人都傻了吗?这么多不好还有那么多人用?

  117. liulixiang1988
    220.181.61.*
    链接

    liulixiang1988 2010-05-21 22:35:12

    能比较一下scala与jython吗?为何这里选择推荐scala呢?我是小菜鸟,还请多多指教

  118. 老赵
    admin
    链接

    老赵 2010-05-21 23:41:25

    @liulixiang1988

    会谈的。

  119. cooerson
    114.252.187.*
    链接

    cooerson 2010-07-11 13:34:46

    53页的代码是怎么弄出来的我想知道。。。

  120. Jiger
    76.118.106.*
    链接

    Jiger 2010-07-19 06:10:31

    老赵在谈语言的比较。说的其他的,其实我喜欢.net平台的另外一个主要原因是visual studio开发环境比java等的开发环境先进很多。

  121. Jiger
    76.118.106.*
    链接

    Jiger 2010-07-19 06:11:38

    对了老赵有没有比较IDE开发环境的演讲的想法。有点浪费时间是吧,随便说说。

  122. nobody
    123.114.202.*
    链接

    nobody 2010-11-11 00:45:02

    说到语法, Java现在不是C#的对手了, 毕竟C#是从Java脱胎了(这么说MS肯定嘴上不认, 但他心里虚着呢), C#几乎把Java凡是称的上好的全借鉴了去了, 而自从加入了Lambda和Linq, 尤其是前者, 更是如虎添翼了(没 用过Lambda的, 去看看再来说好不好)。 而C#的匿名方法的语法那也是相当彪悍, 匿名方法里可以使用 当前上下文中的局部变量,太强了!

    但说到缺点, .net 类库的设计要比C#语法方面明显多了, 我Java用的不多, 类库不太熟悉, 不好比较, 所以 只说.net 类库, 大家也知道MS对保护代码的知识产权那是相当有意识的, 而且是下意识的, 所以其类库在设计 时的中心思想了就没有“开放”这两个字, 大而全, 这是个优点? 但全永远是相对的, 当你发现.net framework 类库不够用时, 你大概要骂娘了, 他们(MS)没给你留太多的坑让你“插”, MS的字典里没有 O-C-P 的概念, MS对 sealed 关键字情有独钟(以至于写 MVC.net 的大牛们不得不定义了大堆的 xxxxBase 类来Wrap MS的原生类了)。

    说起IDE, 总有人好像很牛XX的让为IDE无关痛痒! IDE就是生产力! 语法不好用? 没关系!IDE帮你生成那些你不愿写的难堪的代码! 类库功能不够全? 没关系! 自己写点,网上扒点凑合凑合OK了! IDE太粗糙?God can NOT help you!(当然我不信God)没办法了

    别跟我说用 plain text editer 也可以写出操作系统来,我已经不信这样的豪言状语了。 而这一句早不知壮烈了 多少好东西了。 我个人都觉得免费的 linux 最终没拼过昂贵的 windows 也是输在了相似的情怀上。 没人愿意花 时间在机器才应该干的苦力活上。

  123. 飞飞大象
    59.148.218.*
    链接

    飞飞大象 2011-08-05 22:18:29

    赵大哥你好,看过你的文章,

  124. 飞飞大象
    59.148.218.*
    链接

    飞飞大象 2011-08-05 22:27:38

    赵大哥你好,看过你的文章,自己很惭愧,毕业到现在工作也3-4年了,一直从事.net的所谓开发工作,水平还停留在初级层次,没有太多体会。自己很迷茫,不自己自己方向在哪,技术这条路怎么走,怎么提升。现在有件事情想请教你。公司有个机会让我参加技术培训,但听闻你对北大青鸟这样的培训机构比较排斥,自己也不懂怎么选择,希望你能给点意见。感觉自己C#语法好些,除此之外就好像没了,想往更高层次发现,了解架构、分层、面向对象实际应用这些东西,其实自己也不知道方向在哪,恳请你能给些方向,推荐相关的培训机构学习。感激不尽。flyelephant@yahoo.cn

  125. guest
    218.19.130.*
    链接

    guest 2011-10-27 17:23:56

    老赵是从北大青鸟出来的 ?

  126. Evoque
    222.85.117.*
    链接

    Evoque 2013-04-24 10:39:02

    谢谢老赵, 虽然还没有读完, 感觉一定会收获很多。谢谢、

  127. tommywu23
    218.242.136.*
    链接

    tommywu23 2013-05-13 14:33:45

    其他不说,现在感觉作为.Net工程师,出路真的很难~

  128. 老赵
    admin
    链接

    老赵 2013-05-13 17:53:51

    @tommywu23

    是的,我也觉得现在工资好难涨,30岁前实现年收入百万几乎不可能了……

  129. testlearn
    118.186.252.*
    链接

    testlearn 2013-07-02 17:29:00

    PDF不能看了 有没有能下载的啊

  130. 老赵
    admin
    链接

    老赵 2013-07-02 19:50:36

    @testlearn

    学会翻墙吧。

  131. 我是你的主题曲哥哥
    49.89.25.*
    链接

    我是你的主题曲哥哥 2014-05-13 21:57:39

    虽然文章过去好久了,但说的蛮有道理的。

    文章的心态也很平和。

    什么时候也到CSDN分享分享?指采访。

  132. 链接

    周晓舟 2015-09-10 09:24:49

    这几天把这个“Why Java Sucks and C# Rocks”系列看了一遍,说的很有道理,虽然已经是5年前的事情了。 一直从事net的开发,快9年了,最近公司领导抽风,年底部门所有人员全部转java开发,而且是用一个叫“锐道”的平台去做开发。。。 哎,现在只能再去学java,可惜领导对技术是似懂非懂,一向都是道听途说,不然让他来好好把这个系列读读

  133. xyz
    103.11.245.*
    链接

    xyz 2015-11-03 13:43:14

    顶礼膜拜啊!

已自动隐藏某些不合适的评论内容(主题无关,争吵谩骂,装疯卖傻等等),如需阅读,请准备好眼药水并点此登陆后查看(如登陆后仍无法浏览请留言告知)。

发表回复

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

昵称:(必填)

邮箱:(必填,仅用于Gavatar

主页:(可选)

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

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

使用Live Messenger联系我