有没有人知道在各种语言中开发相同应用程序需要多长时间的研究或基准?我真的在寻找Java与C++,但任何比较都会很有用.我觉得代码完成中有一节关于此,但我的副本正在运行.
编辑:
这个问题有很多有趣的答案,但似乎缺乏真正好的研究.我在meta上就这个问题提出了一个建议.
普拉特惠特尼(Pratt&Whitney)是民用和军用喷气发动机的供应商,多年前对此进行了一项研究,但实际上并没有打算进行这项研究.
在20世纪90年代,他们继续执行其他人所做的相同指标.他们收集了大量关于喷气发动机控制器项目的数据,包括时间卡数据.他们嘎吱作响.那些不得不扼杀数据的拙劣的人物注意到了结果:军事项目统一的程序员生产率是民用项目的两倍,缺陷密度是民用项目的四分之一.
这本身就很重要.这意味着你只需要一半的程序员,而且你不会花太多时间来修复bug.更重要的是,这是一个苹果对苹果的比较.喷气发动机控制器是喷气发动机控制器.
然后他去寻找候选人的解释.所有常见的候选人:个人经验,团队规模,工具集,软件流程,需求稳定性,一切都被淘汰出局,当看到这些项目的故事在两侧统一相同时,它们被排除在外.走道.在一天结束时,只有一个统计上显着的差异出现.
民用项目是用您能想到的每种语言编写的.军事项目都是用阿达写的.
在每一个案例中,与Pratt&Whitney的喷气发动机控制器相比,对于其他所有人来说,使用Ada可以提高生产率和缺陷密度的四分之一.
我知道飞猴代码会说些什么."你可以用任何语言做好工作." 从理论上讲,这是事实.然而,在实践中,似乎至少在普惠公司,语言有所不同.
最后我听说过,Pratt&Whitney高层管理人员下令所有喷气发动机控制器项目都将在Ada完成.
不,我没有引用.没有写过纸.我在这个故事中的消息来源是那些喋喋不休的闷棍.
顺便说一下,这是在波音公司完成777之前,以及在777刹车分包商故事发生之前.但这是另一个故事.
从ARPA和ONR资助的90年代初,我从少数资助的科学研究之一,我知道跨语言生产力,
Haskell vs. Ada Vs. C++ vs Awk vs ...软件原型生产力实验,Hudak&Jones,1994.
我们描述了一个实验的结果,其中几个传统的编程语言与功能语言Haskell一起用于原型海军水面作战中心(NSWC)对几何区域服务器的要求.由海军选择的委员会审查了由此产生的计划和发展指标.结果表明,Haskell原型开发时间明显缩短,并且比...更简洁,更容易理解.
本文(pdf)在C,C++,Perl,Java,Perl,Python,Rexx和Tcl之间有一些基准(注意它是2000年).
我认为一些常见的观点是正确的(也在文章的某处):
The number of lines written per hour is independent of the language
意见:更重要的是对于给定的开发人员来说更快,例如你自己.你习惯了,通常会更快.如果你已经习惯了20年的C++陷阱并且永远不会跳过未初始化的变量,那么对于任何人来说,这都会比Java快.
如果你记住了CreateWindowEx()的所有参数,它将比MFC或winforms更快.
一些轶事数据点:
关于项目Euler,它邀请数学问题的编程解决方案,
的最短的解决方案几乎总是写入J或K,APL的相对; 偶尔MatLab解决方案在同一范围内.但可以说,这些语言专门研究数学.
亚军是Ruby解决方案.许多算法都可以包含在非常少的代码中,并且比J/K更易读.
在LOC方面,Python和Haskell解决方案也做得非常好.
问题是"最快的开发",而不是"最短的代码".但可以想象,更短的解决方案可以更快地提出 - 当然对于慢打字员来说!
每年都有机器人专家的竞争.参赛者会获得一些硬件规格,软件需要解决的实际问题以及时间有限.当然,这也是非常具体的领域.程序员可以选择工具,包括语言.每年,获奖团队(通常是一个人)都使用Forth.
这个公认的有限样本表明"发展速度"和"语言对速度的影响"通常非常依赖于问题领域.
也可以看看
有统计学研究表明Python"更有效率"吗?
关于这类问题的一些讨论.