it-swarm.cn

Delphi与C#进行GUI编程

我来自PHP和Python背景,对C的了解很少,平台。

一个朋友告诉我去Delphi,其他人说C#是最好的,嗯,我要寻找的是

  1. 简单
  2. 生产率
  3. 好的API文档
  4. 速度
  5. 拖放
  6. 多线程和良好的网络API

谢谢

20
elf1984

德尔福,绝对:

  1. 简单性-Delphi的语法基于Pascal,该语法经过明确设计,易于学习, 并且可以兑现承诺。 C#基于C家族,它...是不是
  2. 生产力-Delphi是Turbo Pascal的后代,并且仍然拥有人类已知最快的编译器, 这将极大地提高您的生产力。 另外,它还具有调试器Visual Studio希望其调试器与它一样长大。特别是在最新版本的Delphi中,调试要容易得多。
  3. 好的API文档-如今,“ API”是一个相当模糊的词,涵盖了各种各样的内容。我认为您的意思是库,在这里有点折腾。 .NET框架和Delphi标准库都具有良好的联机文档和平庸,难以使用的脱机文档。 (由于Delphi团队选择使用与Visual Studio相同的可怕帮助系统,他们希望在下一版本中不再使用该系统。)
  4. 速度-德尔福轻松取胜。它编译为本机代码(由于没有JIT阶段,因此执行速度更快,并且启动更快),并且它不使用托管指针,因此对象访问速度更快且缓存不友好。
  5. 拖放-VCL的内置功能。
  6. 多线程-Delphi具有内置的线程类,但是如果您想通过并发来完成复杂的事情,则有更好的选择。 Delphi社区成员Primoz Gabrijelcic一直在致力于 一个出色的并发库 ,我已经为此做出了贡献。它为常见的线程目标(例如任务池,并行FOR循环和多阶段管道过程)提供了高级支持。
  7. 良好的网络API-Delphi附带了Indy,这是一个成熟的开源库,可轻松设置和管理Internet连接。我们在工作中使用它来为您可能从未听说过的行业领先应用程序提供通信层,除非您在广播媒体中工作。
  8. 部署-这不在您的清单上,但值得一提。仍然有未预先安装.NET框架的系统。默认情况下,Delphi将其标准库编译到EXE中,然后使用smartlinker删除不需要的部分,从而导致小型EXE不依赖于庞大的运行时库,而这些运行时库的用户重达数百MB分别下载和安装。
20
Mason Wheeler

C#通常将拥有更大的用户群,将来还会有更多的开发,并且RAD通过Visual Studio开发的工具令人难以置信。

  1. 语法将类似于您在PHP和C中使用的语法。
  2. Visual Studio及其工具和IntelliSense的生产率极高。
  3. MSDN
  4. 同样,VS工具+ Intellisense,但速度确实来自您对语言及其功能的熟悉程度。
  5. WPF WinForms的VS设计器。
  6. System.Threading和System.Net

我在Delphi方面没有太多经验,我只是在总体上讲我在C#中的经验。在我工作的地方,非编程人员设想的截止日期非常紧迫,而且我能够非常快速地抽出业务桌面应用程序。在过去的三周中,我从规范转到在两个Winforms LOB应用程序上进行部署。使用VS在C#中进行GUI开发的生产力简直是疯狂。

15
bunglestink

两者都具有您想要的全部6点,但是我觉得C#在大多数(如果不是全部)上都有Edge。

要点:

  1. Delphi需要内存管理,因此您可能会争辩说,单凭它会使C#更简单。可接受的答案在这里提到了语法,C#语法与PHP和Java)相似,因此,如果您想从任一背景下更快地启动并运行,则C#具有Edge。
  2. 生产力,我认为您可以更快地在C#中完成更多工作。 .net库为您提供了很多东西,以至于在糟糕的过去,我不得不依靠3rd party delphi组件来提供。
  3. 文档,Delphi一直很好,MSDN更好,再加上您会找到更大的社区来寻求支持,请参阅下面的我的Stack Overflow分析。
  4. 速度,Delphi可能拥有Edge,但是Assembly胜过一切,所以通常这不是选择语言的好理由。我要指出的一件事是,我听到人们援引C#被解释。不是,从来没有,它一直都有JIT。
  5. 拖放,两者均可用。
  6. 多线程,Delphi很好,但是C#在诸如lock(){}并行扩展和新的await之类的内置结构中表现出色。

另外一点,问题标题是GUI编程,为此,我是.nets WPF的忠实拥护者,Delphi唯一接近它一半的地方是 Bold ,这很难忍受现在死了.

社区规模,比较与此相关的问题数量以及Delphi和C#标记上的堆栈溢出,您会发现C#社区的规模要大得多。

堆栈溢出:

  • 德尔福17K
  • C#367K
  • Java 312K
  • 约73K

我添加了c,以表明这不是语言age的问题,而Java只是为了比较。

我不是C#或Java粉丝男孩,我是Delphi的忠实粉丝,是专业的纯Delphi开发人员,已有7年了,但是他们确实从2005年起就把它搞砸了,因为他们病入膏into。 .net甚至破坏了32位编译时IDE)的稳定性。在我看来,Delphi 7是该语言的巅峰之作。

14
weston

当我上大学时,我曾学习Delphi编程。我有些生疏,但是我目前正在阅读大量的Delphi代码,以将其移植到C#应用程序中。

我更喜欢具有C#功能倾向的OO)而不是具有Delphi OO对于简单性,我认为其中没有太多内容,只是您发现更容易,对于生产力也是如此。

用RAD(快速应用程序开发)表示),winforms和Delphi GUI设计之间并没有太多关系,它们使我彼此联想到。

另一方面,由于WPF具有声明性,因此我都更喜欢WPF。

我认为供应商提供的C#或Delphi文档的质量和覆盖范围之间没有太大区别。我认为您会发现更多有关C#的非供应商信息,但这可能只是因为我并没有真正用Delphi进行过多搜索。

我不必使用Delphi进行任何线程编程,而我所做的任何联网都是几年前的,我不记得了。

用于并行处理,事件和其他线程工作的.NET库很好。这样您就不会错过任何地方。联网方面有很多支持,因此强烈建议再次使用。

总的来说,我会使用C#/。NET。部分原因是由于WPF,但我更喜欢用C#编写的代码。据我所知,delphi没有像Linq这样的东西,我认为这是无价的。

8
Matt Ellen