研究不同语言的发展相对成本

mmm*_*mmm 58 c# java delphi

有没有人看到最近(并且相当平衡)研究使用不同语言进行软件开发的相对成本?我特别想看看Java V的相对成本.C#Vs. 德尔福.

som*_*one 37

不.但我不是任何人的狂热者,而是作为顾问工作,并根据我的每一个要求推荐其中一个.因此,这里有一些事实可以让您更轻松地选择使用什么来满足您可以拥有的系统开发需求.

共同点:

他们都是各自领域中最好的:

  • Java是最好的Java开发选项.
  • C#是最好的.NET开发选项.
  • Delphi是最好的Native开发选项.

他们都有:

  • 全球第三方供应商,提供高质量的组件和库.
  • 用它们创建的全球知名应用程序(例如Delphi可能更为人所知:Yahoo Go for TV!,Macromedia Captivate,TotalCommander,MediaMonkey,FinalBuilder,InstallAware,WinLicense,MySQL Administrator等).

所有这些都是:

  • 具有RAD功能的高度可靠技术.
  • 由最好的开发辅助工具(UML等)提供支持.
  • 发布其技术的主要升级(Java 7,.NET 4.0和Delphi多平台).

区别:

C#更好的3件事:

  • 可以编码的开发人员数量(与Java相比)(*).
  • 微软落后了.
  • 工资(通常)的开发成本更低.

Java更好的3件事:

  • 可以编码的开发人员数量(与Delphi相比)(*).
  • 可移植性.
  • Sun落后了.

德尔福更好的3件事:

  • 速度(时间关键系统的性能更佳).
  • 占用空间小(Delphi编译器生成非常小的二进制文件).
  • 没有明确的依赖关系(更容易分发).

(*)有一个非常可靠的事实,有更多其他的语言,开发人员可以在C#以外的语言,开发者可以在Java代码中,这意味着它更容易找到C#程序员编写代码.也许这可以解释为什么在许多网站(像这样)和论坛,让多国语言的问题,重构等,通常有更多的C#的问题和答案(84K VS 50K).此外,由于Java的作业最好支付在世界的许多地方,常识指出,Java开发人员不再停留在他们的工作比C#的,这使得更难以找到比C#那些可用的Java开发人员.当然,也有可以讨论一些其他的因素,但我敢肯定它通常是更容易找到比Java的一个C#程序员.

  • @stevendick:对此的研究结果差异很大,具体取决于问题的确切问题.例如,如果你问"我是一个<blank>开发人员",填写空白,你只得到一个答案,然后你发现Java比C#开发人员多一点.如果你说"填空,你可以获得尽可能多的答案",那么结果就会大不相同.如果你说"我可以在我的作品中使用<blank>语言",那么,完全不同的答案.这些问题中的哪一个实际测量了您对测量感兴趣的内容? (5认同)
  • @someone:对此有很多解释.也许微软的文档很糟糕.也许C#开发人员很愚蠢,需要提出很多问题.也许C#开发人员很聪明,喜欢讨论有趣的问题.也许C#是垃圾.也许C#具有比Java更多的功能.也许Java开发人员在其他论坛上提出问题.也许Java人员在不允许开发人员上网的公司工作.或者,StackOverflow由两个.NET社区领导者和两个非常受欢迎的.NET博客创建,他们将他们的整个读者带到了这个网站. (5认同)
  • 你有任何链接提供证据吗?据我所知,Java开发人员比.NET开发人员多. (4认同)
  • 当然可能(非常可能)在Delphi中写得很糟糕 (3认同)
  • @JörgWMittag:嗯......公平,也许你是对的,也许你错了. (2认同)

Mas*_*ler 33

我不知道正式的研究,但我听到很多关于公司在Delphi中使用现有应用并用C#重写它的轶事说法有这样或那样的原因.他们都以同样的方式结束.

在C#中重写程序需要花费两倍的时间,因为它最初用Delphi编写它,即使所有的业务逻辑和领域知识已经解决并以现有Delphi代码库的形式呈现.在此期间,他们没有发布更新,因为他们所有的资源都忙于重写,允许他们的竞争获得市场份额.当它完成后,它是1.0级产品.毛病,缓慢且难以使用,通常具有严重的向后兼容性问题.

之所以可以解释,但我认为使Delphi比C#(或Java)更具生产力的主要因素之一就是语言的外观和感觉.

众所周知,维护和调试现代程序要花费更多的工作,时间和精力,而不是最初使用它们,但这个原则并不经常遵循其逻辑结论.如果需要最多的工作就是维护程序,那么在编写代码的基础上选择一种语言就是过早优化.如果您使用易于阅读和维护的语言,您将获得更好的投资回报. 而在代码可读性方面,Pascal(Delphi)击败了C家族.

这不是一个正式的研究,但值得思考.

  • 非常好.我会略微改进它 - 仍然可以在Pascal中编写"坏"代码,但通常你不得不这样做...同样可以在大括号语言中编写"好"代码,但你又要不要这样做了.即Pascal - 一般而言 - 在相同的努力量下将产生更好的结果. (7认同)
  • @Mason - 但是Delphi不是Pascal,它是Oobject Pascal,它是在C之后创建的.要说C语言中的一种语言意味着它看起来与C#,Java,C++等大致相似.它并不意味着它就像C一样.在宏观方案中,我仍然认为Delphi看起来与这些语言大致相似,不像Lisp,Ruby,SQL等. (4认同)
  • 我认为Delphi是C语言系列的成员.Delphi与上面提到的其他语言之间唯一的主要语法区别是它使用`begin`和`end`而不是花括号来表示块范围. (3认同)
  • @Don:那是完全错误的.首先,Pascal是在C之前创建的,并影响了它的设计,而不是相反.所有控制结构都有不同的语法,特别是****和**case**.声明变量的规则非常不同.在C系列中,任何东西都可以是布尔值,导致各种丑陋的语法(Yoda条件,布尔运算符的单独逻辑和按位版本等),而在Pascal中,boolean是一个定义良好的类型,编译器明白.我可以继续,但我的人物已经不多了.但是,它们完全不同. (3认同)
  • @Don:我认为你所寻找的是C和Pascal(以及他们所有的后代)都是Algol家族的成员. (3认同)
  • "C家族"甚至意味着什么?它是3种完全不同的语言.答案和评论有点像"圣战"的论点,而OP要求提供相对成本的具体证据. (2认同)

Jos*_*ley 13

这种定量的比较将是非常难以确定,由于复杂变量的数目:开发者的语言经验,语言到目标域的适宜性,开发人员的综合素质(它被认为是非主流语言吸引更高质量的开发人员),与最终产品进行权衡(Ruby或Python应用程序与编写良好的Delphi或C++应用程序一样快)?等等.

Code Complete,第2版.,Steve McConnell根据其表达能力列出了几种语言(在每种语言的单个语句中可以表达多少行等效C代码).有人建议,无论语言如何,程序员在代码行中的生产率都是相对恒定的; 如果这是真的,那么每种语言的表达能力应该粗略估计每种语言的相对发展成本.从表4.1,第62页:

LANGUAGE       LEVEL RELATIVE TO C
C              1
C++            2.5
Fortran 95     2
Java           2.5
Perl           6
Python         6
Smalltalk      6
Visual Basic   4.5

他列出了该表的几个来源:使用Cocomo II 估算软件成本,软件成本估算,以及"七种编程语言的实证比较"(来自IEEE计算机的Prechelt,2000年10月).

McConnell引用的数字已经有好几年了,但据我所知,Cocomo II模型非常详细,因此目前的Cocomo II材料可能会提供Delphi和C#的最新数据.

  • 我认为这个论点是有缺陷的,因为它假定开发人员花费100%的时间进行编码,并且没有说明所产生代码的质量.对于许多项目来说,百分比接近30%(我想起了神话人月). (8认同)
  • 麦康奈尔的号码已经过时了; 从那时起,.NET语言(包括VB和C#)已经取得了巨大进步,特别是对于泛型和LINQ.LINQ在.NET中增加了函数编程功能,这可能会大大降低生产力数据. (4认同)

Ste*_*n C 6

我从来没有寻找过这样的研究,但如果存在的话,我会感到惊讶.任何旨在以适当的科学方式测量和比较多种语言的实际开发成本的实验都将非常昂贵.

要做得恰当:

  • 您需要在一系列应用程序域中指定许多非平凡的项目.

  • 您需要组建一个项目团队,每个团队都由在使用其中一种语言开发大型应用程序方面具有丰富经验的开发人员组成.

  • 然后,您需要为每种语言实施N次项目...以获得统计上显着的结果.

所以你需要相当于开发人员的努力project-size * nos-languages * nos-projects * nos-repetitions.假设一个非平凡的项目需要1个人年,那么有5个项目,每种语言开发5次(为了给我们足够大的样本量,具有统计意义),即25个经验丰富的开发人员年. ..说200万美元到500万美元......每种语言都有考试.

这些数字(显然)被拉出了空中,但我的观点是,对不同语言的开发成本进行适当的科学比较会非常昂贵.

即便如此,研究结果也无法解决:

  • 持续的可维护性/维护成本,
  • 数字如何扩展到大型项目,
  • 团队规模的语言特定效果,
  • 各种语言的开发工具的可用性,成本和收益,
  • 为每种语言组建经验丰富的团队的难易程度
  • 等等.

结果将在3至5年内过时.