V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Just1n
V2EX  ›  分享发现

这篇文章是我看到的写的最中肯的关于“.Net 开源”和“Java 将死”的因果论

  •  
  •   Just1n · 2014-11-18 08:38:30 +08:00 · 6448 次点击
    这是一个创建于 3453 天前的主题,其中的信息可能已经有所发展或是发生改变。
    51 条回复    2014-11-27 10:36:02 +08:00
    akfish
        1
    akfish  
       2014-11-18 09:05:45 +08:00   ❤️ 3
    从语言特性来讲,没几个语言干得过C#。
    从运行时的技术水准来看,即使.Net不开源,JVM也干不过CLR。
    接下来就看跨平台移植能否保证较好的一致性了。
    当然Java不见得会死,会死了不见得是因为.Net

    BTW,.Net开源前有对开源社区友好的Community Promise,Java开源前什么德行不知道的可以去了解下J++。
    不过好像不管怎样微软总是被黑出翔的一方。

    一家之言,不服不要来辩。
    est
        2
    est  
       2014-11-18 09:08:35 +08:00   ❤️ 1
    C#和CLR再优秀也奈何不了过了这波时机了。Java生态圈不是.NET能够撼动的了。

    别的不说,.NET先搞个 Hadoop 统计别的生态系统出来,至少还需要10年。
    zts1993
        3
    zts1993  
       2014-11-18 09:16:28 +08:00
    C#确实是个好语言
    Narcissu5
        4
    Narcissu5  
       2014-11-18 09:20:11 +08:00
    我要是说.net在linux上连个能用的服务器都还没有你信么?

    会有人把hadoop,storm,spark用c#重写一遍么?

    不会?那不就完了。
    tinymao
        5
    tinymao  
       2014-11-18 09:20:29 +08:00
    题外话,涛吴他们的内核恐慌即使是我也能听出他们一点也不黑啊。
    hjc4869
        6
    hjc4869  
       2014-11-18 09:28:24 +08:00 via iPhone
    @Narcissu5 java 本来就只有老本可以吃了,前途一片黑暗。。新的还会用java吗。
    zhujinliang
        7
    zhujinliang  
       2014-11-18 09:32:58 +08:00
    C#码农要涨价么~

    是不是该庆幸在学校那会儿一个不教我们班而且不教计算机的老师逼着我学了C#。。。
    zkd8907
        8
    zkd8907  
       2014-11-18 09:35:34 +08:00
    @Narcissu5 问题是,hadoop,storm,spark也不会一直存在,技术总会迭代更新的。
    freeze
        9
    freeze  
       2014-11-18 09:38:32 +08:00
    有 Android 在 Java 就死不了,除非 Google 推其他语言。
    archxm
        10
    archxm  
       2014-11-18 09:38:40 +08:00
    lz, 这也叫中肯? 明显是一片讽刺杂文嘛, 根本算不上对java的评论.
    dangge
        11
    dangge  
       2014-11-18 09:39:51 +08:00 via Android
    专业大方向是Java,但是我在自学C(因为ACM需要
    只想说哪有程序员只会一门语言的……
    Just1n
        12
    Just1n  
    OP
       2014-11-18 09:41:27 +08:00
    @archxm 讽刺杂文?我是真没看出来。 我觉得通篇有一个重点很符合我的看法: 「死」意味着什么呢?很简单:没人爱了。
    archxm
        13
    archxm  
       2014-11-18 09:46:41 +08:00
    @Just1n 那么这样吧, 我写篇文章, 解释什么叫屎, 之后呢, 再把楼主好好地介绍一番, 也不说别的. 看文章的人会怎么想呢?
    akfish
        14
    akfish  
       2014-11-18 09:53:49 +08:00
    @Narcissu5 说得好像重新实现一遍是唯一出路一样,搞个兼容层又不会死,M$的Azure上有Hadoop服务我会乱说?Hadoop有.Net SDK很久了我会乱说?Apache上可以跑ASP.Net我会乱说?

    .Net开源的目的是让开源社区能放心的集成使用.Net技术,增加采用率,又不是说M$下战帖要把所有开源项目撸一遍战翻在地才高兴一样。

    还有就是,这个世界上不止Web Server。C#光是靠着Mono在Unity3D里当脚本引擎这点,就有很大的社区了,说出来你信么。
    Just1n
        15
    Just1n  
    OP
       2014-11-18 09:54:34 +08:00
    @archxm 你说的这个有点像是春秋笔法,但链接中的文章跟春秋笔法还是有点区别的,你的举例也跟原文完全不符。

    另,不喜你的类比和交流方式,咱俩停止争论吧。
    jy01264313
        16
    jy01264313  
       2014-11-18 10:01:24 +08:00
    不知道有人写 scala 吗
    ipconfiger
        17
    ipconfiger  
       2014-11-18 10:02:44 +08:00
    貌似大多数Java的开源项目都有.NET的copy
    bbx
        18
    bbx  
       2014-11-18 10:18:00 +08:00
    永远停留在了 java 6
    fwee
        19
    fwee  
       2014-11-18 10:22:12 +08:00
    对jvm平台有个好处..说不定能推动scala的普及..
    finab
        20
    finab  
       2014-11-18 10:22:14 +08:00
    C#语法感觉太完善了,完善到我都不想使用了 -- 使用objc半年后的感悟
    Narcissu5
        21
    Narcissu5  
       2014-11-18 10:41:15 +08:00
    @zkd8907 下一波大浪拍上来的时候.net会有机会,问题是下一波在什么时候呢?

    @akfish 其实很多技术都有各种客户端,比如python的,但java还是老大,就是这么回事。.NET的所有技术基本上围着IIS转,没IIS什么都没有。helios?pre-alpha阶段好不好。unity3d c# 是自己的一个AOT的编译器,跟.net关系不大。
    zkd8907
        22
    zkd8907  
       2014-11-18 10:45:46 +08:00
    @Narcissu5 技术的大浪每天都在拍的,而且从来不会有很明显的界线 =。=|||
    akfish
        23
    akfish  
       2014-11-18 10:49:31 +08:00   ❤️ 1
    @Narcissu5 Unity3D用的是mono,mono是.Net的开源实现,首页上就号称“Cross platform, open source .NET framework”,这都叫关系不大的话,那还真不知道什么叫有关系了。
    并不是微软亲生的那一堆binary才叫.Net,.Net实质上是一系列M$主导设计的标准/专利。

    对于.Net围着IIS转的说法,表示呵呵。Again,这个世界不是只有Web Server。
    dbfox
        24
    dbfox  
       2014-11-18 10:54:18 +08:00
    希望语言可以统一
    降低各种开发的学习成本
    这是进步,希望各种力量推动
    关注产品本身,而非各种杂七八的技术
    est
        25
    est  
       2014-11-18 10:59:56 +08:00   ❤️ 1
    @Narcissu5 .NET做web围着IIS转就算了,关键是IIS的核心部件System.Net.*,其实是一个WinNT的内核驱动 http.sys 。这玩意压根没法移植。所以.NET除非有特别的姿势,web这一块不会冲击现有市场。

    更不用说各种非主流数据库连接了。基本来说C是一等公民,Python由于热门基本和CPython/ctypes/FFI成熟是二等公民,有各种官方和非官方的binding。js是三等公民,其他语言都是没人爱的孩子。。。。。。。。


    @akfish Hadoop有.NET的SDK和一个原生的纯.NET的集群计算生态系统是完全两个概念。。。。。。。

    Unity3D这个。。。。不评价。
    Narcissu5
        26
    Narcissu5  
       2014-11-18 11:09:17 +08:00   ❤️ 1
    @akfish unity用的mono?那为什么mono支持C# 5了,unity还停在2呢??

    IIS只是个Web服务器,那为什么WCF,signal都会用到它呢?不涉及J2EE的核心就是servlet,这是有原因的。
    akfish
        27
    akfish  
       2014-11-18 11:11:44 +08:00
    @est 的确是两个概念,这个从来就不是重点。
    重点是.Net运行时及C#语言涵盖的更大范畴更大,非要局限到Web Server、集群式计算这一块来讨论,没有意义。
    没有原生实现不代表不能用,要冲击某个市场也不总是通过copy一个自己的版本来做到,“.Net没有xxx的实现所以干不过xxx的想法”过于狭隘了。

    非要讨论web市场?好吧,看看Wiki好了: http://en.wikipedia.org/wiki/Web_server#Market_share
    Apache第一IIS第二,市场占有率只差了4%而已。
    也就是说,M$根本就没有靠.Net开源去冲击Web Server市场的必要,实际上M$在win server上赚的钱要多得多。

    .Net开源下的这盘棋远大于web server。
    akfish
        28
    akfish  
       2014-11-18 11:16:37 +08:00
    @Narcissu5 Unity3D用了低版本的Mono Runtime,有问题么?我当年在一家初创做CTO时,就曾经亲自操刀从驱动层开始一直到.Net Interop把Unity3D改装到能支持一种特殊的输入硬件,如果Unity和.net无关的话,我还真不知道我是怎么做到的。
    人家Unity3D自己都说了用的mono,事实上Unity脚本的基类就叫MonoBehaviour,不知道还有什么好争的。

    所以一个框架里的某个库/模块用到IIS,于是这个框架就是围着IIS转的了?神逻辑。
    jun4rui
        29
    jun4rui  
       2014-11-18 11:19:13 +08:00   ❤️ 2
    楼主帖的两篇根本不算言之有物啊,内容很浅。

    我说一下哈,目前JVM还有很多可以改良的地方,例如做成像Android的ART这种相当于是编译成本地代码的方式。

    另一个是性能,其实对于还在跟随摩尔定律高速发展的硬件,性能恰恰是相对来说最容易提升的环节了。

    C#缺少的是时间,虽然目前部分开源了,但是要做成一个生态,C#的很多库都没有跨平台的实现,就算跨平台那些库是不是要重写呢?就像Python2转Python3这种社区都做了好多年,C#跨个平台也不是说今天开源了明天就能开始用了,这一点还差得远。

    C#还需要至少好几年的时间,才能在跨平台上达到Java目前的开发基础,而要作出java那种在跨平台上的杀手软件可能又要好几年,然后出现众多杀手软件的有良好氛围的生态,可能又要好几年了。

    时不我待,我为C#开源点赞,但是现在真的太晚了。
    akfish
        30
    akfish  
       2014-11-18 11:38:52 +08:00
    关于Web市场的问题,感兴趣的可以去看下微软的财报:
    http://www.microsoft.com/investor/EarningsAndFinancials/Financials/FY13/Q4/SegmentRevenues.aspx
    2013财年第四季Servers & Tools的Revenue是$20,281(million)

    2015财年第一集财报里有这么一段:
    Commercial revenue grew 10% to $12.28 billion, with the following business highlights:

    · Server products and services revenue increased 13%, with double-digit growth for SQL Server, System Center and Windows Server.

    Apache不是商业公司,这样比的确不好,大概找了下也就wiki里提到了收入:
    http://en.wikipedia.org/wiki/Apache_Software_Foundation#Financials
    In the 2010–11 fiscal year, the Foundation took in $539,410, almost entirely from grants and contributions with $12,349 from two ApacheCons. With no employees and 2,663 volunteers, it spent $270,846 on infrastructure, $92,364 on public relations, and $17,891 on two ApacheCons.[13]

    不是一个数量级的好不。

    所以抢市场什么的、太晚了什么的可以消停下了,说得好像M$绝望无比只得开源了。开源社区在互联网上话语权更大,于是很多人忘记了外面的世界有多大,一味唱衰是没意义的。
    chocotan
        31
    chocotan  
       2014-11-18 11:40:47 +08:00
    没精通这门语言之前不敢说这语言不好....
    jjx
        32
    jjx  
       2014-11-18 11:53:38 +08:00
    现在说这个还是太早了, 所谓的跨平台,现在还只是mono, 没有看到ms的东西, 评价这个完全没有意义

    ms是先放了个烟雾弹而已
    est
        33
    est  
       2014-11-18 12:19:43 +08:00   ❤️ 1
    @akfish web市场占有率是netcraft的吧?

    抛开microsoft.com 和windows升级的一系列域名, 你看IIS占有率还有多少?

    这个就好比QZHTTP占有率也能超过1%一样。其实就是咨询公司在能搜索到的域名跑了一圈curl -I,看返回的Server字段,加上域名的alexa权重,就得到了web server占有率。。。。我觉得这个方法脑洞太大。
    love
        34
    love  
       2014-11-18 12:20:59 +08:00   ❤️ 1
    说得好象java一无是处一样,C#特性是比java多,但语言层面很容易就追上的,最近java的进步就不错,.NET的开源应该会更一步刺激进化的速度。
    而且象我这样的软黑应该不少,是决不会回去用C#的。

    另外MS是不是真把LINUX当一等平台和windows平等支持也是未知数。
    est
        35
    est  
       2014-11-18 12:29:51 +08:00
    @love 要支持linux桌面,绝对不可能。最多支持mac。。。。linux那么多window manager就够阿三吃一壶。。。。。。。。

    .NET战略和2001年的设想,相差太多了。XML数据库半吊子,json的mongodb风生水起。面向对象的WinFS做成了explorer的一个壳。。。。WPF什么的严重依赖windows的图形驱动方式,要真能移植就呵呵了。。。
    akfish
        36
    akfish  
       2014-11-18 12:36:40 +08:00
    @est 对于占有率统计方式不予置评,贴出来仅供参考而已。私以为M$的财报是相当有说服力的,Server产品的收入一直很高并且还在增加,足以说明.Net开源并不是冲着非Windows平台的Web Server市场去的,也不是很多软黑眼中的绝望之举。
    说这些只是想指出:.Net Framework的scope是远大于Web Server的,而不是很多人认为的 .Net == IIS+ASP.Net,微软布这么个局才不只是为了抢Web Server一系的饭碗,局限在这一块市场没意思。

    这年头抢的都是话语权,IT界没什么东西能干过平台/标准/语言所带来的话语权了吧。
    而且,M$有多少钱?开源社区有多少钱?现状总是可以改变的,软件开发说到底还不是拼人力财力。
    andrewpsy
        37
    andrewpsy  
       2014-11-18 12:45:17 +08:00 via iPad
    如果MS:
    1 开发一个vm导向的精简的Win8或者win10,免费或者超级便宜
    2 发布社区版本的SQL Server,和VS2013社区版本一样的使用协议
    3 把Azure上的Windows VM价格降下来,不指望和Linux一样便宜但是不能贵太多
    这三点做到了竞争力上升n个档次。
    est
        38
    est  
       2014-11-18 12:54:44 +08:00
    @akfish 抛开web,C#还能做个啥?WinPhone?
    min
        39
    min  
       2014-11-18 13:04:37 +08:00
    c# clr是通用目的的 并非局限于web 和node php之类不同的
    akfish
        40
    akfish  
       2014-11-18 13:17:06 +08:00
    @est 这个你还真不用操心,不是重点,M$把.Net开源是为了推语言标准和平台,而不是在这个平台上实现的产品。
    推广过程中也许需要微软移植/推出几个有竞争力的产品,但微软肯定是希望更多社区项目使用.Net运行时/C#语言来实现。你可以去了解实现一个target到.Net CLR上的编译器有多么容易,还有一大堆API能让开发者能撸出功能强大的工具链,几乎撸出来就能用于实际生产,我前不久做过一个外包就是把CoffeeScript编译到.Net 4.5上跑。
    举这个例子是为了说明一点:创造/移植一个新语言到某平台上是相对冷门的需求,微软却在.Net CLR的编译器架构上费力操刀搞这些。你还觉得微软折腾半天就为了推个Xxx .Net for Linux?

    纠结于现状没意义,.Net能做什么,等个几年你就知道了,微软有钱砸。
    est
        41
    est  
       2014-11-18 13:21:45 +08:00
    @akfish 我不用操心,只管跟微软走?呵呵。微软坑队友的花样都可以申请专利了。

    good luck with Microsoft。特别是阿三领导的公司。
    zhangdawei
        42
    zhangdawei  
       2014-11-18 13:27:27 +08:00
    微软确实坑队友,尤其是入门的,
    zongwan
        43
    zongwan  
       2014-11-18 13:30:22 +08:00
    swift,objc => IOS
    java => android
    .Net => ???

    虽然现在有不少跨平台方案 如 cocos
    底层SDK 硬件接口 还都是平台主要语言实现的
    什么时候能有统一的一天?
    akfish
        44
    akfish  
       2014-11-18 13:38:44 +08:00
    @est 你要这样理解我也没办法,有能力的开发者都不会把自己的路走死,这年头不能通吃几个平台,不能快速切换的人早饿死了。

    M$现在.Net也开源出来了,实质上可以由开源社区fork维护后,被坑很难(当然如果你把开源社区heart bleed之类的事情算成坑队友的话,还是有可能的)。
    开源不过是为了专注于技术,就别提坑队友这种商业化政治化的东西了,技术水平如何看看源代码就知道,亲自调查实践后在再发言比较好。
    为了黑而黑,而不去至少学习一下别人技术的可取之处,损失的是你自己。

    就此打住吧。
    leqoqo
        45
    leqoqo  
       2014-11-18 13:56:20 +08:00
    c#可以说是.net但.net 范围可就广了去了
    Heracles
        46
    Heracles  
       2014-11-18 14:16:57 +08:00 via iPad
    想想C语言的生命力真是强大
    zhouquanbest
        47
    zhouquanbest  
       2014-11-18 18:05:40 +08:00
    Java这种面向的就是需求稳定的Server
    君不见COBOL十多年了 也没更新过
    大多数厂都还在Java6

    同样的看看Python 升到3的最大阻力还是大公司都认为2足够用
    .Net特性多有何用
    hitsmaxft
        48
    hitsmaxft  
       2014-11-18 18:56:46 +08:00
    作为一个被迫转向java的开发人员, 我只能说, java == 狗日的语言.
    semicircle21
        49
    semicircle21  
       2014-11-25 17:53:49 +08:00
    @akfish 我对你提到的把语言编译成 CLR 的很感兴趣, 请教一下有什么资料的链接没? 我只搜到了 Jigsaw, Irony..
    semicircle21
        51
    semicircle21  
       2014-11-27 10:36:02 +08:00
    @akfish 非常感谢, 我大概需要点时间来消化这些~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2377 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:02 · PVG 21:02 · LAX 06:02 · JFK 09:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.