本章將用本系列第二章中提到的 類比
思惟來讓讀者快速瞭解什麼是.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去實現,那麼...算了,沒有若是~
本章介紹了:
類比
思惟一般可讓你很快速切入瞭解某個知識點。加層
和 分層
來解決問題。下一章,咱們將介紹怎麼如何像上帝通常創造萬物。