用于GUI编程的Delphi vs C#[关闭]


20

我来自PHP和Python的背景,对C的了解很少,我做了很多基于Web的应用程序,现在我正在考虑Windows平台的桌面应用程序。

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

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

谢谢

Answers:


20

德尔福,绝对:

  1. 简单性-Delphi的语法基于Pascal,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。分别下载和安装。

2
@Elf:可能有更多的C#职位可用,但也有更多的人在争夺它们。熟练的Delphi开发人员可以轻松找到工作。
梅森惠勒

5
C#不仅基于C ++,而且还基于Delphi和Java。我也曾在Pascal学习过编程,并且在C#中看到了很多哲学。关于托管指针,您已经倒退了,通过托管指针访问数据没有开销,并且与使用引用计数的系统相比,对其进行更改要快得多。
古法

12
易于学习的Delphi语法是完全主观的陈述。我对Delphi语法大为恼火,因此决定不学习它。
Tjaart

8
-1:这个答案像疯了似的偏颇。Visual Studio调试器至少好于Delphi,甚至更好。与MSDN是有史以来最好的文档相比,Delphi文档并不存在。
marco-fiset 2012年

4
部署-完全失败。Deplhi需要Windows,因此这是C#的后退一步。多亏了Mono,C#可移植且可实现多平台。德尔福不是。您无需购买Windows即可运行用C#编写的程序,该程序未明确使用Win32库。简单性-也失败。C#的语法非常易于阅读,简洁和易于编写。德尔福不是。API文档-天哪!如果编写“ Web服务C#”,则会得到大量相关结果。德尔福没有这样的事情。速度,线程,尤其是调试器-也为假。
TheLonelyCoder

15

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

  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开发的生产力简直是疯狂。


4
谢谢,根据daniweb.com/forums/thread54305.html上的帖子,Delphi中的Win32 API集成和完整性甚至超过了C
elf1984 2010年

2
如果您认为C#是用于快速创建桌面应用程序的终极开发环境,则应该真正研究Delphi。当我不得不使用Visual Studio创建桌面内容时,我个人讨厌它,但是如今(不幸的是)我并不总是可以选择。
Wouter van Nifterick

1
坦率地说,Visual Studio的RAD(表单设计)工具很烂。
沃伦·P

1
@WarrenP您能否详细说明?
Tjaart

1
在C#中创建服务器应用程序,在Delphi中创建桌面应用程序,因为delphi会生成难以破解的本机代码!
justyy 2014年

14

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

要点:

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

另外一点,问题标题是GUI编程,为此,我是.nets WPF的忠实拥护者,Delphi唯一距离它近一半的是Bold,这让人难以忍受,现在已经死了。

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

堆栈溢出:

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

我添加了c,以表明这不是语言年龄的问题,Java只是为了进行比较。

我不是C#或Java迷,我是Delphi的忠实粉丝,是专业的纯粹Delphi开发人员已有7年了,但是他们确实从2005年起就把它搞砸了,因为他们不屑一顾地进入.net,从而破坏了.NET的稳定性。适用于本机32位编译的IDE。在我看来,Delphi 7是该语言的巅峰之作。


用那个downvote答复如何?
weston 2012年

1
我不是拒绝投票的人,但是我会说你没有回答这个问题。您只是在评估Delphi在stackoverflow上的受欢迎程度。您确定要指出一点,但是恕我直言,这是相当小的事情。成为唯一使用一项技术的人并不总是一件坏事。
西蒙·贝格

@Simon公平要点,我现在回答了所有要点,并将对问题数量的分析整合到有关社区规模的更广泛的要点中。
weston 2012年

可以说导致更多问题的语言使用起来更加复杂。;-) Bold与WPF有何相似之处?我使用过WPF,但没有发现任何相似之处。
吉姆·麦基思

@JimMcKeeth Bold和WPF都提供了将数据绑定到UI控件的框架,以便当数据更改时,UI会更新,反之亦然。
weston

8

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

我更喜欢具有C#功能倾向的OO,而不是带有Delphi面向对象的程序。在它们之间进行选择时,您应该考虑如何选择编码。对于简单性,我认为其中没有太多内容,而您发现更容易。生产率也是如此。

在RAD(快速应用程序开发)方面,winforms和Delphi GUI设计之间没有太多关系。他们让我想起彼此。

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

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

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

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

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


感谢您的精彩答复。您作为初学者读了哪本书?现在,我将在VS 2010上启动C#4和.NET 4
elf1984

4
当心尝试将Delphi应用程序移植到C#。每次我听说任何公司都在尝试时,他们最终都会验证Joel在“您不应该做的事情,第1部分”中提出的每一个要点,结果对产品和拥有它的公司造成了灾难。
梅森惠勒

抱歉,我无法真正为您提供有关c#4的初学者书籍。我不确定我在启动c#时是否有一个(早在1.1天内。我确定有一些,但我没有看过)。当我开始学习时,我认为我使用的第一本书是Jesse Liberty撰写的《 21天自学C ++》,我在读大学之前就读过这本书。我花了很长时间才克服它,但我学到了很多。我拥有的另一本好书是《发现德尔福》,这是本课程的书。我推荐的一本书是大卫·韦斯特(David West)的《对象思维》(Object Thinking),因为它确实使您想到了面向对象编程和面向对象编程,还有比尔·瓦格纳(Bill Wagner)的《有效C#》 ...
Matt Ellen 2010年

...他们并不是真正的初学者,但是一旦您掌握了基础知识,他们就会为您提供如何成为更好的程序员的绝妙技巧和建议。
马特·艾伦

顺便说一句,如果您正在德尔福(Delphi)寻找LINQ,请查看Alexandru Ciobanu的DeHL库。它提供LINQ样式的集合和运算符。LINQ语法(伪SQL的东西)还没有在Delphi中使用,但是显然编译器团队正在为将来的版本进行开发。
梅森惠勒2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.