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

标签 java c++ delphi winapi c++builder

我是一位经验丰富的 Java 程序员,在过去的几年里一直在做很多 Win32 方面的工作。主要是我一直在使用 VB6,但我真的需要转向更好的东西。

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

但我真的很挣扎,因为 Delphi 没有广泛使用的垃圾收集器 - 必须手动释放每个对象或为所有内容使用接口(interface)似乎对您在面向对象的方式。此外,我对语法以及必须在方法的顶部声明所有变量这一事实并不特别感兴趣。

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

我将只进行新的开发,因此我不需要掌握 C++ 语言的各个方面 - 如果我能找到 Java 的每种语言功能的等价物,我会很高兴,并且随着我的进步,我可以开始更多地研究更高级的东西。 (对不起,如果这听起来太天真了——如果是这样,请让我直截了当!)

那么,对于刚接触 Delphi 和 C++ Builder 的 Java 程序员来说,您认为哪一个是高效开发 Win32 exe 和 dll 的更好选择,为什么?您认为每种方法的优缺点是什么?

最佳答案

Delphi 或 C++ Builder - 这是一个艰难的选择!

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

每个人的优点和缺点 - 无论背景如何 - 有点像这样。两者共享一个出色的 2 路 RAD 表单设计器和框架 (VCL),非常适合原生 Windows 开发。

德尔福:

  • 适用于:大型、活跃、热情的社区
  • FOR:Delphi 2009 是多年来最好的版本
  • FOR:Delphi“单元”使 C 源/头文件对显得过时
  • 反对:当对象离开作用域时不会自动销毁,因此代码中有很多“finally”
  • 反对:语言可能会“罗嗦”,这是个人喜好问题
  • 反对:使用第三方 DLL 或其他语言(尤其是 C)的库需要编写 Delphi 头文件

C++Builder

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

就是这样。只是为了说明我的立场,我是一个快乐的 BCB2007/2009 用户(从 BCB5 开始),而且我也很少使用 Delphi。几年前,我考虑过从 C++ 切换到 Delphi,但缺乏 RAII 习语是我难以接受的一件事。

关于java - Delphi 与 C++ Builder - 对于使用 Win32 的 Java 程序员来说,这是更好的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/180358/

相关文章:

java - Hazelcast IMap put 方法获取存储桶、分区或 key 上的锁?

java - 项目中的 list 合并失败问题

c++ - C语言蓝牙paquet分析

Delphi - 如何格式化带有前导零的实数?

java - 如何将String[](数组)存储在String[][](数组的数组)中

java - 如何将没有接口(interface)的 DLL 与 JNA 一起使用

c++ - "auto;"类型推断

c++ - 创建对整数数组指针的 vector<int> 引用 (C++)

delphi - 向 Dropbox 发出的请求出了什么问题?

delphi - 是否有 Delphi EncodeDate/DecodeDate 函数版本可以处理 B.C.日期?