我是一个很有经验的Java程序员,一直在做相当多的Win32东西在过去的几年。主要是我一直在使用维生素b6,但我真的需要移动到更好的东西。

我花了一个月或以玩尔斐2009年。我喜欢VCL GUI的东西,德尔福似乎更适合于Windows API调用于维生素b6中,我真的很喜欢这样的事实,它更好地OO于维生素b6,我喜欢单元的测试框架的环境。

但我真的斗争的事实,也没有广泛使用的垃圾收集器,用于特尔斐-有免费的每个对象手工或使用的接口,为似乎一切都有一个相当大的影响,你可以做的事情有效的面向目标的方式。我也不是特别热衷的语法或事实上你已经宣布变量都在顶的方法。

我可以处理德尔福,但我想知道,如果C++生成器2009年可能是更好的选择我。我知道很少关于用C++的建设者和C++、但后来我知道很少关于德尔福。我知道有很多C++的语言,但是我怀疑它是只需要知道它的一个子集把事情做得富有成效的...我听说C++的今天是一个更多的有生产力节目的在于用C++的10年前。

我会做新的发展,只有这样我就不需要掌握每一个方面C++语言-如果我可以找到一个相当于每个爪哇语言的特点,我会很高兴够的,因为我进度我会开始看的更先进的东西,多一点。(抱歉,如果这听起来令人痛苦的天真的-如果是这样,请让我觉!)

因此,对于一个Java程序员,这是新的两Delphi和C++建设者,你会考虑以更好的选择的生产性发展的Win32的前任和dll,为什么?你看到什么要利弊?

有帮助吗?

解决方案

德尔斐或C++生成器-这是一个困难的选择!

你知道,他们基本上是非常相似,从IDE和RAD的观点。

优点和缺点的每个-不论的背景是一个有点喜欢这个。两分享一个伟大的2路RAD形式设计和框架(VCL),是理想的机Windows发展。

德尔菲:

  • 为:大、主动、热情的社区
  • 为:德尔菲2009年的最新版本,为许多年
  • 为:德尔菲"单元"的做C源/头文件,对似乎是陈旧的
  • 反对:没有自动销毁作为对象的保留的范围,因此大量的'最后的代码中
  • 反对:语言可以'罗嗦',这是一个品味的问题
  • 反对:使用第三方DLL的或图书馆在其他语言(esp。C)要求特尔斐标题的文件可以写的

C++生成器

  • 为:C++生成器2009年可能是最好的版本
  • 为:RAII成语,简化存管理非常
  • 为:模板是非常有用的和强大的,即使C++建设者实施了一些错误。
  • 为:支持提升和其他现代化的基于模板的图书馆(即使增强支持是不是100%)
  • 为:伟大的互操作有德尔斐装置大多数特尔斐件可以很容易地被使用。
  • 为:易于使用的与第三部分Dll/图书馆与C/C++头。
  • 为:C++可能看起来更好在个人简历,比德尔福。
  • 反对:CB2009是"unicode只有"-其含义的代码可移植性都是不同的和不太好的想法的比德尔福
  • 反对:C++生成器的用户基础是比德尔福。也许20%或更低。
  • 反对:Borland/Inprise几乎杀了BCB几年前,这只是复活之后作出重大努力从社区。(但是,codegear出现/内河码头的承诺,并似乎令人印象深刻)
  • 反对:C++生成器是不堆顶部内codegear出现.
  • 反对:第三方成分供应商并不总是理解/支持C++的生成器

就是这样。只是为我国位置,我是一个快乐的BCB2007/2009用户(由于BCB5),我也不经常使用德尔菲.几年后,我认为从C++德尔斐,但缺乏RAII的惯用语是一件事,我发现很难得到。

其他提示

使用Delphi,您可以使用 Boehm垃圾收集器API “http://barrkel.blogspot.com/”rel =“noreferrer”> Barry Kelly 所以你可以在Delphi中进行垃圾收集。在他作为编译器架构师去CodeGear工作之前,Barry写了这个。它确实存在大型应用程序的问题,并且很可能不适用于64位Delphi。他在播客采访中谈到了这一点。

即使您不使用垃圾收集内存管理器,我仍然会建议使用Delphi而不是C ++。 C ++为一般开发提供的唯一优势是大括号语法。如果您不介意Delphi语法,那么对于大多数事情,您会发现它更好。授权C ++ Builder拥有整个Delphi VCL和RTL,因此它没有Visual C ++那么糟糕,但我仍然认为Delphi是更好的选择。

对于Excel加载项(正如您在评论中提到的),我建议使用Delphi over C ++ builder,因为它有更好的COM支持(我相信您需要Excel加载项)。

Delphi将更容易与您达成协议,确定您必须管理您的记忆,但它非常简单

MyObj = TMyObj.Create;

try
  MyObj.DoSomething;
finally
  MyObj.Free;
end

在Delphi中,所有对象都在堆上分配,因此如果您创建它,则规则非常简单。

C ++及其基于堆栈和堆的objs意味着您需要学习更多内容以及更多陷入困境的范围。

自从BCC 4.1 / DOS和Delphi从2007年到2007年使用Borland C和C ++编译器之后,我可以诚实地告诉你,无论哪种方式,你都可以进行一次伟大的冒险。从Borland的Builder和RAD IDE上的C / C ++开始,是微软的VC ++,C ++和.NET(从第一个MS-DOS版本使用VC - 米色三环迷你绑定器)的重大范式转换(和学习曲线)。

C ++和Delphi之间的选择是我建议你在两种语言中的一些中小型项目之后做出的选择。我开始使用C程序员,大约五年后转向Delphi(V3.0),当VCL使Windows编程变得更容易,更高效。

请注意,Delphi对于来自其他语言(如COBOL,FORTRAN,VisualBasic)的程序员来说是一种诱人的语言,因为它的语法和代码规则强制执行一种让人们摆脱困境的规则。 C的简洁性和原始金属功能使其成为一种出色的系统编程语言(设备驱动程序,操作系统代码,实时嵌入式编程),但在没有经验的人手中它可以咬你。

Borland的C ++ Builder(Delphi的VCL添加到C ++编译器中)消除了许多C ++锐利边缘,是我第二喜欢的语言。由于Borland为这两种语言添加了.NET支持 有一个强有力的论据,使用Builder而不是VC ++进行MS框架编程。虽然与C ++相比,C#内置了很多“友好”,但如果我刚开始的话,我还是会坚持使用Delphi或Builder。

为了学习绳索,对于原型设计和快速概念程序,根本没有一种语言能够击败Delphi,尤其是VCL和第三方组件。没有炒作,只是事实。

就个人而言,我认为除了语言之间的差异外,还有其他重要的考虑因素。例如,Delphi IDE对于以所见即所得的方式构建GUI非常棒。我没有使用过C ++构建器IDE,但如果它有一个像Delphi一样好的GUI构建器,我会感到非常惊讶。

虽然表面上看,C ++的语法看起来更像Java,但Delphi的对象模型实际上更接近于Java。尽管Delphi中存在指针,但实际上99%的时候都会使用对象引用(如Java中的引用)。即使在现代C ++中,我也不认为可以避免使用指针。并不是指针本身有什么问题,而是在实践中......

就个人而言,我这些天大部分时间都是Java人,但我花了两年时间与Delphi合作,并会在心跳中重新开始。相比之下,我对C ++的经验非常有限,并且宁愿清洁厕所而不是回归那种语言:)

当然java sintax更像c++比如德尔福,但我认为对象的模式更类似于特尔斐:

  • 单一的继承权。接口存在,但是更像COM于java这样的接口。
  • 对象是在堆上分配,并可通过参考

你可以找到一个纸比较三种语言 在这里,

我认为如果你使用Delphi,你会发现它在使用几次后更容易,而且它还有更多的第三方支持以及在C ++ Builder之前在Delphi中引入的一些功能

还阅读了来自ex-Java的这个博客,现在大多数数据库和datasnap背后的人都在Delphi Steve Shaughnessy工作,关于他在Java 10年后编程Delphi的经验:-) http://blogs.codegear.com/steveshaughnessy/2006/12/03/ 30193个

在C ++ VCL中,我无法用Delphi VCL做任何事情,几乎所有Delphi组件都可以在C ++ Builder中正常运行。由于我为Windows和UNIX编程,因此C ++更具可移植性。

如果你的容器使用C ++ STL或其他设计良好的库,那么垃圾收集就变得没什么问题了,否则手动GC并不困难(人们很快就会学会好习惯 - 无论如何你都应该练习GC)。只要你尽可能使用RAII,保持你的内存管理封装在容器中,明确对象所有权,只使用指针作为可用的引用(所有这些你也应该做与语言无关),GC真的不应该是问题。

"例如,Delphi IDE对于以所见即所得的方式构建GUI非常棒。我没有使用过C ++构建器IDE,但如果它有一个像Delphi一样好的GUI构建器,我会感到非常惊讶。“

实际上,C ++ Builder GUI编辑器是完全相同的编辑器,并以相同的方式工作。太棒了。

.Net有很多类,就像Java一样。 C#具有与Java类似的语法,因为庞大的类库工作方式相当类似。这是一个非常适合编程的环境。但坦率地说,Delphi是一种更愉快的语言,IDE和一般环境。 C#是由设计Delphi和“感觉”的人设计的。在许多方面非常相似,所以不要假设因为Delphi编译为本机代码(尽管你也可以使用Delphi .Net),它的使用起来更加困难。根本不是。

我个人的建议是Delphi,因为它是一种很酷的语言。但是,如果您对学习C ++感兴趣,那么C ++ Builder可能是最好的方法。

我在Delphi工作了十年,并且对C ++有很好的了解。 我会去Delphi的方式。语法更简单,内存管理也更简单。那个原生Delphi的GC我还没有听说过...虽然我不太喜欢因为.NET gc引入Delphi.Net代码的陷阱,但我不太喜欢gcs; - )

之前我忘了提到的一件事:

从成本角度来看,您实际上并不需要选择。购买 RAD Studio 软件包,并且只需一种语言即可获得适度的额外费用,即可在同一IDE中同时获得Delphi C ++ Builder个性。

并且,值得一提的是C ++ Builder包中包含Delphi编译器,您可以编写/添加Delphi .pas文件并将它们作为C ++项目的一部分包含在内。

如果您要进行大量的Windows编程,请学习C ++。你会为准备去法国旅行学习德语吗? C / C ++是Windows API的本机语言。在C / C ++中处理WinAPI数据结构和调用非常简单。至于RAD,我已经使用了MSVC大约13年了,我可以像使用Visual Studio的GUI编辑器一样快速地将GUI应用程序组合在一起。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top