我听说过现代C ++的流行,也有一些关于从C#或其他类似C的语言迁移回C ++的话题。
我了解C ++ 11的功能,但是我想听听您的经验,尤其是从C#迁移到C ++的开发人员的经验。
更重要的是,微软是否要求开发人员使用C ++?如果是,为什么?
我听说过现代C ++的流行,也有一些关于从C#或其他类似C的语言迁移回C ++的话题。
我了解C ++ 11的功能,但是我想听听您的经验,尤其是从C#迁移到C ++的开发人员的经验。
更重要的是,微软是否要求开发人员使用C ++?如果是,为什么?
Answers:
是的,您的怀疑是正确的。微软正在推动C ++重新流行起来。
我现在找不到它,但是不久前,我看到一个微软大人物的演讲,整个内容面向开发人员,即将推出Windows 8,尤其是WinRT(以及.NET框架的替代品)。作为Win32 API)。
他有一个时间表,他解释了各种压力如何影响某些时间流行的技术。因此,起初人们想要速度,所以他们都使用C / C ++(两种独立的语言)进行编码。随着硬件变得越来越快,人们的注意力从执行速度转移到了开发速度上,因此高级语言变得越来越流行。
但是,现在的重点越来越转向移动和基于ARM的计算机(Windows 8是第一个针对ARM编译的Windows版本),许多人认为它们将变得越来越流行,并且其中一些将完全取代台式机。因此(至少在Microsoft的眼中)重点重新放在C ++上,因为现在我们在乎电池寿命。更高级别的代码=更多指令=需要更多果汁。
为了支持向C ++的过渡,他们引入了一个全新的Windows 8编程API,称为WinRT(上次我检查过,总之就是这个名字)。该API在其提供的功能范围内遵循.NET Framework的主题,但对于希望编写HTML 5 / Javascript应用程序的人来说,任何使用C ++(通过COM接口),C#或Javascript编码的人都可以使用。他们还将XAML(最新的UI框架WPF中使用的技术)引入C ++。
因此,对我来说,这表明微软肯定比过去更加关注C ++。
由于我刚刚为此获得了一个“不错的答案”徽章,我想也许我应该回来,a)澄清一些事情,b)使事实检查警察感到高兴,因为众所周知,在技术论坛上任何不准确的事情都可能导致战争持续多年。
WinRT不能替代.NET框架,但它是MS Windows开发人员现在拥有的另一种替代方案,MS一直在大力推动人们朝这个方向发展。尽管普通的桌面应用程序也应该能够利用WinRT,但它似乎(如果不是100%准确,请大放异彩)主要是针对Modern UI应用程序。话虽如此,MS仍在强烈要求人们改用a)现代UI应用程序,b)开始使用WinRT,以便平衡转移的人们使用.NET Framework的比例很可能下降。
C ++绝不会替代高级语言,例如C#或python。就像那些语言永远不会取代C ++。这可能是OP问题中最具争议的部分。但这全都与平衡有关,事实是:
因此可以得出结论:是的,MS正在推动C ++回归,因此很有可能会增加其流行度。不,C ++永远不会取代C#。
我不知道为什么,但是当现实充满了灰色阴影时,技术界往往会以非常绝对的黑白方式看待事物。这是对此帖子中添加的几个新评论的回应:
.NET框架不会很快(或永远不会消失)。自90年代以来,窗户所使用的几乎所有技术都以某种形式或方式存在。因此,对于那些依附于.NET框架的人:a)不必担心它会消失,并且b)不再争论它的好处,好像您的生活依赖它一样,您的API是安全的。
WinRT确实重新实现了Win32和.NET Framework API过去提供的许多功能。想要使用该功能的人可以选择使用WinRT,.NET框架,还是继续使用Win32 API(这两种选择都没有死)。如果WinRT现在不支持轻松创建Web应用程序,则很有可能会在将来支持它们。
微软宣布的立场是,WinRT是一个大型框架,这使微软有机会从头开始,并利用Win32 API和.NET框架本身的经验教训构建了API。我确实尝试寻找该视频,但仍然找不到,但是发言人提到的一件事是.NET框架的某些区域本可以定义为更好/更简单/更干净,并且WinRT公开了相同的功能在新的清洁器界面中。
Full
.NET配置文件和“ WinRT” .NET配置文件之间只有微小的区别,主要区别是删除了10到15年前实施不佳的大量内容,并替换为设计更好的代码。直到他们摆脱Win32库为止,.NET一直存在。您的评论表明,关于.NET和C#语言本身,它完全不了解。
不,Windows 8就是使用您需要(或知道)完成工作的任何语言。同样支持JavaScript,.Net语言(C#)和C / C ++。
什么都不会被取代,最终还是要由开发人员来决定。但是,人们一直在追求更好的电池寿命,这使WinRT变得更容易。
C ++获得更多支持的游戏是个例外,尤其是在Windows Phone 8上,而托管语言没有本机支持(又名xna)。
我知道C ++ 11的功能,但我想听听您的经验
人们认为通用编程比C#更喜欢C ++(或几乎其他任何1990年以后的非PHP替代语言),这是可笑的。C ++ 11增加了一些不错的缺失点,但它仍在为狗钉钉子。
C ++具有一些优势,在某些编译器支持有限的平台上,它仍然是最佳选择。但是,没有,现代C ++除了可能陈旧,损坏的C ++之外,几乎无法替代任何东西。
DXM写道:
因此(至少在Microsoft的眼中)重点重新放在C ++上,因为现在我们在乎电池寿命。更高级别的代码=更多指令=需要更多果汁。
据此,选择Java作为Google Android的主要语言/框架是一个错误。不是。高级语言通常意味着可以更快地完成工作,我认为这对Microsoft和Google来说是最重要的事情。为该平台创建的应用程序越多越好,操作系统生产商的利润就越高。
另一方面,仍然有许多适用于Windows的软件仍然是用C ++编写的,因此促使那些开发人员切换到C#/ JavaScript /其他任何东西都将是疯狂的。Microsoft致力于尽可能多地向开发人员提供Win8应用程序开发的可能性,这就是我认为他们决定在Win8开发堆栈中支持C ++和JavaScript的原因。
C ++仍然具有Header文件,灵活的预处理器(#define)等……某些人认为这些功能“邪恶”或“难以管理”。
另一方面,C#使用元数据,无需编写和维护头文件。
关于Microsoft向C ++添加更多功能:这并不奇怪。
每个C ++编译器都添加了更多功能,包括C ++ 11功能。gcc也是。
可能只是我一个人,但是我看到的C语言用法要比C ++多得多。
C ++吞噬了普通的C语言,这一事实使得很难推断出谁在使用什么。
但是C开源项目比C ++多得多。
我的看法是,如果您需要接近于金属速度,请使用C。如果需要兼具合理性能的灵活性和可管理性,请使用C#或Java。如果您希望快速完成干净的设计,请使用Python,Scala,Groovy或多种功能齐全的语言中的任何一种。
C ++不能替代C#。让我们看看在哪里使用c ++语言。在需要高性能,编写中间件库,低级别访问以及为资源受限的设备编写代码时使用它。尽管您可以对其中一些使用c#,但c ++更适合于这些。微软对c ++的推动与它对移动领域的大力推动高度相关。没有人会要求您用C ++编写下一个Web应用程序。但是对于Qt,生产率论点不能反对c ++。但是我认为很多人都不熟悉Qt。
不,C ++不能替代C#,因为所有非Direct3D Windows Phone 8应用程序都必须使用C#开发。您不能仅使用C ++或HTML5 / Javascript将应用程序开发和发布到wp8应用程序商店。只要Microsoft不取消此限制,C ++就不会替换任何东西。结果,我相信很少有人会开发WP8。可怜的诺基亚,又失去了一次时间。
这是微软开发中心的摘录:
Windows Phone 8不支持Windows Store应用程序支持的带有C ++代码隐藏应用程序模型的XAML UI。
这是否意味着我不能将C ++与XAML一起使用来在Windows PHone 8上开发应用程序,我是否只能使用C#+ XAML?
那是对的。XAML只能与C#一起使用。C ++可以用于C#项目使用的WinRT组件。
甚至Microsoft MVP都声称该谣言是Microsoft自己故意制造的错误信息:
我喜欢Microsoft在WinRT和Windows Phone 8上所做的事情,但是我希望他们不会卖得过多,因为一旦他们了解了事情的真相,这只会使用户感到沮丧。
这种故意的错误营销浪费了人们的时间:
在我使用Metro应用程序走完所有本机代码路线之前,很高兴知道这个MONTHS AGO。