我是一名编码人员,并且具有本机代码和托管代码的经验。我从Pascal和C开始,然后进入C ++,最后进入C#。
在过去的一年左右的时间里,我几乎一直只使用C#进行编码,并且失去了很多当我使用C ++编码器时自然会遇到的东西。
几周前,当我坐下来写一些本机C ++代码时,我发现自己不知所措,因为我逐渐熟悉了这一切的复杂性,怪癖和特质。我几乎不好意思地说,我完全忘记了将动态分配的数组传递给函数而不传递其大小也意味着接收函数将无法知道数组有多长。
有无数的文章和文档将托管代码与非托管代码进行比较和对比。我们都知道,如果优化得很好,本机代码可以比托管代码运行得更快,更轻。另一方面,托管代码具有垃圾收集器以及特定于运行时的CPU和特定于OS的优化,这可以使本机代码运行自如。
纯粹从技术角度来看,没有明确的赢家。
毫无疑问,托管代码在编码和理解上要简单几个数量级。只需看一下在Win32 C ++与C#中构造一个简单GUI所需的行数差异。
早在我的本机编码时代,我主要编写在超级计算机上运行的数学模拟。他们的CLI很难看,而且大多集中在算法上。如今,我用C#编写并生成了精美的GUI应用程序,但是如果我不得不在本地语言上做出类似的口径,那我就会迷路了。即使使用QT之类的框架,在C ++ / QT中生成某些内容所花费的时间仍比在C#中花费两倍。
每当我看到有人用C / C ++编写了一个大型,功能齐全的GUI应用程序时,我都会不禁感到敬畏和嫉妒。
我很好奇其他经验丰富的程序员如何看待托管和非托管语言。您是否将托管代码视为业余爱好者?您是否认为本地编码员更具有核心性?