编程语言的选择并非无关紧要

且说前一段时间听淘宝的黄裳讲解淘宝网站架构发展的时候,说起 2004 年底淘宝为何从 PHP 向 Java 转移的事情。为何转换,他阐述了几个理由,其中一个是非常有趣的:当时的 PHP 缺少一个 IDE。而合适的 IDE 能够有效提升规模化软件开发的效率。

我们知道 eBay 在 2002 年的时候也在 Sun 技术团队的帮助下,将整个应用架构从 C++ 迁移到 J2EE 。也就是 eBay 内部所说的 V3 版本(refer)。

最近一件有趣的事情是,据说腾讯的财付通在招聘 Java 方面的高手,”参与系统架构选型”,要把底层架构从 C/C++ 迁移到 Java 架构上来。另外,百付宝的后台技术据说也是基于 C++ 的(最开始的时候只是一两个人写核心代码)。我相信,现在百付宝或许规模还比较小,总有一天,也要面临向 Java 的迁移。这和阿姆达尔定律有点类似,要得到更大的计算能力,就要尽量减少整个系统中的非并行的环节。只是一两个人能搞定的地方,再加入更多的开发人员也是无济于事的,除非,改变协作的模式。

去年接触到的一些国内的电子商务公司,有些已经在进行技术架构上的变迁,当然,多数是从 Windows 平台迁移到 LAMP 平台,究其原因,也无非是成本与效率,而后者,更为大家所看重。当然,也有一些顽固派,比如京东,仍然固守原来的手工作坊技术模式。

如果单兵作战的话,很多程序高手会说,”用什么语言都是无所谓的”。但是如果是团队协作开发的话,用什么语言,影响则是不一样的。对于电子商务网站来说,语言的选择意味着不同的架构路线、不同的开发框架、不同的测试框架、不同的部署流程,最后更为主要的是不同的开发效率,意味着可以把更多的开发资源并入到当前的环节中。

事实上,对于一个高速发展中的网站,每隔18 或 36 个月,几乎总要有一次架构上变革的阵痛。没有这种变革的勇气,意味着以后也不会有人敢做这个尝试。没有这种阵痛,就不会有成长。

变化的节奏最后影响一切。编程语言的选择并非无关紧要,短期看来似乎影响不大,从长期来看,决定最终的竞争结果。这就是我要说的。

EOF

此文作者:, 位于 Review 分类 标签: on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.

40 thoughts on “编程语言的选择并非无关紧要

  1. yicone

    对于这个问题, 正好工作周边经历着变革, 所以细细品读了一番, 但是也有些疑问.
    这句,
    “对于电子商务网站来说,语言的选择意味着不同的架构路线、不同的开发框架、不同的测试框架、不同的部署流程,最后更为主要的是不同的开发效率,意味着可以把更多的开发资源并入到当前的环节中。”
    这句话没大看懂.
    对于非电子商务网站, 语言就不会影响到您说的其他环节了吗? 我的问题是, 没从这句话中看出来电子商务在这些环节上有何不同和特点.
    “更多的开发资源并入到当前的环节中”, 这个是指?
    还有京东的”作坊方式”在哪里能略了解一二, 想和周边比较一下:)

    Reply
  2. Fenng

    非电子商务网站,我不懂。
    更多资源并入…是指到了某个阶段,加入更多的开发力量能够有相关的收益。而不是什么作用都没有。
    京东的作坊模式,没有地方可以了解。早晚,你会知道的。

    Reply
  3. yicone

    明白了, 就是横向扩展, 加1个人头多1份进度/质量.
    后面这句话, 很有吸引力, 静观其变呢 :)
    前面说工作周围经历的变化, 是从.NET切JAVA, 不知道算不算这个问题的一个特例呢? 以大佬的视角看, 国内做电子商务和支付的多选JAVA, 银行也是, 所以…
    从这个角度上, 我能理解的就是好挖人, 别的公司一直都在给储备:D 大家互相储备

    Reply
  4. laihj

    记得豆瓣的阿北提到为什么选python而不选ruby时,提到过当时国内的ruby开发都不够多。怕后面不好招人。这也是考量点之一吧。
    语言的流行度

    Reply
  5. Fenng

    这一点也是挺有趣的。
    如果当时豆瓣流量暴涨 100 倍,用户需求上来的话,豆瓣或许真的很难应付。毕竟团队规模有局限性。他们现在的团队增长差不多和网站的增长匹配了。

    Reply
  6. Fenng

    用什么更适合,我怎么能告诉你? 自己不知自己的情况么?
    什么时候变迁,则是需要勇气和策略的事情。

    Reply
  7. yicone

    看来一日还在这个岗位上, 就要琢磨着转换下轨道, 抛开优胜劣汰不谈, 我得顺着做电子商务JAVA+Oracle/MySQL是主流这个国情才行.

    Reply
  8. Luc

    恕我寡闻,请问国内哪些网站是基于Ruby的?
    另,倒数第二段中,"镇痛"应为"阵痛"。

    Reply
  9. guest

    其实不严格的说,语言的确无所谓,因为理性的选择就不多,C++除外。。

    Reply
  10. ztka

    javaeye流量不是想象的那么大。
    我个人觉得淘宝,支付宝用java是因为java企业级别支持很优秀,出了事情,有地方可以解决,PHP之类企业支持太少。IBM,ORACLE大公司基本都支持java,fenng说的其他理由,例如扩展,IDE,不能算主要原因。

    Reply
  11. rexzhfj

    php可能比较适合提供内容的网站吧,而博主说的电子商务不仅仅是网站,有很多交易和金钱上的瓜葛。

    Reply
  12. mahb45

    rails招人是个问题
    只能是招有编程基础的,然后给时间培训
    应届生是不错的选择

    Reply
  13. prancema

    一直觉得java主要用于企业级的应用,基本上要求:cpu不是问题,存储不是问题,内存不是问题。不然的话,单是开发java的开发也比php 对机器要求高(Exclipse现在是越来越吃内存了)。
    还有我觉得超大型的应用系统如支付宝,应该存在使用多个语言的情况,充分利用各个语言的优势,只是以java主导而已。
    java虽然各种开源框架模式什么甚多,但java程序员尤其是有了一定的经验的多有过度设计的倾向

    Reply
  14. huacnlee

    同是 Rails 的,更加喜欢快速简洁的开发模式
    我的观念是先跑起来,赚了钱再说,在加上 Linux 环境下面扩展也比较方便
    @mahb45
    Rails 招人其实最好是招有个两三年其他语言开发经验的,1个月就熟悉

    Reply
  15. cloudzhou

    最起码的,我觉得java开源软件越来越多,比如apache的一些项目,并且越来越涉及原来c/c++的领域,这个本来就是一个巨大的优势

    Reply
  16. jack

    技术上有孰优孰劣,但是个人觉得技术并不是制约商业IT公司发展的瓶颈。更多地要关注模式,口碑,推广等等“非技术”因素

    Reply
  17. jametong

    个人也觉得IDE,扩展不是主要理由..
    关键是还是能不能招到足够多的符合技能要求的优秀工程师..
    如果这个语言相对小众,就很难招到足够多的优秀工程师, 随着公司规模的扩大, 以及协作规模的扩大, 往往就比较容易遇到瓶颈..
    大型项目的协作并不是java针对C语言的优势, 看看Linux操作系统如何走到今天就大概知道了, 能走到linux这一步的项目并不多, 这也暴露出在C语言领域要找到足够多的优秀工程师代价也非常大.

    Reply
  18. scotoma

    其实说到底还是人才储备的原因啊,开发团队里面还是要人的。
    关键是看技术团队的规模,如果能够保留稳定的技术团队,这样应对网站的变化就好了

    Reply
  19. ablmf

    怎么可能一样的呢?同样的代码,用不同的语言来写,代码行数都会差别很大的。

    Reply
  20. ablmf

    如果一个人只会专一门语言,不管多牛,都谈不上喜欢做程序。
    对他来说,这就是个饭碗,就要经济收入最大话,最大化的办法就是把一门语言的边角料都搞的特别清楚,显得很牛。

    Reply
  21. liuran

    当项目越来越庞大,就不是选择开发语言,而是选择成套的开发体系了。

    Reply
  22. huihoo

    电子商务网站向Java的迁移是必要的, 大多企业的核心业务也是基于Java构建, 电子商务网站需要和这些业务系统进行适当的对接.

    Reply
  23. 阳光游子

    呵呵,正好有同学在京东做开发,改天问问他们是怎么个作坊模式。
    不过本人所在的小公司(四五个项目组,3、40个程序员)基本上是作坊模式,看了《走出软件作坊》那本书,发现就像写我们公司一样……

    Reply
  24. horseluke

    起步阶段,考虑的是快速上线问题。代码再优雅,上不了线没饭吃。真正有一定规模 && 收入稳定,才会考虑架构变革。
    PS:只知道,许多公司(特别是小公司)的作坊模式许多都有着无奈之处,表面是技术人员频繁变动,实质则是如素包子所言——“总希望拿60分的钱做100分的事”(http://baoz.net/google-say-goodbye-to-china-because-hacked-by-ie-0day/)

    Reply
  25. 黑胡子

    编程语言的选择并非无关紧要
    非常赞同题目
    但是内容却不敢苟同
    看来你的知识结构决定了你的眼光

    Reply
  26. Fenng

    对于内容能否给点建议?
    我的知识结构的确有问题,正因为这样,才想多和大家交流。

    Reply
  27. murphy

    有个疑问,为什么要从C++转向JAVA?
    C++的运行效率是>JAVA的,
    难道是为了开发的效率?
    谢谢!

    Reply
  28. rethink

    我觉得是开发体系的选择,甚至阵营的选择。
    我是做php的,网站做大了之后,面临的很多问题都要到java阵营里面找方案,渐渐的也喜欢上了javaeye。
    java阵营目前来说,整个体系比其他语言完善些,而且有更多的开源软件可以选择。

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *