这是一个主观问题.
在进入.NET空间之前,我在Visual Basic 6.0中工作过.
有一点我看到有很多东西,需要处理Win32 API.作为Visual Basic 6.0开发人员,存在很多限制..NET修复了一些旧问题,但是依赖Win32的需求还没有得到解决.
是否有任何时候不需要依赖Win32?(我想只有当.NET在操作系统级别提供支持时才会这样做.)
据我所知,.NET(写作领域LOB应用程序/网站)和C/C++不同的是,到目前为止.
.NET或任何其他基础架构真的可以使C/C++不那么重要吗?我期待太多了吗?
编辑:难道不是模样,建筑包装在另一包装(和带来新的一套复杂的沿与它)?
它不会很快消失,但在Windows中,至少,使用C/C++的新项目越来越少.你甚至可以看到微软开始吃自己的狗粮的例子.
一个很好的例子是C#编译器.目前,它是用C/C++编写的.C#团队目前正在使用托管代码重写它.其中一个重要原因与.NET中的CAS策略有关.调用非托管代码需要FullTrust,因此编译代码也需要FullTrust.当他们转移到托管代码时,这种限制就会消失.
随着越来越多的开发人员将.NET作为他们的开发平台,我们看到微软效仿.
另一个很好的例子是Visual Studio 2010.它们使用WPF和MEF重写IDE的大部分内容,以便它可以轻松扩展.
接下来,查看Silverlight运行时.它根本不依赖于(特别是)Win32.它在Mac上运行,就像在Windows上运行一样.随着Silverlight变得更强大,我们可能会发现许多目前依赖Win32的.NET调用不再这样做.
我想我的观点是,我们至少开始在Windows世界中看到一些变化.
当然,只要你需要更加跨平台,C/C++就会变得更有吸引力......
不是很快.如果有的话,他们不会在不久的将来重新编写.NET中的内核和核心API.人们一直期待C离开很长一段时间,我只是没有看到它发生.
.NET已经在其设计的域中接管了C/C++.在.NET中编写设备驱动程序或其他系统级别的东西的人并不多.但它擅长于业务应用程序,这可能构成了大部分编程工作.
即使是C/C++也没有消除人们在某些情况下编写程序集的需要,因此.NET不可能消除它.但它并不意味着.
在某些情况下,C#/ .NET永远无法取代C/C++:
目标计算机没有.NET运行时环境,您不能/不想强制安装.(这也是Java或Parrot/Perl6的问题).如果目标具有比您的程序更旧的.NET环境版本,这也可能是一个问题.
代码需要在Windows,Linux或OSX上运行.即使是Mono,C/C++也比C#更便携.
好吧,首先,MS 正在开发基于托管代码(.NET)(Singularity)的操作系统.现在,这只是一个研究项目,所以不能保证会有任何结果,但它确实显示了MS的想法.
接下来,我们必须考虑,我们是关于Windows世界还是一般的计算机应用程序.C#并未在Linux/Unix世界中取得重大进展,因此C/C++将在那里保持强势.
如果我们仅限于Windows,那么我认为,对于新的桌面应用程序,.NET可能已经通过了C/C++(由于现有的代码库,C++仍然具有整体优势).但是,对于Web开发来说,C/C++从来都不是很大,所以.NET很久以前就通过了它们.
这类似于我的教授在20世纪80年代早期所说的 - 帕斯卡应该用于一切.我不这么认为.不同的语言有不同的目的.问题是人们往往只看到他们领域的事情.我从事建模和模拟工作,有时接近金属工作.C++是我的语言.我希望它不受管理,没有GC.我不在业务/数据库领域工作,因此所有C#/ Java/Beans/J2EE TLA都没有为我带来任何东西.