编程语言大比拼——谁的效率高
2012-09-06 23:09
197 查看
摘要:C、C++、Java这几个屹立不倒的开发语言,如果以功能点作为单位的话,谁的效率最高呢?如果在项目初期就能确定功能点数量,那么就可以很好的预测项目完成时间。这一点是不是对你很有帮助呢?
一份6000个项目的比较结果表明:编程语言的选择对项目进度有重大的影响。
我最近在开发者论坛上看到一个讨论有关JVM语言生产力(编程效率)方面的问题,如果那些高效率的开发人员一旦离开了Java(无需处理语言的冗长),他们的编程效率会怎样?会找到其他JVM语言来代替Java吗?说实话,这完全是一个似是而非的要求,把简洁转化成生产力。简洁和底层技术使人们有可能相信其他的技术成本——可读性。另一个贡献者——动态类型可以允许在运行时报错并且会被静态类型捕获。一个给定语言的生产力(编程效率)是有许多因素决定的,冗长仅仅是其中之一,至于这是否是最大因素,目前还不确定。
语言生产力(编程效率)的衡量常常被视为一种艺术而不是科学工作。或许因此有人认为,它违背了精确测量这一标准并且有了失真方面的嫌疑。但是本文的作者Peter Hill带领了一组研究人员在软件工程上就硬件数据这一主题进行了研究。以功能点做为核心衡量单位,在项目的需求阶段就开始测量功能点的数量,它对许多组件进行了测量,比如逻辑文件数量、接口文件、外部输入、外部输出和外部查询。它是一种可以给35年以上软件提供统一测量的一种方法。从本质上来讲,它是基于可衡量的工件来估算功能总额的。一旦项目的功能点数量被确定,你就可以进行其他方面的衡量并且还可以与其他大致相同数量的项目进行比较。
Peter小组,ISBSG,一个非营利性的软件研究小组,已经聚集了6000个项目,把功能点衡量的主要数据。从这些数据可以知道完成一个项目需要多少小时,然后在映射到项目所用语言上。下图显示了他们研究结果:
*表示经典的ASP.用于进行比较(由ISBSG提供)
这个数字是无可争议的。在表1上也似乎表明,高级语言比低层次语言是更有生产力的。然而,这一趋势又自相矛盾的,语言设计主要是用于商业用途- COBOL和ABAP –
与通用编程语言相比,反而会降低(效率)生产力。Hill指出,语言并不是影响这些数字的唯一因素。项目类型(你肯定不希望同一项目里面掺杂多种语言,比如C和ASP)、团队的规模与性质也会对上面的数字起着一定的作用。
尽管我希望C++比C更具生产力并且希望Java也超过C和C++,但是C#排在这几个语言的最后仍让我非常吃惊,我觉得它应该更接近Java,特别是它们可以被使用在相类似的项目中。但是它排在VB的下面似乎是理所当然的。
Hill是一个非常谨慎的家伙,他不会提供语言上统计数据,除非他有个可借鉴的大项目。所以我猜测在我们知道如何提升脚本语言或者Java替代方案出来之前,还需等一段时间。与此同时,如果你能准确评估项目功能点,那么你就可以参照上面这张表来预测项目完成时间啦!
一份6000个项目的比较结果表明:编程语言的选择对项目进度有重大的影响。
我最近在开发者论坛上看到一个讨论有关JVM语言生产力(编程效率)方面的问题,如果那些高效率的开发人员一旦离开了Java(无需处理语言的冗长),他们的编程效率会怎样?会找到其他JVM语言来代替Java吗?说实话,这完全是一个似是而非的要求,把简洁转化成生产力。简洁和底层技术使人们有可能相信其他的技术成本——可读性。另一个贡献者——动态类型可以允许在运行时报错并且会被静态类型捕获。一个给定语言的生产力(编程效率)是有许多因素决定的,冗长仅仅是其中之一,至于这是否是最大因素,目前还不确定。
语言生产力(编程效率)的衡量常常被视为一种艺术而不是科学工作。或许因此有人认为,它违背了精确测量这一标准并且有了失真方面的嫌疑。但是本文的作者Peter Hill带领了一组研究人员在软件工程上就硬件数据这一主题进行了研究。以功能点做为核心衡量单位,在项目的需求阶段就开始测量功能点的数量,它对许多组件进行了测量,比如逻辑文件数量、接口文件、外部输入、外部输出和外部查询。它是一种可以给35年以上软件提供统一测量的一种方法。从本质上来讲,它是基于可衡量的工件来估算功能总额的。一旦项目的功能点数量被确定,你就可以进行其他方面的衡量并且还可以与其他大致相同数量的项目进行比较。
Peter小组,ISBSG,一个非营利性的软件研究小组,已经聚集了6000个项目,把功能点衡量的主要数据。从这些数据可以知道完成一个项目需要多少小时,然后在映射到项目所用语言上。下图显示了他们研究结果:
Language | Hours Per Function Point |
ASP* | 0.61 |
Visual Basic | 0.85 |
Java | 10.6 |
SQL | 10.8 |
C++ | 12.4 |
C | 13.0 |
C# | 15.5 |
PL/1 | 14.2 |
COBOL | 16.8 |
ABAP | 19.9 |
这个数字是无可争议的。在表1上也似乎表明,高级语言比低层次语言是更有生产力的。然而,这一趋势又自相矛盾的,语言设计主要是用于商业用途- COBOL和ABAP –
与通用编程语言相比,反而会降低(效率)生产力。Hill指出,语言并不是影响这些数字的唯一因素。项目类型(你肯定不希望同一项目里面掺杂多种语言,比如C和ASP)、团队的规模与性质也会对上面的数字起着一定的作用。
尽管我希望C++比C更具生产力并且希望Java也超过C和C++,但是C#排在这几个语言的最后仍让我非常吃惊,我觉得它应该更接近Java,特别是它们可以被使用在相类似的项目中。但是它排在VB的下面似乎是理所当然的。
Hill是一个非常谨慎的家伙,他不会提供语言上统计数据,除非他有个可借鉴的大项目。所以我猜测在我们知道如何提升脚本语言或者Java替代方案出来之前,还需等一段时间。与此同时,如果你能准确评估项目功能点,那么你就可以参照上面这张表来预测项目完成时间啦!
相关文章推荐
- C# VC VB Delphi Lazarus C++ builder 多种编程语言执行效率比较
- 【图解】哪家强?9种主流编程语言大比拼
- 编程语言中运算符的运算效率
- paip.提升用户体验以及效率----编程语言趋势以及第四代语言4GL
- C++ 王者归来:对编程语言的需求总结为四个:效率,灵活,抽象,生产率(C++玩的是前三个,Java和C#玩的是后两个)
- 美国程序员薪水按编程语言大比拼新浪
- 【图解】哪家强?9种主流编程语言大比拼
- 【编程好习惯】利用编程语言特性提高程序执行效率 推荐
- [编程好习惯] 利用编程语言特性提高程序执行效率
- 编程语言大比拼
- 编程语言API性能大比拼
- 多种编程语言执行效率的比较
- int 转 String 的效率大比拼
- 编程语言的运行效率问题?C++:java/C#
- WinRT开发系列之编程语言:功能和效率
- Oracle模糊查询之(3.2从使用函数和sql语法角度来提高模糊查询效率 二)ORACLE中Like与Instr模糊查询性能大比拼
- 【编程好习惯】利用编程语言特性提高程序执行效率
- Developer‘s提升开发效率的工具和插件或编程语言
- “提高一下dotnet程序的效率一”中关于exception的问题
- 如何成为“10倍效率”开发者