今天,老码农QQ群里收到了一条消息:
飞哥,我们被鄙视了。
给了我一张截图:
我只能说:.NET是语言吗?
连平台和语言都分不清的文章,我也是无语了。
这就是现在公众号的素质。而且Title吓死人的那种,阿里哟,架构师哟,还是小秘圈哟!
要搞清楚这个问题,你首先要明白:程序是跑在哪里的?最简单的说,是跑在计算机(硬件)上面的,是不是?计算机硬件,本质上只能处理0101011之类的二进制代码,是不是?带你写的代码,大概是这个样子的:
namespace DataTypeApplication { class Program { static void Main(string[] args) { Console.WriteLine("Size of int: {0}", sizeof(int)); Console.ReadLine(); } } }
计算机怎么认识呢?是不是需要编译?在上古时代,代码可以直接编译成二进制格式的机器码。但是,因为不同的计算机(操作系统)具有不同的机器码识别格式,所以,源代码需要被编译成适应不同操作系统的可执行代码。就像现在你下载APP需要区分iOS还是Android版的一样(不,类似,只是类似)。题主提到的C++,就还是这样的。源代码需要编译成不同的操作系统的可执行文件,然后才能正确运行。
(图也没了,o(╥﹏╥)o)
好了,然后Java横空出世,它:
完成JAVA源代码的编写之后,只要把它编译成JVM可识别的“字节码”就OK了。“字节码”运行在JVM上,由JVM识别并适配不同的操作系统。如图所示:
(图也没了,o(╥﹏╥)o)
既然你学过C++和Java,上面这些,应该是你很熟悉的知识。好了,.NET是什么呢?大致就相当于JVM。其实.NET本身就是为了和Java竞争,而由微软推出的一个平台。但和JVM不同的是(感谢@SherlockGy同学提醒,JVM也可以支持多种语言,此处略有不妥),.NET上可以支持更多的语言,包括:C#、VB.NET、F#……之前,微软出于公司利益考虑,.NET平台(framework)只能运行在Windows上,但后来发现这个策略不行,于是在2014年,微软宣布.NET的开源和跨平台(操作系统)计划。目前进度非常顺利,新的跨平台的.NET平台被称之为.NET core(和之前的.NET Framework相区别)。
所以,你就能明白:
多快好省!前端后端,线上线下,名师精讲
更多了解 加: