.NET会随时接管C / C ++吗?

时间:2008-12-06 04:49:33

标签: .net c++ c

这是一个主观问题。

在进入.NET空间之前,我在Visual Basic 6.0中工作过。

我发现有一件事情有很多,需要处理Win32 API。作为Visual Basic 6.0开发人员,存在很多限制。 .NET修复了一些旧的问题,但是依赖Win32的需要还没有得到解决。

是否有任何时候不需要依赖Win32? (我想只有当.NET在操作系统级别提供支持时才会这样做。)

据我所知,到目前为止.NET(编写LOB应用程序/网站)和C / C ++的域名是不同的。

.NET或任何其他基础架构真的可以使C / C ++不那么重要吗? 我期待太多了吗?

编辑:它看起来不像,在另一个包装器上构建包装器(并带来一组新的复杂性)?

15 个答案:

答案 0 :(得分:17)

它不会很快消失,但在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 ++就会变得更有吸引力......

答案 1 :(得分:10)

不是很快。如果有的话,他们不会在不久的将来重新编写.NET中的内核和核心API。人们一直期待C离开很长一段时间,我只是没有看到它发生。

答案 2 :(得分:9)

.NET已经在其设计的域中接管了C / C ++。在.NET中编写设备驱动程序或其他系统级别的东西的人并不多。但它擅长商业应用程序,这可能构成了大部分编程工作。

即使是C / C ++也没有消除人们在某些情况下编写程序集的需要,因此.NET不可能消除它。但这并不意味着。

答案 3 :(得分:6)

在某些情况下,C#/ .NET永远无法取代C / C ++:

  1. 目标计算机没有.NET运行时环境,您不能/不想强制安装。 (这也是Java或Parrot / Perl6的问题)。如果目标具有比您的程序更旧的.NET环境版本,这也可能是一个问题。

  2. 代码需要在Windows,Linux或OSX上运行。即使是Mono,C / C ++也比C#更便携。

答案 4 :(得分:5)

首先,MS 在基于托管代码(.NET)(Singularity)的操作系统上工作。现在,这只是一个研究项目,因此不能保证会有任何结果,但它确实显示了MS的想法。

接下来,我们必须考虑,我们是关于Windows世界还是计算机应用程序。 C#并未在Linux / Unix世界中取得重大进展,因此C / C ++将在那里保持强势。

如果我们仅限于Windows,那么我认为,对于新的桌面应用程序,.NET可能已经通过了C / C ++(由于现有的代码库,C ++仍然具有整体优势)。但是,对于Web开发来说,C / C ++从一开始就不是很大,所以.NET很久以前就通过它了。

答案 5 :(得分:5)

这与我的教授在20世纪80年代早期所说的相似 - Pascal应该用于所有事情。我不这么认为。不同的语言有不同的目的。问题是人们往往只看到他们领域的事情。我从事建模和模拟工作,有时接近金属工作。 C ++是我的语言。我希望它不受管理,没有GC。我不在业务/数据库领域工作,因此所有C#/ Java / Beans / J2EE TLA都没有为我带来任何东西。

答案 6 :(得分:4)

正如您所说,C / C ++和C#涵盖了不同的开发领域。 C#正在取代某些C ++应用程序的原因主要是C ++应该从未首先用于它们(以业务数据为中心的应用程序)。所有的Web浏览器都是用C ++编写的,同样适用于办公系统,游戏,图像处理等。

答案 7 :(得分:3)

看到几乎所有高级语言都是用C语言编写的,我不认为这种情况很快就会发生。

答案 8 :(得分:2)

在不久的将来,我认为它可能不会接管c / c ++。

因为还有一些其他方面我们无法忽略C / C ++的贡献。 另外.net也很昂贵,所以我们不能指望它在不久的将来取代C / C ++。

尽管行业人士期望C在很长一段时间内过期,但由于其效率,与硬件交互的能力非常容易,因此不会发生。

答案 9 :(得分:2)

.NET主要在Windows上运行(在Linux上使用Mono,我认为是Mac)。但C / C ++仍然在其他地方使用,如嵌入式设备。许多其他语言的编译器本身都是用C / C ++实现的。

答案 10 :(得分:2)

考虑到较新的语言本身是使用C / C ++编写的,在C / C ++逐步淘汰(如果有的话)之前还需要很长时间。

答案 11 :(得分:2)

C#(或更确切地说,.NET Framework)并不意味着接管C / C ++。它意味着接管的是Java。但Java确实是多平台的。不是“好吧,好吧,在我们的无限怜悯中,我们将允许Mono存在,现在,但不要太过于高兴”像.NET这样的多平台。

答案 12 :(得分:1)

C#有很多好的功能。但是,我所知道的C#和C / C ++之间的最大区别在于有人认为不再需要预处理器。

对于预处理器的简单使用,毫无疑问它们是正确的。

然而,许多技术娴熟/经验丰富的程序员利用代码生成来显着减少编程工作量并提高软件性能。对于某些问题,预处理器是一种高效的代码生成器。离开它意味着程序员必须找到其他不太方便的代码生成方法。

答案 13 :(得分:1)

我认为这也不会发生。这可能发生在Windows平台上(或没有),但在linux / unix平台上,我看不到这种情况。

答案 14 :(得分:1)

如果你的意思是“接管”意味着替换所有任务,不。

如果你的意思是“接管”意味着变得更受欢迎,它可能已经发生了。

对我而言,C / C ++与汇编语言陈旧的方式相同。我已经6年没在电脑上写任何C了。我现在唯一一次写C就是有限的机器,比如iPhone。对我来说,解释的语言似乎已经放弃了编译语言(至少在可用的工作中)。但是C不会像集会不会消失一样消失。只有更少的人写作。

相关问题