kja*_*ack 17 .net c# delphi realbasic xojo
有没有人写过比.NET行李更大的应用程序?人们习惯于批评VB6的2 MB运行时间,但它很少使它伴随的应用程序相形见绌.
今天尽管在我的机器上安装了Vista,但我必须下载35 MB的3.5框架并重新启动,然后试用一半大小的应用程序.
当你考虑到降低的源代码安全性时,我想知道为什么有人会在.NET中开发一个Windows应用程序,而不是在允许构建本机可执行文件的语言中.
在编写在Windows上运行的应用程序时,.NET有哪些优势可以解决这些缺点?
Ken*_*ite 42
PEOPLE:请注意,这是写在2009年2月,并说什么是适当的,在那个时候 -在2012年年底,在我吼(3+年以后)是没有意义的.:-)
Delphi对Win32有一些相当大的优势.并不是说.NET应用本质上是坏的,但尝试:
.NET中的垃圾收集可能非常好,但任何对编程有所了解的人也可以使用Delphi轻松处理内存的手动分配/释放,并且GC可以使用引用计数接口.是不是所有非程序员都将VB的伪GC扩散的事情之一?IMO,GC是使.NET变得危险的事情之一,就像VB危险一样 - 它使事情变得太容易,并且让那些真正不知道他们正在做什么的人来编写最终弄得一团糟的软件.(而且,在我在这里被烧死之前,这对于那些知道他们正在做什么的人来说也是很好的,VB也是如此;我只是不确定技术人员对我们的危害的优势来自不熟练的.)
Delphi Prism(AKA Rem Objects Oxygene,以前的Chrome)提供了Delphi的GC版本,需要它的人正在寻找,以及ASP.NET和WPF/Silverlight/CE,Delphi的可读性(和缺乏花括号) .对于那些不支持Unicode的人(像我一样),Delphi 2007提供了ASP.NET和VCL.NET,以及本机Win32支持.而且,在我工作的地方,当工作站每三年只升级一次(至少),而我们刚刚摆脱最后一台Win95机器,因为它不是升级的优先级,.NET框架是一个问题.(特别是公司代理要求只允许少数人访问互联网,限制带宽和下载功能,以及允许不使用USB设备的适当非管理员帐户,
我使用.NET语言(C#,Delphi Prism)工作,但是全职和侧面的面包和黄油来自Win32和Delphi.
Jon*_*eet 23
好吧,我怀疑这会说服你,因为你不想被说服,但这是我对.NET优于旧技术的看法.我不会声称每个优势都适用于您在问题中提到的每种语言,或者.NET是完美的,但是:
托管环境更早发现常见错误并提供新机会:
一个现代的面向对象框架:
一种针对多种语言的框架:
大多数这一点 - 以及声音 - 我认为是.NET可以更快地开发更强大的应用程序.
要解决您在问题中提到的两个具体问题:
Dar*_*rov 12
仅举几例:
Shu*_*oUk 12
好的,首先,没有一种语言/平台能够普遍优越.
较旧的语言将具有可用的现有代码库,这既是积极的(经验丰富,经过充分测试,广泛支持文献),也是负面的(由此产生的对变化的惯性,多种不同的做事方式导致新进入者的混淆).
选择/使用这两种语言和平台,就像大多数事情一样,是利弊的平衡.
在下面的列表中,Delphi有一些相同的优点和缺点,但也有很多不同.
.Net的潜在负面因素(如果它们不是问题,那么它们不是负面的)
还有更多,但这些是亮点.
潜在的积极因素(如果它们对您无关紧要)
同样特别针对c#
缺点:
优点:
C基础真的是赞成和反对.大量程序员可以理解这一点(与基于pascal的风格相比),但有一定的瑕疵(switch语句就是一个明显的例子).
强/弱/静态/动态类型系统是一个两极分化的争论但是,当类型系统更加限制它应该努力不要求过多的冗长时,肯定没有争议,c#当然比许多更好看待.
对于许多内部业务线应用程序而言,大量的.Net平台缺点绝对不重要(受控部署是公司内部常见且解决良好的问题).因此使用.Net(这在很大程度上意味着c#,对不起VB.Net人员)是Windows架构中新开发的一个非常明显的选择.
Ale*_*ort 10
使用它开发复杂(和简单)应用程序的"简单性".在框架中已经为您编写了许多基本内容,您可以使用它.今天下载35mb文件要比8 - 6年前的2mb文件容易得多.
有很多原因.我不太了解RealBasic,但就Delphi而言:
不如.NET,更小的开发社区.网上的许多德尔福资源都是古老而过时的.
在Delphi 2009之前,Delphi没有完全的unicode支持.
我不知道Delphi 2009,但2007年没有很好的垃圾收集.它有一些笨重的引用计数,需要代表开发人员进行一些干预..NET有一个更高级的GC,可以为您提供几乎所有功能.
.NET拥有更大的标准库和更多最新的第三方库.
像C#这样的.NET语言可以说是更好的,对于那些刚接触语言的人来说当然更容易理解.
.NET开发人员在这里引用了许多所谓的优点,不应该在那个比较中,因为Delphi也有它们:
然而,在.NET中有一些东西,Delphi没有开箱即用,只有一些可以通过库和自己的代码添加.仅举几例:
[1]如果您不知道但感兴趣,请查看Marc Clifton的主页,特别是关于声明性编程的文章.
编辑:我想回应梅森惠勒的评论:
动态代码:我知道有一些解决方案可以在应用程序中嵌入Pascal脚本.但是,内部对象层次结构的某些部分可用于脚本引擎,并且在运行时也可以使用与代码相同的编译器.Delphi编译器和脚本引擎的编译器之间总是存在差异.无论如何,你用.NET获得的东西远远超出Delphi可用的任何东西.无论如何,关于是否能够为Delphi编写类似的基础架构并不是重点,关键在于,当你需要它时,它已经存在于你身边.
重新组播事件:确切地说,有方法对其进行编码,但它不是Delphi/VCL开箱即用的一部分.这就是我上面所说的.
重新弱参考:你遗憾地错了.尝试以非平凡的方式使用接口,在路上创建循环引用.然后你必须开始使用类型转换并希望弱引用.