参考:
- MSDN-Choose Your Technology(英文原版):https://msdn.microsoft.com/en-us/library/windows/desktop/dn614993.aspx
- 谷歌翻译版本:https://www.pizyds.com/msdn-c-or-vb-net/
- (CnBlogs-凝静志远)高级语言虚拟机的一点理解,对比.NET和Java平台:http://www.cnblogs.com/tsiangleo/p/5021589.html
- (知乎-回答-寂静岭):https://www.zhihu.com/question/20651505/answer/81859166
- (CnBlogs-VisualStudio、NETFramework及C#版本关系http://www.cnblogs.com/dad-bod/p/5498641.html
(注:C#和VB.NET均基于.NET,而C++无需.NET)
以下为个人的一点点理解
先说一下C++,C++出现于1979年,虽然传统,但接近底层。正如原文写到:Best if you need to achieve the highest levels of performance or efficiency(如果您需要达到最高级别的性能或效率)
这就有点像汇编语言或是机器语言了,(相对于.NET的VB和C#),不带手套干活,捏的准,做的细,造出来的东西性能肯定能高,但是为何我们不直接汇编,而是一层一层往上叠呢?
Best if you need to have a higher level of coding and productivity, or to use a less complex language for which it might be easier to hire talent.(如果您需要更高级别的编码和生产力,或者使用更简单的开发语言来发挥效率与能力)
显而易见,在.NET的帮助下,我们的小程序能在更短的时间里变得更强大。而C++则是适合大型程序更自由的奔跑。
不得不说,计算机技术就是在这样上游对下游,从硬件层开始,到软件层,然后又是系统内核、各种底层驱动,最后才到高级语言,现在又多了层虚拟机。
当倾向于C#/VB.NET
此时,我比较倾向于.NET,毕竟是微软的亲儿子。C#与VB.NET的出现,是在2002年。跟着时代走,大致不会错。那好,.NET也是有喜有哀的。
通用语言基础架构定义了构成.NET Framework基础结构的可执行码以及代码的运行时环境的规范,它定义了一个语言无关的跨体系结构的运行环境,这使得开发者可以用规范内定义的各种高级语言来开发软件,并且无需修正即可将软件运行在不同的计算机体系结构上。
高级语言的出现,使得在统一架构的不同计算机间的程序能通用。而高级语言虚拟机就意味着不同架构计算机之间能公用一个程序。
这其实是已经实践了。以和.NET类似的JVM(安卓的应用运行环境)说,同一个apk,可以跑在主流的ARM架构的手机上,也可以跑在X86的安卓平板上,性能又不减。
虽然跑在ARM上的Windows很少,但万一几年后又出现个X186架构呢?
解决一下.NET的缺点
首先,忽略运行的速度问题。毕竟是21世纪了。来关注一下各Windows系统自带的.NET:
- Win Vista 自带 .net 3
- Win 7 自带 .net 3.5
- Win 8 自带 .net 4 / 4.5
- Win10 自带 .net 4 / 4.5
我们再来看看各版本Visual Studio
- VS 2002 对应 .NET 1.0
- VS 2003 对应 .NET 1.1
- VS 2005 对应 .NET 2.0
- VS 2008 对应 .NET 3.5
- VS 2012 对应 .NET 4.5
- VS 2013 对应 .NET 4.6
- VS 2015 对应 .NET 4.6 .NET Core5(Beta版)
不得不注意的是,.Net不支持向下兼容。
想象一下,一个小程序,还要带那么大一个安装包,多累。还好,这里有解决方案:
MONO:http://www.mono-project.com/
CnBlogs-让NET C# 程序独立运行(脱离 .NET Framework运行,绿色运行):http://www.cnblogs.com/tianzhiliang/articles/2694672.html
小结
由古董VB6.0转向C#
2017.4.7更新:现在一想,我们做软件,首要的还是兼容性,不能说为了十几年后软件会好用的然后怎么样。不过,古董VB6.0也该抛了,估计再也没有更新了。还是转向C++,有一个叫MFC的东西..
2017.4.29更新:使用VS2015进行C++开发的6个主要原因
文章评论