Delphi与C++ Builder - 对于做Win32的Java程序员来说,这是更好的选择

2022-09-03 03:14:46

我是一个非常有经验的Java程序员,在过去的几年里,我一直在做很多Win32的事情。主要是我一直在使用VB6,但我真的需要转向更好的东西。

我花了一个月左右的时间和Delphi 2009一起玩。我喜欢VCL GUI的东西,Delphi似乎比VB6更适合Windows API调用,我真的很喜欢它在OO方面比VB6好得多的事实,我喜欢IDE附带的单元测试框架。

但是我真的很纠结于Delphi没有广泛使用的垃圾回收器的事实 - 必须手动释放每个对象或使用接口来处理所有内容,这似乎对以面向对象的方式有效地做事的方式产生了相当大的影响。另外,我并不是特别热衷于语法,或者你必须在方法的顶部声明变量的事实。

我可以处理Delphi,但我想知道C++ Builder 2009是否对我来说是一个更好的选择。我对C++ Builder和C++知之甚少,但我对Delphi也知之甚少。我知道C++语言有很多内容,但我怀疑只需要知道其中的一个子集就可以有效地完成工作......我听说今天的C++比10年前的C++更有成效。

我只会做新的开发,这样我就不需要掌握C++语言的每个方面 - 如果我能找到Java的每个语言功能的等效项,我会很高兴,随着我的进步,我可以开始更多地研究更高级的东西。(抱歉,如果这听起来非常天真 - 如果是这样,请纠正我!

因此,对于Delphi和C++ Builder都不熟悉的Java程序员来说,您认为哪个是Win32 exes和dll的高效开发的更好选择,为什么?您认为每种方法的优缺点是什么?


答案 1

德尔福或C++建造者 - 这是一个艰难的选择!

如您所知,从IDE和RAD的角度来看,它们基本上非常相似。

无论背景如何,每种方法的优缺点都有点像这样。两者都共享一个伟大的双向RAD表单设计器和框架(VCL),非常适合本机Windows开发。

德 尔 福:

  • FOR:庞大、活跃、热情的社区
  • FOR:德尔福2009是多年来最好的版本
  • FOR:德尔福“单位”使 C 源/头文件对看起来过时
  • 反对:没有自动销毁,因为对象离开范围,因此在你的代码中有很多“终于”
  • 反对:语言可以是“冗长的”,这是一个品味问题
  • 反对:使用第三方DLL或其他语言(特别是C)的库需要编写Delphi头文件

C++建筑商

  • FOR: C++Builder 2009 可能是有史以来最好的版本
  • FOR:RAII 成语极大地简化了内存管理
  • FOR:模板非常有用且功能强大,即使C++Builder实现存在一些错误。
  • FOR:支持 BOOST 和其他基于模板的现代库(即使 Boost 支持不是 100%)
  • FOR:与德尔福的良好互操作意味着大多数德尔福组件都可以轻松使用。
  • FOR:易于使用具有 C/C++ 标头的第三部分 DLL/库。
  • FOR:C++简历上可能比Delphi看起来更好。
  • 反对:CB2009是“仅unicode” - 这与Delphi相比,它对代码可移植性的影响是不同的,也没有经过深思熟虑
  • 反对:C++Builder用户群比Delphi小得多。也许是20%或更少。
  • 反对:Borland/Inprise几年前差点杀死BCB,直到社区做出重大努力后才复活。(然而,Codegear/Embarcadero的承诺似乎确实令人印象深刻)
  • 反对:C++Builder不是Codegear中的佼佼者。
  • 反对:第三方组件供应商并不总是理解/支持C++Builder

仅此而已。只是为了说明我的立场,我是一个快乐的BCB2007 / 2009用户(自BCB5以来),我也很少使用Delphi。几年前,我考虑过从C++到Delphi的转变,但缺乏RAII成语是我发现难以接受的一件事。


答案 2

与Delphi一起使用,您可以使用Barry Kelly编写的Boehm垃圾收集器API,这样您就可以在Delphi中进行垃圾收集。Barry在去CodeGear担任编译器架构师之前写了这篇文章。它确实在非常大的应用程序中存在问题,并且很可能不适用于64位Delphi。他在这次播客采访中谈到了很多。

即使你不使用垃圾回收内存管理器,我仍然会推荐Delphi而不是C++。C++为一般开发提供的唯一优点是大括号语法。如果你不介意Delphi语法,那么对于大多数事情,你会发现它更好。当然C++ Builder拥有整个Delphi VCL和RTL,所以它不像Visual C++那么糟糕,但我仍然认为Delphi会是一个更好的选择。

对于Excel加载项(正如您在评论中提到的),我会推荐Delphi而不是C++构建器,因为它具有更好的COM支持(我相信您需要Excel加载项)。


推荐