1
28
Java使用字节码。C,虽然它使用IL作为中间步骤,但是 总是 编译为本机代码。IL永远不会被直接解释为Java字节码的执行。如果您真的想,甚至可以在发布之前预编译IL(提示:性能通常更好 从长远来看 如果你不这样做。 认为C慢的想法是可笑的。一些 WinForms组件 速度很慢,但如果你知道自己在做什么,C语言本身就是一种非常快的语言。在当今这个时代,它通常都归结为算法;如果实现了一个坏的冒泡排序,语言选择将不会帮助您。如果C帮助您使用更高级别的更高效算法(根据我的经验,通常是这样),这将超过任何其他速度问题。 基于您的编辑,我还想再次解释(典型的)编译路径。 C编译为IL。此IL分发到本地计算机。用户运行程序,然后该程序被JIT编译为该计算机的本机代码。 一旦 . 下次用户在那台机器上运行程序时,他们运行的是完全本地的应用程序。还有一个JIT优化器可以让事情变得有点混乱,但这是一般情况。 这样做的原因是允许单个机器对该机器进行适当的编译时优化。与将同一个完全编译的应用程序分发给每个人相比,最终得到的代码平均更快。 关于反编译: 首先要注意的是,如果您真的想要,可以在发布之前预编译到本机代码。在这一点上,您已经接近了与发布本机应用程序相同的级别。然而,这并不能阻止一个坚定的人。 它也在很大程度上误解了经济学。是的,也许有人会对你的工作进行逆向工程。但这是假设应用程序的所有价值都在技术上。对于程序员来说,过分看重代码和低估 产品 :界面设计、营销、用户联系、持续创新。如果你做得对,一点额外的竞争将帮助你,因为它会增加你的市场需求。如果你做错了,隐藏你的算法不会救你。 如果你更担心你的应用程序出现在瓦雷斯网站上,你会更被误导。无论如何,它会出现在那里。更好的策略是 engage those users . 目前,采用(IMO)的最大障碍是框架的可再分配性在规模上变得巨大。希望他们能在一个相对较近的版本中解决这个问题。 |
2
1
您是否认为C是托管代码这一事实是一个设计缺陷?? |
3
1
C可以使用诸如NGEN之类的工具进行本机编译,Mono(开源.NET框架)团队开发了完整的AOT(提前)编译,允许C在iPhone上运行。但是,完全编译是没有意义的,因为它破坏了跨平台的兼容性,并且某些特定于机器的优化无法完成。但是,还要注意,.NET不是一种解释语言,而是一种JIT(及时)编译语言,这意味着它在机器上本机运行。 |
4
1
伙计,你可以用ngen.exe把你的C程序集编译成本机映像。 你是说.NET设计有缺陷吗?正是.NET把微软从糟糕的vb 5,vb 6,com时代带回到了游戏中。这是他们最大的赌注之一 Java也做同样的事情,所以你建议Java也是一个错误吗? 规则。大型供应商——请注意,.net在所有规模的公司中都取得了巨大的成功(除了那些开源的家伙——这没什么错)。所有这些公司都对.NET框架进行了大量投资。 根据我来说,把C速度与C++相比较是一个疯狂的想法。C++是否为一个世界级的框架提供了被管理的环境? 如果你如此偏执于反编译,你可以总是混淆你的程序集。 它不是关于c++ v/s c*,管理的v/s非托管。两者在各自的领域都是同样优秀和同样强大的 |
5
0
C可以本机编译,但基本类库不太可能去那里。另一方面,我真的没有看到超越JIT的优势。 |
6
0
当然可以,但真正的问题是为什么?我的意思是,当然,它可能很慢(ER),但大多数时候,性能上的任何主要差异都归结为设计问题(错误的算法、线程争用、占用资源等),而不是语言问题。至于“易碎”字节码,考虑到采用率,它似乎并不是大多数公司真正关心的问题。 归根结底,这项工作的最佳工具是什么?对某些人来说,它是C++;对于其他人来说,是Java;对于其他人来说,是Cype、Python或Erlang。 |
7
0
注定的?因为假定的性能问题? 比较一下价格怎么样:
如果应用程序存在性能问题,则 许多的 比较便宜的只是购买自己更好的硬件,相比之下,你从一个更高的抽象语言切换到一个较低的一个好处(我没有任何反对C++,我一直是一个C++开发者很长一段时间)。 在试图找到与C++垃圾代码中的内存泄漏相比较时,如何比较维护问题? “硬件是便宜的,程序员是昂贵的”: http://www.codinghorror.com/blog/archives/001198.html |
Community wiki · 需要改变的用户界面模式? 1 年前 |
LITzman · 使用状态处理颜色主题更改 1 年前 |
Community wiki · 进程。退出(0):输出消失? 1 年前 |
arsaces · 将文本添加到特定文件的末尾 2 年前 |
YGranja · 库<图形。h> MinGW-W64缺少 2 年前 |
Felipe Palermo · Ctrl键仍被按下,按键事件() 2 年前 |
HCJ · win cmd中的批处理脚本循环 2 年前 |