本章将用本系列第二章中提到的 类比
思惟来让读者快速了解什么是.NET。
当年在网上看到一个初学者问《Java编程思想》第一章看不懂怎么办。而后我发如今不少经典的技术书中,如《C#入门经典》、《C#高级编程》、《Java核心技术》、《Go程序设计语言》它们都会在前面一两章介绍该语言的特点,然而由于提到的概念太过大并且不少,致使初学者一会儿很难消化,并且有些初学者认为第一章看不懂,后面就跟难了,致使学习的信心被打击了,实际上是能够跳过前面章节的,而学了后面的章节后,再回去看第一二章。.NET也包含很大知识体系,我不会总体去介绍,而是给读者提供一个切入点,让读者找到一个了解什么是.NET的方法。编程
若是要和外星人沟通,又不想学外星人的语言,那么这个时候你须要一个翻译员。网络
在电脑诞生之初,人们和电脑沟通是用机器语言,猜猜下面的机器语言是什么意思~编程语言
0010 0001 0000 0100 0001 0001 0000 0101 0011 0001 0000 0110 0111 0000 0000 0001 0000 0000 0101 0011 1111 1111 1111 1110 0000 0000 0000 0000
上面机器码的意思是:求 83+(-2)
的值。学习
机器语言[machine language]是一种指令集的体系。这种指令集称为机器代码[machine code],是计算机的CPU可直接解读的数据。操作系统
直接用机器语言和机器沟通和其痛苦,人类都但愿能用接近人类的语言和机器沟通,因此设计了接近人类表达方式和思考方式的高级语言,同时发明编译器,用来将高级语言编译成机器语言,因而,咱们获得的 类比
图是这样的:
计算机网络
注意上图的 机器码(Windows)
,这样表达的缘由是由于如今机器(硬件)是由操做系统管理的,所以你能够把操做系统也比喻成精通各类机器语言的翻译员,因此要和机器沟通,那么是和操做系统沟通(貌似编写驱动级别的程序是能够绕过操做系统直接和机器沟通的)。翻译
高级语言
→ 编译器(翻译)
→ (操做系统 → 硬件)
设计
(操做系统 → 硬件)
这样描述的缘由是由于,如今硬件能够说是有操做系统管理和保护的,如程序A有登录功能,把密码保持内存地址A10086处,而若是程序B能够去读取内存地址A10086,那么就...code
因此咱们如今面对的问题是和各类操做系统沟通。为了能和各类各样的操做系统沟通,Sun提出了Java解决方案,请看下面的 类比
图:
blog
这种方案很不错,咱们说一句话英语,全部外星人都听懂了。
高级语言
→ 编译器(翻译)
→ 中间语言
→ 虚拟机(翻译)
→ 多种(操做系统 → 硬件)
同时,90%的人类都是使用Windows和机器沟通,也就是Windows上面运行着用各类编程语言的软件。有些软件功能很好,其余软件想复用,但编程语言不同,如用C语言去调用R语言编程的功能,用 类比
思惟来说,就如同汉语说几句忽然说了几句英语,而后又说了几句日语。Windows表达这个翻译员很差当啊,因而微软提出了.NET解决方案,请看下面的 类比
图:
多种高级语言
→ 编译器(翻译)
→ 中间语言
→ 虚拟机(翻译)
→ (操做系统 → 硬件)
将上面两种解决方案相结合就是 .NET Core
,那么咱们获得的 类比
图以下所示~
多种高级语言
→ 编译器(翻译)
→ 中间语言
→ 虚拟机(翻译)
→ 多种(操做系统 → 硬件)
你能够把.NET看成是翻译员,而.NET Core是更强大的翻译员做为切入点去理解。之后还要介绍这个翻译员须要什么,提供了什么,制定了什么规则,从而慢慢扩散到了解整个.NET知识体系。
正如我在第二章学习思惟种提到计算机科学是属于人造科学,咱们从编程语言的发展来发现计算机科学家们是用什么思惟来解决问题的。
从一开始的:机器语言
→ 机器
发展到:多种高级语言
→ 编译器(翻译)
→ 中间语言
→ 虚拟机(翻译)
→ 多种(操做系统 → 硬件)
之前 | 現在 |
---|---|
机器语言 | 高级语言 |
编译器(翻译) | |
中间语言 | |
虚拟机(翻译) | |
操做系统 | |
机器硬件 | 机器硬件 |
咱们发现计算机科学家们是经过 加层
和 分层
来解决问题的。计算机网络七层模型也是用一样的思惟:
计算机网络七层模型 | 编程语言 |
---|---|
应用层 | 高级语言 |
表示层 | |
会话层 | |
传输层 | |
网络层 | |
数据链路层 | |
物理层 | 机器硬件 |
能够调侃说,计算机科学没有什么是加一层不能解决的,若是有,那么就再加一层。
因此 加层
和 分层
是很重要的计算机科学思惟,请牢记!
若是微软在2002年的时候就将 .NET 按上面图4去实现,那么...算了,没有若是~
本章介绍了:
类比
思惟一般可让你很快速切入了解某个知识点。加层
和 分层
来解决问题。下一章,咱们将介绍怎么如何像上帝通常创造万物。