Hello World
Spiga

演讲预告:Why Java Sucks and C# Rocks

2010-04-11 16:49 by 老赵, 14175 visits

怎么样,这个标题是不是足够吸引眼球?嗯,我下个星期便打算在5173博客园举办的技术交流会上讨论一下这个话题。

产生这个话题的缘由,是因为大约在一个月前,盛大创新院里有位同事开始分享Android开发方面的体会——Android开发主要使用的是Java语言,大家也应该知道我对Java语言的感受。因此在交流会后,我和他在这方面有过一些讨论。我的主要观点就是,Java这门语言的的发展过于滞后,与如今流行的其他高级语言相比其生产力已经落后太多。对方的看法是,如果认为Java的生产力不足,一般是对于Java语言不太了解的缘故。

您一定可以猜到,后来话题逐渐演变成C#与Java的比较。我一直强调如今的C#已经超越Java太多,恰好那位同事当年也使用过一段时间的C#。于是,他问我有什么事情是C#可以做到而Java做不好的。其实这样的例子有很多,因此他不一会儿便改变了对C#的看法,同时对目前C#的发展现状也产生了比较浓厚的兴趣。后来他建议我不妨详细准备一下这个话题,然后可以在创新院内部的分享交流会上详细讨论一下这方面的话题。

几乎是第一时间我便想出了这样的一个标题:Why Java Sucks and C# Rocks。选择这个标题的主要原因还是足够吸引眼球,而且也正好可以充分表达我对Java语言的看法。在推特上一吹,响应者还真不少。

在准备过程中,博客园的弟兄也找到我,说即将和5173共同举办一个技术交流会,邀请我主讲一个话题。5173?没错,就是那个5173,其中既有Java团队主要又是由.NET构建的电子商务平台,5173。很显然,他们使用的语言是Java和C#,那么还有比那儿更适合比较Java和C#的地方吗?因此几乎是第一时间我就确定了演讲主题。要知道,创新院内部使用Java的人实在太少,我还嫌不够过瘾呢。

在创新院分享会上的“预演”效果不错,同事们大都可以认同C#是一门在各方面超越Java的语言。如果您对这个内容感兴趣,就不妨来参加下周的活动咯。

以下是这次话题内容的简单描述:

Java语言的流行毋庸置疑,在TIOBE语言排行榜上遥遥领先,并占据了榜首位置长达数年时间。然而,从目前的眼光看来,Java语言的生产力已经严重落后于行业中其他流行的语言,C#便是其中的一个典型。自诞生起,C#似乎便和Java有些纠缠不清,因为在当时看来,无论是语言层面还是它们所处平台的目标都十分相似。不过经过了将近10年的发展,如今C#的生产力已经大大领先于Java语言,甚至在近几年的变革中已经成为了Java模仿的对象。本次交流会将回顾Java及C#语言的发展历程,基于它们的最新进展(C# 4.0和Java 7)对比两者在生产力上的差距,并演示C#领先于Java语言的一些常见编程模式。

直到现在,还有许多朋友认为,Java语言和C#的区别并不大,也有人认为C#只是语法糖比较多,没有什么特别的——而我现在便打算详细阐述C#是如何改变开发人员编程理念及思维方式,并在生产力上大大超越Java语言。这是个大话题,在创新院分享会上耗时1小时40分钟,而在下周更是准备2个小时的时间(在这里感谢主办方的支持)。当然,如果只是这么一次演讲,其效果和影响力还是非常有限的。因此,我也打算在会后将这个内容详细地总结成一系列文章,除了发表在博客上,还会转载去一些Java开发社区,看看那儿的弟兄们对这个话题会怎么看。

啥,您说我是去砸场的?不不不,到时候您就知道我的目的了。

因此,我现在也希望您可以帮老赵个忙,例如告诉我国内比较著名的Java社区是哪些。目前我已经确定的有JavaEye,不过有人告诉我其实那里最活跃的其实是Ruby社区。CSDN也是个不错的地方,毕竟那里是国内最大的程序员基地。

哦,对了,还有一件事情请您帮忙:如果要将“Why Java Sucks and C# Rocks”翻译为中文,哪种译法会比较妥当呢?我目前还没有想出既有气势又不粗俗的翻译。我想这一系列文章的标题还是用中文比较合适。

相关文章

Creative Commons License

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

Add your comment

142 条回复

  1. LoydSheng
    124.78.205.*
    链接

    LoydSheng 2010-04-11 16:57:12

    沙发?期待你的系列文章。

  2. wingoo
    118.132.30.*
    链接

    wingoo 2010-04-11 17:04:19

    为什么爪哇糙蛋水鲨牛逼 hoho

  3. Gsanidt
    119.6.11.*
    链接

    Gsanidt 2010-04-11 17:06:12

    支持,希望到时候能共享《Why Java Sucks and C# Rocks》的内容!

  4. superman
    220.191.36.*
    链接

    superman 2010-04-11 17:08:14

    原来这儿不是博客园了,啥时候自己搞了个blog?这是个什么博客系统啊?

  5. 小李刀刀
    220.165.238.*
    链接

    小李刀刀 2010-04-11 17:10:26

    Java已死,C#当立

  6. 老赵
    admin
    链接

    老赵 2010-04-11 17:21:36

    @wingoo: 为什么爪哇糙蛋水鲨牛逼 hoho

    “操蛋”我也想过,不过好像粗俗了。

  7. 老赵
    admin
    链接

    老赵 2010-04-11 17:22:21

    @小李刀刀: Java已死,C#当立

    这就有用C#代替Java的意思在里面了,其实我没这个意思,呵呵。

  8. 老赵
    admin
    链接

    老赵 2010-04-11 17:23:05

    @superman: 原来这儿不是博客园了,这是个什么博客系统啊?

    从头到尾自己写的,用最简单最快的实现方式。

  9. tmac
    124.79.173.*
    链接

    tmac 2010-04-11 17:36:26

    都已经“排练”过了啊,想必到时效果一定不错~

  10. 链接

    维鹏 2010-04-11 17:51:55

    支持,关注。

  11. 向我开炮
    218.26.72.*
    链接

    向我开炮 2010-04-11 18:11:00

    老赵标题应该改为:向我开炮

  12. 链接

    gaobanana 2010-04-11 18:22:25

    期待对此两种语言的深入比较,现在从大学毕业出来的很大部分都做Java了,c#的阵营也是相当的庞大,所以要拿到高薪相对也就困难了些,还是要努力了。 还是继续修炼了

  13. 老赵
    admin
    链接

    老赵 2010-04-11 18:22:35

    @向我开炮

    其实我很希望有人可以有针对性地写一篇Why C# Sucks and Java Rocks,呵呵。

  14. 链接

    onlytiancai 2010-04-11 19:00:55

    咋你的博客跑这儿了这是,标题很震撼,就是不知道啥意思。

  15. 老赵
    admin
    链接

    老赵 2010-04-11 19:01:43

    @onlytiancai

    简单的英文还是要学好啊,俺的ppt也是纯英文的。

  16. ms
    59.42.219.*
    链接

    ms 2010-04-11 19:40:16

    应该叫 why c# sucks less

  17. 链接

    gaobanana 2010-04-11 20:01:59

    感觉英文题目就挺不错,给人想象的余地!翻译出来了可能就没有那种韵味了,呵呵

  18. 老赵
    admin
    链接

    老赵 2010-04-11 20:02:59

    @ms: 应该叫 why c# sucks less

    嘿嘿,您要求真高,不知道啥样的语言才能让您觉得是Rocks呢?

  19. 老赵
    admin
    链接

    老赵 2010-04-11 20:06:05

    @gaobanana: 感觉英文题目就挺不错,给人想象的余地!翻译出来了可能就没有那种韵味了,呵呵

    这英文标题的确不错,不过中文内容还是配中文标题比较好,还有英文一般太占地方了,呵呵。

  20. Frank Xu Lei
    58.41.208.*
    链接

    Frank Xu Lei 2010-04-11 20:56:44

    不希望Java没落,真要如此应该是一大悲剧,c#这些年发展的确是很好,应该和微软的推广策略有很大关系。微软相关的产品做的太周到了。不过还是期望Java能够重振雄风,毕竟竞争才能带来更好的发展。毕竟这种竞争的结果都促使双方不断的完善自己的,Java真的死了,c#恐怕会很寂寞。

  21. 老赵
    admin
    链接

    老赵 2010-04-11 21:01:32

    @Frank Xu Lei

    Java平台肯定不会没落,Java语言我希望它没落,但是估计也很难,毕竟Java是一门适合金字塔底端程序员的简单语言……

  22. StevenChennet
    60.216.239.*
    链接

    StevenChennet 2010-04-11 21:08:21

    我个人认为Java的离去对于.net的开发者来说的确不算是一件好事,甚至可以说java的离去对.net开发者来说是一个很悲痛的消息。没有了学习与竞争的对手,.net可能不会再像原先那样子迅速的成长......

    以前不管哪个版本的VS出来的时候,总是很早就能看到Rtm版并且下载的到盗版,为何这次这么静悄悄呢?是不是MS觉得java走了,也该收点儿版权费了?

  23. 老赵
    admin
    链接

    老赵 2010-04-11 21:29:33

    @StevenChennet

    C#早就不把Java作为学习和竞争对手了。至于JVM,放心肯定会继续坚挺的,呵呵。

    说到底,大伙儿一定要把语言和平台分清楚

  24. ms
    59.42.219.*
    链接

    ms 2010-04-11 21:30:01

    @老赵

    我想是: csharp plus plus 吧。哈哈

  25. oraclesun
    221.219.108.*
    链接

    oraclesun 2010-04-11 22:49:27

    创新院内部使用Java的人实在太少

    啥子创新院哦,居然没一个牛人。

  26. JJ
    202.103.241.*
    链接

    JJ 2010-04-11 23:00:33

    For the proprietary and platform-specific language,i don't wanna give any shit!

  27. 560889223
    117.67.155.*
    链接

    560889223 2010-04-11 23:16:07

    这个标题如何:“为什么C#革了Java的命?”

  28. 链接

    illeeth 2010-04-11 23:33:46

    我的神!我说怎么这么熟悉的名字。。。。。。

    5173,竟然让我想了一会儿才回过神来,一年前我还在那里的说。

    透露一点点内幕:“就是那个5173,其中既有Java团队主要又是由.NET构建的电子商务平台”。这其中的缘由?!老赵可又知道?

    Java团队的产生是因为老总实在是受不了.NET平台臃肿的团队了。没错,就是那个上线要花20几个小时,然后发现上线失败,又花几个小时从线上服务器撤下来的团队。

    对于5173来说,一个糟糕的平台足以毁灭一切。我已经学到这个教训了,5173现在终于反应过来没?轻量化的组件才是王道,像那种把表的字段加到上限,扯出扩展表来解决问题,god......

    老赵,那是个神奇的地方。。。。。

  29. 老赵
    admin
    链接

    老赵 2010-04-11 23:39:24

    @illeeth

    呵呵,我知道,他们一年多前还找我聊过呢。但是,您是否知道他们的现状?

    目前的情况是:他们的.NET平台已经调整的非常稳定,业务开展十分顺利,而新组建的100多人(比.NET团队还多),招募了无数高手的Java团队在耗费了大量时间和金钱之后,到现在还没搞好一个东西,只能游走在一些并非核心业务的边缘系统上了。

    当系统到了一定规模之后,就已经不是技术或平台的问题,完全是设计、架构、实现及团队管理的问题了。重写,完全是一个错误决策。5173的“重写门”可谓是一次非常经典的失败案例,多亏了他们的效益其实很好,能够承受这次失败。其实我很希望他们可以总结一下。让我们拭目以待吧。:)

    那儿,的确是一个神奇的地方……

  30. 老赵
    admin
    链接

    老赵 2010-04-11 23:39:59

    @JJ: For the proprietary and platform-specific language,i don't wanna give any shit!

    您的视野一定要打开啊,mono已经出现很多年了。

  31. 老赵
    admin
    链接

    老赵 2010-04-11 23:42:40

    @560889223: 这个标题如何:“为什么C#革了Java的命?”

    可是C#并没有革了Java的命啊。

  32. 老赵
    admin
    链接

    老赵 2010-04-11 23:45:39

    @oraclesun: 创新院内部使用Java的人实在太少,啥子创新院哦,居然没一个牛人。

    相信我,您很多听说过没听说过的牛人都到那里去了,呵呵。

  33. ariex
    124.171.105.*
    链接

    ariex 2010-04-11 23:49:43

    貌似java的创始人已经离开Oracle了,这个语言的前景比以前更加黯淡了……

  34. 老赵
    admin
    链接

    老赵 2010-04-11 23:59:13

    @ariex

    这倒没什么,Java不是靠一个公司或一个人发展的,是靠一个组织发展的。在发展成熟之后,创始人就算挂了也没事,何况只是换份工作而已,呵呵。

    当然,Java语言的发展……基本没啥发展,倒是JVM和JVM上的其他语言一直不错。

  35. hippo
    116.25.248.*
    链接

    hippo 2010-04-12 00:10:30

    客观地说吧,其实从语言层面来说,C#的确领先于Java,.Net框架也比JRE的优美很多。毫不客气地说,Java的语言是极其简陋的(当然也可以美其名曰“精简的”)。

    不过从社区氛围来说,Java界的开放程度、百家争鸣的景象也是.Net界无法比拟的。 使用.Net作为开发工具时,你爬得越高就越显得曲高和寡,甚至当你需要一些应用程序框架时都需要自己动手完成。

    题外话:为什么不用微软提供的框架? 因为很有可能:1、目前.Net还没提供你需要的框架,比如在.net2.0时Ioc和ORM是需要自己写的,2、.Net提供的框架有bug,不过因为不可以修改后发布运行库所以没法使用,3、.Net提供的框架需要更改版本的.Net或Windows才能支持。比如想在.Net 2.0里使用ASP.Net MVC框架是不可能的,必须打上.net 2.0 sp1补丁,使用EF更加不可能。

    而选Java作为开发工具时,当你爬得高时会发现那是一块广阔的天地,到处都是取之不尽的开放式的资源。

    个人观点,欢迎争辩。:)

  36. robbin
    58.38.83.*
    链接

    robbin 2010-04-12 00:12:46

    纯粹的语法PK安上个什么样的标题都算不上吸引眼球,以语法的精妙而论,lisp早就秒杀绝大多数编程语言了,所以仅仅局限于语法层面的topic,和孔乙己讨论回字的几种写法也没有什么不同。

  37. 老赵
    admin
    链接

    老赵 2010-04-12 00:44:41

    @robbin: 纯粹的语法PK安上个什么样的标题都算不上吸引眼球,以语法的精妙而论,lisp早就秒杀绝大多数编程语言了,所以仅仅局限于语法层面的topic,和孔乙己讨论回字的几种写法也没有什么不同。

    您的意思是,除了LISP外讨论语言都是没有意义的呢?已经听过很多人拿LISP说语言比较没有意义了。在我看来,这种说法这里面表现出的就是一种逻辑的缺乏。打个比方:因为有了冠军,那么对于亚军的争夺和讨论也是没有意义的吗?

    任何语言设计出来都是一个权衡。正好高司令最近有新闻,那么就拿高司令来说吧。高司令本身是LISP高手,但它为什么要设计出Java语言?他的考量是什么?Matz在邮件列表中谈到LISP对Ruby设计的影响,那么他为什么要设计Ruby?Ruby又为什么被人们热爱?高司令当年和Anders Hejlsberg关于C#和Java语言设计的讨论,你觉得就是回字的几种写法吗?Scala和F#引入的异步开发范式对云计算的意义,Haskell提出的响应式编程对于接受客户端输入的应用程序开发的意义,都是不值一提的吗?

    对了,欢迎继续关注我的博客,关于“LISP以后再无创新”的问题,我最近会用F#来应对一下的。F#是一门富含创新的语言,别再老抱着LISP不放了,打开视野,关注最近十几年的语言发展。我有时真的觉得很矛盾啊,理应喜欢LISP的人是会重视语言的,能发现LISP外语言的世界。但是为什么很多人拿LISP好像做挡箭牌一样呢?我怀疑,您真的关注LISP和语言的发展吗?

    国内对于语言的轻视已经深入人心了,虽然在我看来这种轻视本身就是没有逻辑的表现。嗯,理由上面已经说过了,咱现在首尾呼应一把。

  38. 老赵
    admin
    链接

    老赵 2010-04-12 00:51:35

    @hippo

    首先,其实我真认为.NET和Java是一家人,有什么.NET的技术是没法从Java那边学到的呢?.NET爬到顶了(且真爬到顶了吗?),就向Java学咯。我就从Java那里学了很多,这让我.NET越用越顺利,两者完全不矛盾。而且,越向上,越来越多的东西是和具体技术平台无关的。

    其次,.NET平台上的框架类库并不少,少的只是微软带来的而已。.NET开源界虽不如Java活跃,但也够用了。比如你说.NET 2.0没有ORM,其实很早就有NHibernate了,且一直很好用。不用什么都等微软出来才算是“可用”。.NET开源界和Java开源界都是“开源界”,它们的能力和可靠性是一致的。

    最后就是,微软在兼容性方面做得非常好,无论是理论总结还是实际都是出成果的,比如觉得想用ASP.NET MVC就装.NET 3.5咯,保证您.NET 2.0的程序运行顺畅。

    其实,一直说Java社区开放。但是,认为.NET平台只有微软的东西好用,以及Java和.NET是割裂的,这些看法本什么就是不开放的。我虽然是.NET程序员,但我强烈认为我的心态比无数开源界程序员要开放,呵呵。

    当然,我现在只是在讨论语言,关于平台的问题有机会再说,呵呵。

  39. Kurodo
    124.72.73.*
    链接

    Kurodo 2010-04-12 01:22:18

    想不到,最终直接站出来说C#超过Java的人,还是老赵啊.支持一下老赵

  40. 链接

    Ivony 2010-04-12 08:21:05

    Java团队或许是一个权利旋窝中的产物,也许真的不关乎技术。

    一个外行领导内行的团队,一个从来没经历过失败和挫折的团队,显然并不会做得比现在这个经历过无数惨痛教训的团队更好。

    而.NET团队,其实情况也并不是不可收拾。关键性问题只有几个,解决了便可以健康发展。可惜的是每个人都知道问题在哪里,但每个人都不吱声。我在里面装傻装了一年实在没意思走人了。

    重写,从技术上来说显然是一个错误的决策,但从公司的战略上来说,恐怕却是正确的。因为不能期望一个组织自己从内部自发的完成一个毁灭重生的过程。

    其实一直在回想,5173的这种模式问题到底出在哪里?在5173日子,5173犯的错误,那些教训,对我而言真是受益无穷的。

  41. JJ
    202.103.241.*
    链接

    JJ 2010-04-12 08:38:47

  42. 老赵
    admin
    链接

    老赵 2010-04-12 09:09:19

    @Ivony

    原来老兄原来是在5173干活的……不过最近了解.NET团队那边似乎已经有起色了,目前进展不错,我也希望和他们有更多交流……

  43. hippo
    116.25.248.*
    链接

    hippo 2010-04-12 09:09:20

    @hippo 首先,其实我真认为.NET和Java是一家人,有什么.NET的技术是没法从Java那边学到的呢?.NET爬到顶了(且真爬到顶了吗?),就向 Java学咯。我就从Java那里学了很多,这让我.NET越用越顺利,两者完全不矛盾。而且,越向上,越来越多的东西是和具体技术平台无关的 ……

    抛弃运行环境、部署的平台来讨论语言的优越有欠妥当,至少香港小姐选举时都声称“美貌与智慧”并重(虽然观众都只关心美貌和身材 :)),所以要比语言的话应该还要考虑运行环境这样才能得出“综合分”。

    1、比如说运行环境吧,一个Web应用你要部署在Windows Server系统的电脑上吧,那么你只能选2003或者2008。为什么不选 *inux + Mono 呢?性能和稳定没得保障,那为什么非得用 *inux 呢?因为便宜,不要简单认为Windows 2003不就几千元嘛,因为一旦选了操作系统其他的应用服务程序就得配套,比如email服务啊、负载均衡服务啊、分布式文件系统啊、身份验证系统…… 数据库服务倒是可选免费的。全部加在一起,比养个情人还贵。听说 *inux 的维护成本也很高啊?使用事实来说吧,一个程序员培训1个月左右就可以把 *inux 和相关的服务玩得团团转了。

    2、再比如说应用框架吧,没错.net里可以用 NetAnt,log4net,NHibernate,Spring.Net,nLucene, Castle ... 可是这些不是 .Net 原生的,是 Java 的移植品,使用的感觉有点驴唇不对马嘴,比如要获取一个对象数组的元素要这样写: SomeObject obj = (SomeObject)doc.get(1); 而不能这么写 SomeObject obj = doc[1];。还有一个很致命的,因为移植任务是枯燥无趣的,到后期很多Java框架新版本的根本就没人移植了。 好了,为什么不用 .Net 3.5 呢?.Net 3.5 有 WCF,EF,ASP.Net MVC, 即将还有 Unity, Cache ……,这一切都很完美,只不过我等了几年才等到这些东西,少女都等到残花败柳了,这笔数怎么计算?何况现在的少女又有新的追求了,Java界可以满足她,而.Net,听说下一个版本有,具体可用时间不明。

    3、社区环境,个人认为最重要的。用 .Net 写一个 ORM 框架发布到博客园会被人骂“重复造轮子的SB,为什么你冥顽不灵不用DLinq和EF呢”。同样的思想同样的几个类,发布到 Java 社区,水平好的,有新意的,没准还有几个人相互研究,在开源协议下共同完善,于是乎就出现第二个 Hibernate 了,于是乎愈来愈多人使用,自己的虚荣感顿时上升,瞧,老外都用我的框架。

    或者这么说,c#和Java真的没什么好比较,特别是综合分方面,毕竟我还是个.Net程序员,也不能发太多牢骚。只是如果博主把标题改为: Why Java language sucks and c# rocks 我会 100% 举手赞成。

  44. 老赵
    admin
    链接

    老赵 2010-04-12 09:13:57

    @JJ: Richard Stallman Says No To Mono

    教主嘛,有啥好说的。:)

    话说这里还有一篇文章:On Richard Stallman by Miguel de Icaza(mono创始人)。

    文章很短,评论很长。

  45. 老赵
    admin
    链接

    老赵 2010-04-12 09:25:48

    @hippo

    别担心,我这里写Java Sucks只是在说Java语言(不能只看标题,要看文章内容和我的评论啊──而且如果这里Java是指平台的话,又怎能和C#相比呢?)。

    就排开mono不说吧,虽然我认为它已经够成熟了,我也有过中型生产项目部署在mono上。我想说的是,即便是Windows上用.NET,数据库就不能用MySQL了吗,负载均衡就不能用Nginx了吗?到一定程度,要买F5了,那么后面用Linux和Windows又能节省多少成本呢?

    其实一个软件栈那么长,.NET可以只占一部分,我一直就宣扬.NET要和*nux进行结合使用

    在项目开发时,非要用.NET从Java那里真正移植过来的其实很少,就像你举的那些例子,都有.NET原生的,就算NHibernate也是移植的不错的,像是.NET项目。而且,就算命名规则不同,Adaptor一下咯,我说这些都是亲身体会啦,没啥大不了的。

    至于社区环境,就要靠你我努力了。还有一点就是,国内社区不能作为全世界范围内的情况。就好比国内Java的风气……呵呵,我这次谈Why Java Sucks and C# Rocks,您一定也可以出一二。

  46. Iniesta
    183.33.206.*
    链接

    Iniesta 2010-04-12 09:42:38

    may be "why c# rock java" will be a good title

  47. fuxy
    112.66.77.*
    链接

    fuxy 2010-04-12 09:54:06

    如果,只是如果,有一天,C#能在jvm上跑了,那又会是什么场面呢?老赵的标题又会是什么呢?

    如果,只是如果,如果Java是微软的,c#是sun的,老赵的标题会不会还是"Why Java Sucks and C# Rocks"。

    如果,只是如果,有一天,老赵被高薪聘请到sun工作了(是否现在应该说是Oracle),那老赵的标题是不是会改了呢?标题或许是"终于发现Java还是优于C#"。

    如果老赵的标题还是"Why Java Sucks and C# Rocks",那还好,社会进步了,不会再有“三个凡是”之类的思想了。虽然园子里还是很多这样的人,只要是微软的他们都说好,但我想,我们敬爱的老赵应该还是能看清本质的。

    我一向坚持语法不是很重要,新出来的语言,总会吸收以前语言的优点,在语法上有更多的创新,让写程序变的越来越简单。而老的语言背负的太多,不一定能跟上潮流,也不一定有这个必要。所以比较它们的语法优越性是否有必要?

    我想我们关注的更应该是怎么做,做什么,而不是用什么做。

  48. meback
    202.99.16.*
    链接

    meback 2010-04-12 10:13:42

    Java回天乏术 C#如日中天

  49. fuxy
    112.66.77.*
    链接

    fuxy 2010-04-12 10:15:19

    而且,就算C#比Java优越,那得出这样的结论的意义是什么呢?老赵是想说明什么呢?让大家放弃Java,普度众生?如果是这个目的,我想老赵会很累,还得拿C#于各种语言比较一番,工作量不小。可是我就没看到过老赵那C#于VB比较过,是因为自家兄弟就没必要相互揭短了吗?

    在园子里,微软的MVP们,除了老赵,实在没几个这么执着的说Java不是的,语言的发展不都是相互学习的吗?难道是因为Java不是微软的就得废了?这让我怀疑老赵的心态是否依然正常,还是已经认定了微软。

  50. 老赵
    admin
    链接

    老赵 2010-04-12 10:30:13

    @fuxy

    放心,我也说过太多C#不足之处了,我很客观,说的东西都是有根有据的。我想要让大家放弃Java不是因为Java不是微软的,我说C# Rocks也不是因为我是微软MVP。理由只有一个:C# Rocks and Java Sucks。我也不一直说了吗?Java语言不行,JVM还是很好的,例如Hot-spot在JIT某些方面还强于CLR呢。我只根据事实,不根据屁股说话。

    放弃Java,不代表要用C#啊。C#和VB没进行比较,只是因为我实在不懂VB。我也不需要用C#和其他语言一一比较,因为我的目标不是让大家采用C#,只要放弃Java就行了。

    至于我的目的,你看看我右侧的个人简介就应该知道啦。如果您觉得老赵以前的表现还不错的话,就等着看我这次咯,相信不会让您失望的。毕竟我在创新院那么多大牛面前也已经谈过这个话题了,呵呵。

    对了,其实我也很想C#在JVM上跑啊,只可惜这一点可能很难满足了。当然,如果真有这么一天,我的标题还会是Why Java Sucks and C# Rocks。

  51. 链接

    hannibal 2010-04-12 10:47:17

    赵哥,兄弟17号在一楼恭候大驾了!您的到来对我们不仅是技术交流那么简单,而是有着更为非凡的意义,这个,您懂的...

  52. 1
    61.149.196.*
    链接

    1 2010-04-12 11:07:36

    期待你的分享!

  53. hechenqingtian
    219.233.208.*
    链接

    hechenqingtian 2010-04-12 11:39:58

    又到了一个争论java和.net谁高谁低的地方。我看赵老师这次的开讲必定能点燃燎原之火。其实我没有其他的意思,我也不想评价.net 和java谁好谁坏。之前自己是做.net开发的,差不多半年前吧转了java开发,地地道道的体验从零基础学习java,也发现了很多问题。其实大家去争论java和.net 谁好谁坏没有必要。从微软这些年的努力,C#似乎大有取代java之势。我只能说我个人感觉这是很无聊的,去争论这些的人也很无聊。

    我个人觉得C#更像一件艺术品,在很大程度上给了我们程序员不用劳体力空间,其本身的功能强大之处不再话下,可以说当今编程语言中几乎没有一个能与之相提并论。对于java语言,他是一种开源的东西,所以很多时候,它的知识空间更为广阔。C#,java的矛盾点基本上集中在性能这个问题,之前我也有过很多的困惑,后来测试发现其实语言本身没有问题,如果要说到人性化方面我更喜欢C#,简单明了的代码风格,但是在某些方面我们也不得不承认C#不如java,在整体服务架构性能方面,java开源的服务器和商用服务器很多,但是.net就死死的抱在了IIS上,我们一般将Tomcat 做为java 的测试服务器,也就说开发过程中使用Tomcat,在部署的时候使用更好更强大的服务器。只可惜的是IIS的并发处理能力还不如Tomcat,这在一定程度上制约了.net 平台的发展。而且.net 的商业性,不开源导致诸多问题都是莫名其妙,程序员只能死死的记住一个方法一个类是怎么用,不能从源头上处理问题,不知道其原理。

    其实我不希望赵老师的这次演讲重燃java,.net 高低之分的战火,哈哈 语言无罪!事务有多面性,我们应该从不同的角度去看问题。我很期待这次的活动,出现java想跟多的了解java,同时也从更多的角度去审美C#语言的艺术魅力。

  54. 老赵
    admin
    链接

    老赵 2010-04-12 11:48:29

    @hechenqingtian

    我只谈Java语言和C#,不谈Java平台和.NET,从没想过要劝Java平台的人来.NET混,呵呵。

    而且IIS的性能很好的,我亲自测试过,也和外面很多benchmark的数据比较过,所以对此其实很有信心的。

    还有就是,我觉得你的看法挺健康的,有了这样的基础以后,我们就有可以讨论的空间了。:)

  55. 链接

    韦恩卑鄙 @waynebaby 2010-04-12 12:00:33

    作为一个微软人(完全不懂java) 我听过预演 这厮根本不是在给微软说话 仅仅是在毁java而已

  56. 链接

    韦恩卑鄙 @waynebaby 2010-04-12 12:12:51

    老赵 你这个登陆IE8下登 twitter id一直有问题啊 只好用live id了

  57. 链接

    俊明 2010-04-12 12:31:28

    说话我也在5173呆过几天,那里确实是一个神奇的地方,程序员在极大程度上依赖于老大写的AAF框架,基本上不用动脑筋,好在5173业务发展迅速,有足够的资金和实力应付局部失败

  58. Marginalor
    210.22.154.*
    链接

    Marginalor 2010-04-12 13:21:02

    创造者是人,新的创造肯定也是人。 人是主题。 要创新肯定也是人。 使用的人越多,才会越有生命力。 一定会有更好的,可是更好的肯定是人创造的。 所以,如果看前景,一般来说,看使用它的人如何,有多少。

  59. 链接

    Ivony 2010-04-12 13:39:56

    @俊明: 说话我也在5173呆过几天,那里确实是一个神奇的地方,程序员在极大程度上依赖于老大写的AAF框架,基本上不用动脑筋,好在5173业务发展迅速,有足够的资金和实力应付局部失败

    不如说是被绑定更恰当。

    结果我不得不为我自己的数据库访问帮助器DbUtility针对AAF的Provider,即SqlDbUtility for AAF。真搞笑啊。

    最后实在没办法的时候直接串通DBA自己建表了。

    AAF的那些Service经常加载失败,最终我恼了的时候,直接让自己的程序绕开AAF的那些Service,你爱咋咋的。你在后台去加载吧,我不需要你的服务,挂了也不关我的事儿。

    用雄厚的资本来应付技术上的缺陷是相当不靠谱的,5173的业务量和莫名其妙的数据结构使得它们的服务器根本无法承受。为什么老赵今天会看到一个还不错的.NET团队,为什么一年前我和DBA偷摸的离开。因为那时候,我们知道5173的数据库已经濒临崩溃的边缘。。。。为了避免被殃及池鱼,所以才偷跑的。

    而事实上,只需要更换一下数据结构,哪怕是一些细微的调整,把现有的服务器砍掉一半也是足以支撑业务量的。

  60. 链接

    Ivony 2010-04-12 13:48:11

    参考中文翻译:

    1、C#凭什么?

    2、为什么选择C#而不是Java?

    3、C#比Java好在哪?

  61. Snake
    120.42.198.*
    链接

    Snake 2010-04-12 13:49:56

    Java 落了后了, C#酷了毙了 好像比英文标题还长.

    差劲的Java对酷毙的C#? 看来还是得您去想中文标题了..

  62. 链接

    gxnnhy 2010-04-12 13:51:03

    哈,有意思,老赵是越斗越勇呀

  63. 链接

    orinchen 2010-04-12 13:55:59

    C#轻舞漫步,JAVA步履蹒跚

  64. 老赵
    admin
    链接

    老赵 2010-04-12 14:16:21

    @Ivony

    AAF是什么?

  65. abc
    117.84.77.*
    链接

    abc 2010-04-12 14:26:56

    逻辑是个好东西。 不知道C#体现的是哪一种逻辑。

  66. 链接

    alexliubo 2010-04-12 14:40:27

    老大。我想看视频啊~~

  67. 链接

    alexliubo 2010-04-12 14:47:50

    java 的卑劣嘴脸和C#的扶摇直上?

  68. 晓岩
    125.86.19.*
    链接

    晓岩 2010-04-12 14:54:03

    老赵,你平时的时间是怎么安排的啊?怎么有那么多的时间学习啊? 感觉自己什么都懂点,但是不精通,想看书学习却又找不到头绪,~能不能给点建议啊?

  69. feiyvefanli
    58.62.220.*
    链接

    feiyvefanli 2010-04-12 15:08:22

    坚定的北大青鸟反对者,强烈愤慨恶劣的培训机构对于处于懵懂期的初学者以误导,强烈抵制各种虚假广告给业界带来的不良影响,强烈建议有理想有抱负的从业青年放弃北大青鸟,不要做冤大头。

    严重支持赵大哥

  70. 链接

    俊明 2010-04-12 15:30:41

    赵姐夫,是不是可以考虑增加“回复邮件订阅”功能,不然如果有新回复了,除非上这儿来看,一般是无从知道的.

  71. 链接

    Ivony 2010-04-12 16:31:31

    AAF是5173的原技术老大整的一个巨无霸框架,我只能说这个框架足够大,其他的就不知道了。

  72. fuxy
    112.66.79.*
    链接

    fuxy 2010-04-12 17:05:23

    @老赵:我也不需要用C#和其他语言一一比较,因为我的目标不是让大家采用C#,只要放弃Java就行了。

    Java那里错了?为什么这么执着呢?难道Java是C#的巨大竞争对手?如果那一天,Delphi重生了,成为了C#的主要对手,老赵估计又要开始忙活了。

    不过我们相信老赵是能事实说话的,老赵到现在为止也是这么做的。多一些比较也好,让大家能共同进步,只是别最后又变了味,又是一场骂街大战。是否可以粗略的定个规程,第一天讨论什么,第二天讨论什么,开辟一个擂台,让各界牛人参与讨论,能吸引到一些老外更好。多组织一些线上线下的活动,要搞就搞大的,老赵,支持你。让这场火彻底的烧一次。

    我们这些小的还是很高兴,一是能看看热闹,二是能学些东西。

  73. 老赵
    admin
    链接

    老赵 2010-04-12 17:47:38

    @fuxy

    Java的错误就是它不思进取,生产力太低了。而且更关键的是,很多人并没有认清这一点,我就是想说清这件事情——并希望大家可以放弃Java,选择更好的语言。其实从现在看来,Delphi这门语言也不咋滴,没选择它的缘故,的确也是因为Delphi现在影响力太小了,咱要找个大的杀才有意思,对提高生产力也更有帮助,不是嘛。

    说实话,我也不喜欢变了味的讨论,但是我的确没法控制评论者的言论。我只能控制自己有条有理有根有据地讨论,而评论如何,我实在没法控制了,就算我“规定”了“章程”,评论员们就遵守吗?无所谓啦,在国内社区混,应该早就练出从无数谩骂中找出有价值内容的本领了。当然,出于对评论者主观意愿的尊重,除非带上脏字或“不和谐”内容,我是一定会不会删除的,呵呵。

    至于这把火烧的是不是够大,我也想它够大,我先做好自己,然后再“顺其自然”地努力下去吧。

  74. 幸存者
    123.120.39.*
    链接

    幸存者 2010-04-12 19:24:19

    您的意思是,除了LISP外讨论语言都是没有意义的呢?已经听过很多人拿LISP说语言比较没有意义了。在我看来,这种说法这里面表现出的就是一种逻辑的缺乏。打个比方:因为有了冠军,那么对于亚军的争夺和讨论也是没有意义的吗?

    问题是C#和Java真的是在争亚军吗?我们不能说争第2没有意义,但是争第20甚至第200呢?

    当然我并不认为讨论C#和Java孰优孰劣是毫无意义的话题。不过有时候倒数前两名的区别不过是一个做得不好,而另一个做得更烂——这只是个比方,我并不是指Java和C#是倒数前两名。

  75. abc
    117.84.77.*
    链接

    abc 2010-04-12 19:36:04

    语言排名: 第一名:C 第二名:汇编 第三名:所有其他语言并列 结论: 都不错

  76. 老赵
    admin
    链接

    老赵 2010-04-12 20:56:05

    @幸存者

    那Java和C#就不争世界冠军了吧,咱就在一个圈子里比,比如公司内部竞赛,呵呵。

    所以其实Java和C#比较是有意义的──决定这一点的关键在于“怎么比”而不是“比什么”。

    总之,就等我的文章,或周六见咯。

  77. 链接

    Ivony 2010-04-12 21:17:00

    其实最近研究JavaScript,觉得C#在某些方面还真比不上动态语言。

    期待C# 4.0。。。。

    至于某些言论,其实Java Sucks对于熟悉着两种语言的人来说是再明白不过的事实。老赵所做的唯一的事情就是把这事儿挑了出来。当然C#完全是根据Java的不足和优势设计的,所以不Rocks也是没有道理的。

  78. lht
    119.146.220.*
    链接

    lht 2010-04-12 21:34:00

    期待。。。。。

  79. 老赵
    admin
    链接

    老赵 2010-04-12 21:58:00

    @Ivony: 当然C#完全是根据Java的不足和优势设计的

    其实我仔细比较下来,尤其是最近听了Anders的演讲视频(我正打算把它听写出来),我感觉他并没有多少考虑Java。如果说C# 1.0是针对Java而设计的话,那2.0和3.0乃至4.0就是在Anders在实现自己的理想了。

  80. 链接

    Ivony 2010-04-13 01:34:13

    其实我仔细比较下来,尤其是最近听了Anders的演讲视频(我正打算把它听写出来),我感觉他并没有多少考虑Java。如果说C# 1.0是针对Java而设计的话,那2.0和3.0乃至4.0就是在Anders在实现自己的理想了。

    我上面所说的C#,就是指的C# 1.0。

    从之前的资料来看,其实C# 3.0就是Anders的梦想。所以可以看到C# 1.0一直到3.0一帆风顺的在发展,因为一切都在Anders的想像当中。所以我们也能看到C# 4.0增加的新特性开始明显减少,虽然不可否认dynamic也是一个非常重要的特性。

  81. 幸存者
    123.120.4.*
    链接

    幸存者 2010-04-13 02:52:35

    @Ivony

    在我看来,C# 4 大部分新增特性都是服务于一个目的,那就是互操作性。其实仔细想想,动态类型,可选/命名参数真正能广泛应用的场景大概也只有互操作相关的场景。

    唯一的例外大概就是协变和逆变,因为 CLR 2 已经支持协变和逆变,所以看上去这个特性的加入看上去并不是精心设计而是有点顺水推舟的意思。而且从结果上看,协变逆变的加入也引入了一些问题。当然,抛开目的,协变和逆变确实可以大大提高C#泛型的抽象能力。

  82. 老赵
    admin
    链接

    老赵 2010-04-13 09:09:32

    @Ivony

    真正说起来的话,其实C# 3.0也就加了一个LINQ,只不过拆成了n个可以独立有用的小功能。当然C# 4的革命性的确不如3.0。

  83. 老赵
    admin
    链接

    老赵 2010-04-13 09:12:57

    @幸存者

    我基本同意你的看法,不过可选/命名参数倒也是和动态类型有关的,或者说是一个很重要的补充。不知道C# 5会有什么情况,Anders一直强调Complier as Service。

    话说,在我看来其实Java 6的Pluggable Annotation有点这样的意味,但是和Anders的设想还差许多。不知道这个理解是否正确。

  84. Rick
    58.32.208.*
    链接

    Rick 2010-04-13 10:19:32

    老赵,礼拜六我去给你捧场,我要跟你合影

  85. Ivony
    124.193.150.*
    链接

    Ivony 2010-04-13 14:32:57

    @幸存者

    协变和逆变应该与CLR没什么关系吧。。。。

    仔细想想,其实协变和逆变,只是解决C#语法死板问题的一个糖。而in和out,似乎只要加个Attribute之类的就可以了。

  86. crazycode
    58.32.208.*
    链接

    crazycode 2010-04-13 14:47:29

    我是5173公司java团队的一员,实在忍不住出来说一句了。

    既然不敢旗帜鲜明的站出来比较java平台和.net平台,不敢赤裸裸的宣称java平台落后于.net平台,而只是编程语言层次的比较,那没有什么意义了,毕竟目前这两大平台都已经是支持多种语言,在这个层面上的比较,只能是比较谁的 皮毛更光鲜,更时尚,我觉得这更象是小女人之间的攀比,不是专业人士应有的态度。

    现实世界中,一个好的架构师应该明白,语言或平台的选择,不只是谁的技术先进就加分,世界没这么简单,先进性只能是结合应用场景进行综合考量的结果。这点@hippo已经讲的很清楚了。

    首先,其实我真认为.NET和Java是一家人,有什么.NET的技术是没法从Java那边学到的呢?.NET爬到顶了(且真爬到顶了吗?),就向 Java学咯。我就从Java那里学了很多,这让我.NET越用越顺利,两者完全不矛盾。而且,越向上, 越来越多的东西是和具体技术平台无关的。

    所以,也没有必要一定说java或C#先进,大家都在发展,只是可能道路不一样。编程语言如此,人亦如此。

    其次,.NET平台上的框架类库并不少,少的只是微软带来的而已。.NET开源界虽不如Java活跃,但也够用了。

    我觉得Java的语言虽然没有C#那样花哨(呃...强大),但也够用了。 但是,我个人觉得,有一个活跃的开源世界支持,相对更多的成熟案例和商业支持,比微软公司的语法支持更重要。当然,你也可以坚持语言本身更有吸引力,只是个人爱好而已。

    我是5173公司内部成员,对项目的来龙去脉了解相对更多一些。其实java团队的建立,前面已经讲了,不是技术原因,更多是管理方面的原因。 一支.net技术团队,如果对内部的程序员都采取封闭的观念(AAF甚至对内部都是闭源加密的库),对提出改进建议的工程师直接进行压制(我认识的一个人亲口告诉我的),而只是在公司建立了java团队,有了危机感才开始做一些本来 早就应该做的改进,这样的一个团队,已经不是技术层面的问题,而是职业素质的问题了。

    而java团队在前期走了不少弯路,有自身管理层面的问题,但相信在这样的合作气氛下也已属不易,毕竟5173业务复杂性还是有的。但我们团队享受目前的合作气氛,整体架构对目前网站的问题有相对全面的考虑。目前情况下,项目还没有定论,这时候说“重写门”为时尚早,但是,我们相信,一个良好的竞争合作、善于自省的团队气氛形成,对公司是有利的。

    这种情况下,公司形成的java与c#的竞争关系,更多是管理方面的需要产生的,这个时候以技术语言层面的差别比较,到5173宣扬“java已死,C#当立”,甚至有内部同仁赋以改朝换代意义,窃以为过于肤浅。

  87. 老赵
    admin
    链接

    老赵 2010-04-13 15:05:56

    @crazycode

    我不评价Java和.NET平台,是因为这东西的确谈不到底啊,两者完全各有优劣,不像Java和C#那样差距明显——不要说我“不敢”嘛。

    至于,语言层次的比较是否有意义,语法比较是否浅薄,我的意图是否正当,我是不是拥有专业人员的态度……还有比如Java语言是不是够用,我是不是在宣扬“Java已死,C#当立”……等等这一切等听完我比较之后再说吧,这里就不多纠结了,欢迎周六来一起讨论。如果您没有听我的演讲,或者没有看我的文章,那么就“不惮以恶意”来推测我的想法啦。如果要推测,可以看看我的一些文章,我写了很多,态度也已经很明确了。:)

    对了,我最近在翻译Anders Hejlsberg的演讲,希望可以从侧面回答“语言层次比较是否有意义”的问题。

  88. 老赵
    admin
    链接

    老赵 2010-04-13 15:09:37

    @Ivony: 协变和逆变应该与CLR没什么关系吧。。。。仔细想想,其实协变和逆变,只是解决C#语法死板问题的一个糖。而in和out,似乎只要加个Attribute之类的就可以了。

    协变和逆变是需要CLR支持的,不过CLR 2其实已经支持了……但Mono以前还不支持,现在也支持了。

  89. 链接

    crazycode 2010-04-13 15:42:58

    呵呵,我说“不敢”是觉得平台的比较会更劲暴一些。

    不好意思,我说这些更多是针对内部有些人的看法。否则,我觉得自己对语言孰优孰劣,早已过了激情辩论的年龄。

    我看过你之前的一些文章,也很认同你的治学态度。但我想说的更多的是职业态度,不管你是做IT或传统行业,不能因为老板抽一鞭子,业务就十分顺利、平稳。大家都尽力,不管最后结局如何,期望5173今后可以有更好的技术团队。

  90. 老赵
    admin
    链接

    老赵 2010-04-13 15:56:46

    @crazycode

    呵呵,相信我,您觉得Java语言够用,很可能只是没有人给您仔细讲过C#的发展及常用模式等等,很多东西的差距还是很明显的。等听我讲完之后,您很可能就会想要去用生产力更高的语言了。不知道您信或不信,其实我讲Java Sucks的主要目的还是想推动Java技术领域的发展,如果您感兴趣的话不妨可以一起来改变Java世界一些落后的东西。

    对了,如果可以的话,不妨您在内部宣传一下,周六大伙儿一起来听我的演讲,也正好可以讨论一下。:)

  91. 链接

    crazycode 2010-04-13 17:37:39

    其实,我比较喜欢ruby on rails,或者jruby on rails,这方面我已经学习使用快四年了,有ruby打底,我不觉得在web开发领域C#开发效率会高到哪里去。刚好我主业是在这个方向,而且比较懒,呵呵,这是我的偏见,见谅。

    在我们团队中,其实也没有太在意平台或语言的差别,在目前的项目中,我们已经使用ruby做了一些辅助性的外围应用,也有一组同事使用C#开发,我们目前所做的架构,其实是平台独立的,并无所谓一定要用java开发,只是刚好比较多的人熟悉java而已。

    我看过你之前一些文章,也有涉及多种动态语言的,相信您做这个分享,更多的为了推动java技术发展,而不是局限于一两种语言的比较;分享对于技术的热爱,不去鼓动阵营门派之见。大家其实都是技术小虫,都在技术生态的下游混,只是做自己喜欢的事,用职业的态度尽量做好份内的事就可以了。

    周六我争取参加这个活动,目前也有一些java团队的同事会参与,希望与您有进一步的交流,谢谢!

  92. 老赵
    admin
    链接

    老赵 2010-04-13 19:28:32

    @crazycode

    我觉得吧,RoR的生产力,其实7分在于Rails框架,3分在于Ruby语言。真要比较纯粹的Ruby和C#语言的话……我觉得还真分不清高下(就看你是中意动态语言还是静态编译型语言了)。事实上,如果你关注一下我以前的文章,我不止一次应对别人说Ruby或Python生产力比C#高的例子,代码都可以既简单又漂亮。其实如今C#的生产力已经发展的很高了,周六我也会举些例子,看了就明白了,呵呵。

    至于你说的其他内容……除了说我们都在技术生态的下游混,其他很都同意。其实你的说法有些妄自菲薄了。例如,Anders很了不起,他C#中实现了他的理想。事实上为C#添加一个特性真是无比困难的事情,要涉及到调试器,IDE,编译器多个团队,他都一一克服。我们也可以有理想嘛,比如我现在的理想就是推广Mono和F#,以及尽可能地鼓动别人摆脱Java语言,换上生产力更高的语言。

  93. 链接

    crazycode 2010-04-13 22:11:02

    实现C#是上游,能写出一个流行编程语言的人不多。推广Mono或F#,我觉得实际也是下游产业 :) 当然,有理想就好。

    Rails和Ruby的关系,我不觉得可以三七分之类的说法。其它语言实现的类Rails框架也很多了,但我还没有看到其它象ROR这样让人眼前一亮的框架,更不用说象以DHH为代表的隔三差五的抛出一些引领web开发技术发展天才创意的活跃技术社区。

    看了你举的ruby和c#实现的例子,我又想起C/C++的一些奇技淫巧,我决定不在这个话题方面和你深入讨论了,呵呵。

  94. 老赵
    admin
    链接

    老赵 2010-04-13 22:45:40

    @crazycode

    在我看来您还是妄自菲薄鸟……要看重自己的事业才能带来热情,活活,不谈这个。

    事实上,我观察下来Rails框架并没有太多内容是无法用Python甚至C#实现出来了,这就说明了Rails主要靠的是框架设计和实践积累,而不是语言特性。我觉得吧……Rails的眼前一亮主要是因为它是“一个突破”,而有了Rails之后,再来另一个Rails,你也会觉得普通了。

    顺带说一个问题,没见过Rails的人会对Rails有需求吗?估计不会,因为想不到。同样,用Java的人觉得这门语言够用了,也是相同的道理──没有比较就体现不出差距。

    至于你说C++是奇技淫巧,这个我同意,但是说C#是奇技淫巧,其实这只是无数抱残守缺的人的经典借口了,呵呵,包括某些特性刚出现时一部分C#程序员也是这种看法,但是没过多久人人心悦诚服。其实关键就是,一个技巧如何既能做到write less & do more,又能增加可读性可维护性,本身也易于掌握和使用(月薪3K的开发人员都能1、2天掌握,C++那些让我看1、2个星期还不一定搞的定),这还算是奇技淫巧吗?如果这也算是奇技淫巧,那么为什么近几年新设计出的语言,或是流行开来的语言,大都包含了这些奇技淫巧呢?

    所以,并不是其他人做得太过,而是某些语言实在太固步自封(这年头不前进就是退步啊),这也就是要抛弃它们的缘故了。否则那些程序员们……就永远这么麻木着生活下去吧……对了,我最近不是在听写Anders的演讲吗?强烈建议您下载一看,很多东西一听人指点自然就一目了然了。

    C#其实就是天才Anders实现理想的地方,十分美妙。

  95. 链接

    crazycode 2010-04-14 09:13:37

    不是妄自菲薄,只是知道自己几斤几两,不敢妄议天下大势

    说到奇技淫巧,在我心目中,java/c#这类语言是给工厂里一堆一堆的人用来生产商品的,ruby/perl/python这样的是给非主流的小众人群用的,所以一些做法,并不能用来互相比较。

    我举一个例子,在一些国家,比如日本,平时没事搞个SM,3P什么,拍成AV交换着看,可能也没觉得什么,甚至引以为荣;但在有些宗教国家,忍不住出个墙、劈个腿什么的,可能就会被乱石砸死。

    而我们做开发的也比较喜欢玩出轨,但如果在一个并不都是高人的团队中(我呆的团队基本上都是这样),有人在代码中玩别人看不懂的奇技淫巧,我的建议是拖出去弹JJ弹到死;而关起门来,自己玩ruby/scala爽到死,或者拿java/c#玩自虐,那是自己的事,如果发到网上,有人和你一起high,那是更妙。刚好,这两件事我都玩,我在公司里,呃,是一个传统的java程序员。

    PS: ruby发明者matz刚好是日本人,我很尊敬他,没有仇日情结,也不爱看AV,只是举个例子。

  96. 老赵
    admin
    链接

    老赵 2010-04-14 09:40:04

    @crazycode

    哈哈,别太传统了,传统和抱残守缺只隔了一层膜。

    A写的代码B看不懂,可能是A写歪了,也可能是B太搓了。只要是好东西,即使一个团队里并非所有人都会,那就培训咯。就像我说的,有的东西对于2.5-3K的程序员都能很快学会,我相信你的团队里肯定水平都不止这些啦。花个两天时间进行改变,接下来就能爽了,何乐而不为。

    我觉得有一点你说的没错,就是C#的确也是给人大规模开发产品的(其他语言是不是给小众玩的这个可以再议),但是它也已经比Java好太多了。哎,真希望你周六能多带点Java团队的人来听我演讲。

  97. 链接

    Ivony 2010-04-14 10:46:50

    5173的Java团队其实和.NET团队都是命苦的娃,前者受到来自于后者的排挤和抵触,后者经常奉命给前者设置一些人为的障碍。

    其实代码能不能看懂,很大程度上取决于写代码的人。现在语言发展的趋势之一就是用代码去描述需求而不是用代码去实现需求,这就对语言提出了很多新的语法要求。

  98. fastzhong
    220.255.4.*
    链接

    fastzhong 2010-04-14 12:29:31

    这是我的观点。C#和Java比较, 从语言内置特性(built-in features), 语法(syntax), C#占有相对优势(wins for a narrow margin)。但这个题目起得不好, 应该是比较(compare)而非比输赢或高下。比较的目的是为了选择,选择的目的是为了应用, 而应用则离不开系统, 平台, 环境, 发展方向, 应用场景等等, 而最终仍然是windows与非windows平台的选择, 微软技术与非微软技术的选择。对于C#和Java, 只是单纯的语言比较意义真的不大, 同理也可搞一个 Why C# 4.0 sucks and C# 10.0 rocks, 当然通过比较, 技术上可以得到借鉴和学习, 希望你的演讲更强调的是积极的这一面。

  99. 老赵
    admin
    链接

    老赵 2010-04-14 12:46:10

    @Ivony: 现在语言发展的趋势之一就是用代码去描述需求而不是用代码去实现需求,这就对语言提出了很多新的语法要求。

    没错,其实就是Declarative和Imperative。

  100. 老赵
    admin
    链接

    老赵 2010-04-14 12:47:32

    @fastzhong

    C#相对于Java的优势可不是a narrow margin,是惊人的……等我讲完了你就可以知道这些比较有没有意义,以及我的目的是什么了,呵呵。

  101. winter
    219.117.219.*
    链接

    winter 2010-04-14 17:24:04

    哈哈 可惜我还没有过去 要不然有机会捣捣乱了 就一个同时熟悉C#和Java的人而言 讲Java写程序更好用必然是脑残

    但是团队开发中 让一个团队完全掌握Java与让一个团队完全掌握C#难度也是不一样的 一旦你使用了C# 就要制定大量的规范和文档来约束团队成员 避免编写出风格完全不同的代码

    不同程序员驾驭混合语言特性的能力也不一样 会"根据接口设计实现类"的程序员 比起"根据委托类型参数的函数签名,传递正确的closure函数" 还是多得多的

    作为一个几乎完全的语言特性超集 C++目前使用率仍居于C之下 所以语言的"紧凑性"也是很重要的

  102. GuangXiN
    123.120.19.*
    链接

    GuangXiN 2010-04-14 20:32:04

    用过.Net2.0时代的C#,感觉没有特别明显超越Java的地方,后来一直没有关注。期待实例证明C#能write less do more。

  103. 老赵
    admin
    链接

    老赵 2010-04-14 20:37:55

    @GuangXiN

    一定不会让您失望的。

  104. 木乃y
    125.39.134.*
    链接

    木乃y 2010-04-14 23:24:01

    赵姐夫直平稳,赞一个

  105. Wuvist
    218.186.10.*
    链接

    Wuvist 2010-04-15 01:45:13

    http://www.slideshare.net/jeffz/why-java-sucks-and-c-rocks-midterm-draft 我觉得我可以依样画葫芦来一个:“Why C# Sucks and VB.Net Rocks”。

    然后,“Why VB.Net sucks and Python Rocks”。

  106. BigFool
    114.245.230.*
    链接

    BigFool 2010-04-15 08:18:46

    有点失望啊,为啥技术高手也要用这种菜鸟程序员才喜欢讨论的话题来吸引眼球呢?非常不同意C#能大大提高生产力,生产力恐怕不是用语言来提高的吧,软件开发好像还没有银弹吧。好的程序员在乎什么语言呢?喜欢哪个,哪个顺手就哪个呗。而且今天用腻这个语言,明天就学个新呗。C#再好用,哥用的不顺手,也不见得能加快开发吧。争来争去,多累啊,这时间多掌握点语言增加点选择多好

  107. 老赵
    admin
    链接

    老赵 2010-04-15 08:59:08

    @Wuvist

    在我看来,C#和VB.NET的区别倒真不明显,至于Python和C#,主要还是看您倾向于使用动态语言还是静态语言。如果您真觉得可以的话,就等我讲完之后,您来画一个试试看咯。期待下文咯,别让我失望啊。

  108. 老赵
    admin
    链接

    老赵 2010-04-15 09:01:46

    @BigFool

    C#相比Java能够大大提高生产力,不代表C#就是银弹咯。好的程序员真的不在乎语言吗?那么那些语言的设计者,比如设计Ruby的Matz,一定不是好的程序员了,是不是?国内一个非常错误的观念就是您现在抱有的这个,就从我这里来纠正吧,呵呵。既然您也认为我是技术高手,就不要轻易认为我对于这个话题的讨论会和菜鸟程序员一样嘛。

    有没有意义,和讨论哪个话题关系不大,关键在于“怎么讨论”。

  109. zwvista
    59.136.5.*
    链接

    zwvista 2010-04-15 09:05:46

    作为坚定的C++程序员,很难同意C++的就是奇技淫巧,C#的就不是。

    窃以为,真正追求程序之美的人是不能忽略这些所谓的“奇技淫巧”的。

    至于C#的语言特性比Java要多,生产力比Java要高,这不是明摆着的事吗?

  110. 老赵
    admin
    链接

    老赵 2010-04-15 09:13:51

    @zwvista

    我支持您来详细解释一下C++的技巧美妙之处。

    还有就是,我的演讲并不是想说明C#的语言特性比Java多,而是想说明C#在语言设计上真正超越Java,并在编程方式上带来重要改变的地方。

  111. Ray Zhang
    210.13.70.*
    链接

    Ray Zhang 2010-04-15 10:36:31

    为什么C#牛逼而Java比较矬? 这个名字咋样?

  112. zwvista
    59.136.5.*
    链接

    zwvista 2010-04-15 10:43:02

    我支持您来详细解释一下C++的技巧美妙之处。

    Boost.Karma就是最好的例子。

    这个用于输出的库具有以下突出特点:

    1.使用表达式模板技术与模板元编程(奇技淫巧)

    2.快速(比printf快)(编程之美)

    3.简洁(用DSL定制输出格式)(编程之美)

    假设list1是STL容器对象,那么使用以下函数调用就能以F#的list格式([a1; a2; ...; an])输出list1的内容

    karma::format('[' << -(karma::auto_ % "; ") << ']', list1)

    详细的例子可参考FP编程实践:在C++0x中模拟F#的List.map和List.choose库函数

  113. 老赵
    admin
    链接

    老赵 2010-04-15 10:51:35

    @Ray Zhang: 为什么C#牛逼而Java比较矬? 这个名字咋样?

    牛逼好像有点俗,不过也挺好。如果说“C#美妙Java矬”倒不够上口。

  114. GuangXiN
    123.120.19.*
    链接

    GuangXiN 2010-04-15 22:54:50

    有现场直播吗?事后会发布讲义吗?会发布现场记录吗?

  115. dw
    113.97.177.*
    链接

    dw 2010-04-15 23:36:22

    老赵这标题有些误人子弟啊!

    选择JAVA还是C#完全要看具体项目和具体的需求,不能根据自已的个人喜好来定啊。。。。

    最佳的选择是两个都学会,都做个项目,这样才有更深入的体会。。。。 如果说C#比JAVA的生产效率高,哪就要让JAVA高手笑掉牙了,目前C#所有能提高开发效率的方法基本上都是抄的JAVA的开发概念和方法。。。有些是十几年前JAVA就普遍在用的模式。。。。

    我本身是.NET阵营的开发者,也做了十几年开发工作,但现在回头去看,我发现自已站错了位置。浪费了太多的时间和精力在微软的一些失败的工具上。我的教训是语言选错了,方向也选错了,我给后来者的建议是选择下面的语言作为终身的方向绝对不会错:

    1. C
    2. JAVA

    如果你还有精力,学一下C#也没有坏处,做一些追求速度和预算不高的项目还是很不错选择;

  116. 老赵
    admin
    链接

    老赵 2010-04-16 09:12:58

    @dw

    您真的了解C#和Java吗?这两种语言我都可以说是分熟悉,也做过大型项目。其实自从C#诞生起,就只有Java抄C#的份了。如果您没有意识到这一点,那么就等我的演讲和文章吧。我觉得您对于C#和Java的特性和理解也都有所偏差,就比如我并没有发现.NET浪费了我什么时间,呵呵。不过这些以后慢慢聊吧。

  117. 老赵
    admin
    链接

    老赵 2010-04-16 09:22:58

    @GuangXiN: 有现场直播吗?事后会发布讲义吗?会发布现场记录吗?

    没有现场直播,会后我会公开slides,也会写详细的文章。

  118. abc
    58.214.119.*
    链接

    abc 2010-04-16 11:43:32

    教材上java的很多, C#的很少。 另外用这种语言其实和计算机关系就不太大了。 还有用它们开发风险也太大————完全依赖编译器和虚拟机。 不像用C, 是完全映射到机器码的。 java和.NET搞这么多完全是错误的。要理解这一大堆东西我还不如直接面向对象————用0和1。

  119. 老赵
    admin
    链接

    老赵 2010-04-16 13:13:21

    @abc

    那么您可以尝试着用0和1编程,呵呵。C的确可以说是和机器码对应的,但是要知道您要处理多种CPU架构,还必须手动做优化……唉,您会痛苦万分的。

  120. dw
    113.89.12.*
    链接

    dw 2010-04-16 18:58:07

    老赵!

    你以前应该也学过或用过微软的asp以及后来的webform吧? 想想中国有多少的程序员把时间和精力花在了这些失败的技术上?

    难道没有切肤之痛的感觉吗?花了哪么多的精力,却发现又过时了, 或是被微软抛弃了.....

    只有Java抄C#的份了你这个可能也是想当然了吧? 还没听说国外有一个大师采用C#做过开源项目, 如果你能举例的话, 你这句话才能成立.

    当然赵兄对技术的执着我表示佩服, 相信你对C#语言的研究功力深厚, 并发现了很多超越java的地方, 我认为这些只是语言层面的细节优化, 并不是一种创新或大的进步.....

    你唯一说对的是我对C#和Java都不怎么了解, 这个我得承认, 因为我的强项不是技术开发, 而是商业层面的管理和营运.

    如果有一天你当上了老板, 你要考虑开发和营运成本、现有资源、可扩展性、长期性、安全性、稳定性等等问题时,就不会仅仅从一个技术人员的喜好角度思考问题了。

    最后, 我觉得语言好不好,最好大家还是看看国外的语言排行榜,我觉得这个有指标性。国外开发人员的素质相信比国内还是要高一个层次,至少他们不会为了短期的效益而盲从。。。。

  121. 链接

    Ivony 2010-04-16 20:22:02

    将失败的原因归咎于采用了失败的技术是不靠谱的,地球上每天都要出现很多失败的技术,事实上Java语言本身已经是一种失败的技术,低下的生产力和拙劣的语法。尽管Java平台还充满着活力。

    今天又有谁还记得Java Applet?从这个角度来说,Java Applet是彻底失败的技术,按照LS的观点,应该对Java平台的前途充满无限悲观才对。

    一种语言的流行度并不能说明这种语言足够优秀,人类文法中无可匹敌的两个佼佼者,英文和中文,都有着自身致命的缺陷。正如我一个朋友的QQ签名,中文一定是世界上最简单的语言,否则很难解释为什么这么多人学习中文。显然这是很不靠谱的逻辑,但XX语言一定是世界上最棒的语言,否则很难解释为什么那么多人用它岂不是一个道理?

  122. 老赵
    admin
    链接

    老赵 2010-04-16 20:22:21

    @dw

    呵呵,WebForms失败吗?我不觉得,现在还是在蓬勃发展啊。

    我觉得您既然已经把精力放在技术外的地方,而且对C#和Java都不怎么了解,就不要评价您不熟悉的事物啦。您还是等着看我的文章吧,到时候谁抄谁就一目了然了。C#开源项目多了去了,不过有没有开源项目和谁抄谁又有什么关系?我对Java的熟悉程度自认为超过大部分Java程序员,这方面我不会搞错的,放心吧。:)

  123. GuangXiN
    123.120.33.*
    链接

    GuangXiN 2010-04-17 02:59:37

    只能等了,继续关注

  124. pingf
    116.25.162.*
    链接

    pingf 2010-04-17 09:58:26

    世界不是只有web,也不是只有windows

    等到什么时候linux,mac能流畅的运行c#程序时,

    等到什么时候sb手机,android手机,blackberry手机能流畅的运行c#的时候......

    我再考虑c#....

  125. aaa
    116.30.108.*
    链接

    aaa 2010-04-17 11:00:02

    孩子,你不配搞技术,醉心于技术之间的对比,你永远都是个劣质的低等程序员而已!

  126. kutum001
    58.24.121.*
    链接

    kutum001 2010-04-17 11:16:18

    顶~~JAVA

  127. kutum001
    58.24.121.*
    链接

    kutum001 2010-04-17 11:16:49

    随便搜了一下51job java 面议(18710)1500以下(13)1500-1999(29)2000-2999(148)3000-4499(304)4500-5999(208)6000-7999(173)8000-9999(120)10000-14999(176)15000-19999(42)20000-29999(23)30000-49999(22)50000及以上(16) .net 面议(17840)1500以下(70)1500-1999(151)2000-2999(383)3000-4499(508)4500-5999(238)6000-7999(175)8000-9999(88)10000-14999(98)15000-19999(24)20000-29999(18)30000-49999(12)50000及以上(8) 8K以上是大于.net 还有 大家知道为什么这些年程序员的薪水越来越低吗。因为.neter开发者,不信? 大家再看下面的数据 51job中.net职位要求学历 初中(51)高中(249)中技(12)中专(464)大专(5808)本科(10185)硕士(273)博士(5)其他(26) 51job中java职位要求学历 初中(3)高中(10)中专(36)大专(3480)本科(14363)硕士(357)博士(10)其他(5) 是不是很一目了然呢。 越来越多的中专,大专生加入所以也越来越拉低了程序员的平均水平。

    还有重要一点的时。JAVAER根本不薛于学c#er.大多数JAVAER把他的第二种语言选择为Python或是Ruby等脚本语言。为什么。C#简单呀。复杂度这么低的语言,如果是仅仅学习应用开发,javaer们相信不用一周就可以搞定了。 所以,.neter意淫的同时要了解到,javaer永远走在你们前面一步。因为他们会主动去外站找新的学习资料。了解新的技术动向。而不是天天靠微软翻译的中文文档为生。他们没有中文文档。但他们可以自己参加开源的汉化组织

  128. kutum001
    58.24.121.*
    链接

    kutum001 2010-04-17 11:20:23

    还有。请不要告诉我,你此次演讲只是讨论语言什么的云云,。一门语言是否优秀,不仅是看他语言的特性,更重要的是否有期发展前途 如果.net一种这样半死不活。我是说csdn上语言排名。我记得好像是连续好几年3-4之间了吧。这让我想到了当前的世嘉。当前世嘉推出 DC时。哇。简直是超过当时任何水平的游戏机。所以。一门语言。只有海量FANS支持时。你讨论再多也没有什么实际意义,如果可以的话,我希望你 拿出点实际证据,证明现在.net企业级开发已经超过JAVA之类。或许我会认同你的观点。

  129. kutum001
    58.24.121.*
    链接

    kutum001 2010-04-17 11:23:19

    至于上面讲到的世嘉我也不想多讲,如果大家想了解可以搜索一下世嘉之死。

    现在的.NET就和当前的世嘉很像,叫好不叫座。去持它只有其忠实粉丝。和微软一样,支持他的只有一群c#.net开发者。

    所以如果微软件不想想办法改变现在的状态。net的前途只会和世嘉DC一样,慢 慢没落

  130. 老赵
    admin
    链接

    老赵 2010-04-17 12:35:26

    @kutum001

    呵呵,我只想说,Javaer真的会去找新资料看吗?您说的越多,我越觉得这是幌子了。为什么呢?因为,我发现您的视野比我这个.NETer要狭隘多了,否则也不会主观臆断我的话。还好,我不会因为您个人推及大众。

  131. 老赵
    admin
    链接

    老赵 2010-04-17 12:36:02

    @pingf

    我可从没想过让Java程序员去用C#,所以您的顾虑是多余的……

  132. kutum001
    58.24.121.*
    链接

    kutum001 2010-04-17 16:50:57

    @老赵

    我只是用事实说话罢了。欢迎反驳,如果要让我信服请拿数据出来

    或许说的好了,微软给你五毛后我会再扔给你五毛。请继续表演

  133. Popeye Zhong
    58.251.84.*
    链接

    Popeye Zhong 2010-04-17 17:05:44

    中文标题:为啥Java矬而C#生猛,这是为什么咧?为什么咧?

  134. 链接

    Ivony 2010-04-17 17:10:39

    kutum001这位仁兄的论点就像是上流社会的人都说英语一样搞笑。一个人的素质与他所说的语言没有关系,程序员当然也是如此。

    我翻译一下大家看看是不是这么回事:

    还有重要一点的时。会英语的根本不屑于学中文.大多数英语爱好者把他的第二种语言选择为俄语或是德语等字母语言。为什么?中文简单呀。复杂度这么低的语言,如果是仅仅只是沟通交流,英语爱好者们相信不用一周就可以搞定了。所以,中文使用者意淫的同时要了解到,他们永远走在你们前面一步。因为他们会主动去外国找新的学习资料。了解新的世界动向。而不是天天靠人教印发的教材为生。他们没有课本。但他们可以自己参加开放的教育组织。

    我觉得这种人其实完全满足送入精神病院深造的潜质。

  135. 老赵
    admin
    链接

    老赵 2010-04-17 23:47:41

    @kutum001

    您很明显不是来好好讨论的,我现在就不奉陪了,呵呵。

    我会好好写我的文章,我想说的道理也好事实也罢,都会放在文章里,欢迎到时候来继续评论。

  136. 老赵
    admin
    链接

    老赵 2010-04-18 21:54:33

    @kutum001他爹

    不好意思,您带脏字了,评论我删了。

  137. Huskie
    113.77.62.*
    链接

    Huskie 2010-04-20 22:12:20

    一看topic,再看了楼主的个人介绍,学院派。

    一个项目,我需求调研到维护,一脚踢。我也希望哪天老板能够懂技术。。。不过,哪天我是老板,我也会考虑开发成本,运营成本,遗留系统等等问题。等哪天.NET在企业应用中占主导地位了,我想大家都会转到C#上去。起码,现在老板天天在催进度,还有时间理会哪个好坏?除非客户非得要求用.NET。

  138. 老赵
    admin
    链接

    老赵 2010-04-20 23:14:27

    @Huskie

    我不是学院派噢,我虽然比较理想,但还是比较工程的。唉,想当科学家当不成啊。再看看我新的文章吧,我可没在推荐Java程序员去用C#,呵呵。

  139. IT鸟
    61.159.206.*
    链接

    IT鸟 2010-04-21 03:30:12

    老赵,你太有才了..对于中小企业,wins,sqlserver等版权确实很纠结.

  140. Pang
    222.191.152.*
    链接

    Pang 2010-04-26 16:09:56

    老赵是中了MS的毒了吧,MS的主要意图无非是服务器这一块,java被淘汰了,全世界的人都用.NET了,那IBM混什么,Qracle的钱扔水里了? 服务器这一市场再被微软垄断,这是谁也不希望看到的吧?

  141. 豆芽
    125.90.58.*
    链接

    豆芽 2010-05-03 01:09:30

    就单单java开源这一点,我就很支持java了,c#再好,无非也是微软的c#罢了~而java确实大家的java

  142. 老赵
    admin
    链接

    老赵 2010-05-03 01:59:24

    @豆芽

    Java是大家的吗?错了,Java是标准组织的,不是你的或我的。当然,你可以提议Java变成什么样子,就像你可以提议C#变成什么样子,但是最终Java和C#如何都是组织决定的。你说Java编译器开源可以自己捣鼓,你也可以捣鼓mono啊,事实上双方社区里捣鼓出来的东西都很有趣。

    还有就是,我没让想让人支持C#,我只想让人知道C#很好,Java很差就可以了,呵呵。

发表回复

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

昵称:(必填)

邮箱:(必填,仅用于Gavatar

主页:(可选)

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

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

使用Live Messenger联系我