我的问题是,我出去吃午饭吗?我的意思是,它可能需要做很多工作(并且可能会破坏太多东西),但是没有某种类型的魔法障碍阻止C#代码本地编译(如果有人想这样做),对吧?有一段时间,C被认为是一种非常高级的语言(它仍然是,但不像过去那么多),但现在它是微软原生API的基石(连同C).在某种程度上,.NET在某种程度上与C在同一级别上的想法似乎只是时间和精力问题,而不是语言设计中的一些根本缺陷.
编辑:我应该补充一点,如果.NET的本机编译成为可能,为什么微软选择不去那条路?为什么他们选择了JIT字节码路径?
解决方法
C#很慢的想法是可笑的.一些winforms组件很慢,但是如果你知道你在做什么,C#本身就是一种非常快速的语言.在这个时代,它通常归结为算法无论如何;如果您实施错误的冒泡排序,语言选择将无法帮助您.如果C#帮助您使用更高级别的更高效算法(根据我的经验,通常会这样做),这将胜过任何其他速度问题.
根据您的编辑,我还想再次解释(典型的)编译路径.
C#编译为IL.此IL分发给本地计算机.用户运行该程序,然后该程序被JIT编译为该机器的本机代码一次.下次用户在该计算机上运行程序时,他们正在运行完全原生的应用程序.还有一个JIT优化器可能会让事情变得混乱,但这就是一般情况.
这样做的原因是允许单个机器进行适合该机器的编译时优化.平均而言,如果您将相同的完全编译的应用程序分发给每个人,则最终会得到更快的代码.
关于反编译:
首先要注意的是,如果您真的想要,可以在分发之前预编译为本机代码.此时,您将接近与分发本机应用程序相同的级别.但是,这不会阻止一个坚定的个人.
它在很大程度上也误解了经济学.是的,有人可能会对您的工作进行逆向工程.但这假设应用程序的所有价值都在技术中.程序员高估代码的价值非常普遍,并且低估了产品的执行价值:界面设计,营销,与用户的联系以及持续的创新.如果你做到了这一切,那么一点额外的竞争将通过在你的市场中增加需求来帮助你.如果你做错了,隐藏你的算法将无法拯救你.
如果你更担心你的应用程序出现在warez网站上,那你就更加误导了.无论如何它会出现在那里.一个更好的策略是engage those users.
目前,采用(imo)的最大障碍是可再分发的框架已经变得庞大.希望他们能够在相对接近的版本中解决这个问题.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。