收藏到: Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网 QQ书签 更多 Bookmark and Share

2009年4月14日星期二

开发语言的选择

昨天讨论后续的开发工作,讨论讨论,就讨论到开发语言的选择上了。

现在的后台有一个系统使用Java+Jython做的,但是目前的技术负责是C++出身,一直认为Java的性能不行,对内存使用、内存管理有局限,一直排挤Java。领导呢对Python的某些功能比较青睐,又从网上找了一些的开源工具,可以节省开发难度,节省开发的工作量,因此想选择使用Python完成其中部分的工作 -- 对领导而言是比较重要的计算功能。

为了这个问题,大家争论不休,意见难以统一。

在这里也记录一下自己在会议上的意见:
自己的意见就是: 采用哪种语言开发应该不是目前最关心的,而且效率不是现在唯一要考虑的因素,需要从以下各个因素上综合考虑:
  1. C++语言的效率优势已经不那么明显了:
     现在机器的性能上去了,原来C++效率的优势没有原来这么大了。而且随着语言的不断进化,语言本身的效率也在不断的提高,虽说C++的效率还是比较高,但是各个语言间的效率已经越来越接近了;
  2. 需要考虑工作进度、公司的人员配备:
    虽说C++语言在效率上还残存一些优势,但是C++的开发周期、开发的工作量,都相对较大 --- 从实际情况来说,这个还是比较客气的说法。每次出产品,C++开发的服务器,都是时间最长最长的,开发人员需要的技术、开发过程中的成本也是最高的,和目前的快速维护、快速增加功能的原则背道而驰。关键的部分(如只能唯一的服务器)、最为核心的部分要用C++开发,达到稳定、高效的目的,这个无可厚非,但是系统中所有的地方都用C++,在开发周期、开发成本上就无法接受;
  3. 发挥每种语言的优势:
    每种语言的产生,必定有其出现的道理,有其存在的理由、优势。在开发过程中,要发挥每种语言的优势,进行合理的搭配,达到快速有效的开发,这样才是最合理的配置;
  4. 体系结构优于语言的选择:
    现在的开发,尤其是后台支撑系统的开发,已经是体系上的竞争,架构体系的优劣已经远远超越语言的竞争了。
    体系方面,譬如简单的增加一级缓存,带来系统性能的提升、服务能力的提升、吞吐量的提升可能是数个数量级上的提升;而语言的不同,带来的可能仅仅是同一级别、同一层次上的提升;何况通过多种语言的协作,发挥各种语言的优势,不仅能够充分使用到公司目前的资源,而且使用到语言本身的优势,快速推出新功能,尽快的响应市场的呼声。开发语言相争和架构体系上比较起来,相对而言只是一个很局部的问题(目前在架构体系上,可以优化、可以提升的地方太多了)。
最终的结果还是按照在原来的基础上,先完成功能,语言上的选择再议。

1 条评论: