Golang介绍
Go語言
Go語言 是Google公司 在2007開發一種靜態強類型、編譯型語言,并在 2009 年正式對外發布。
Go語言以其近C的執行性能和近解析型語言的開發效率,以及近乎于完美的編譯速度,已經風靡全球。很多人將Go語言稱為21世紀的C語言,因為Go不僅擁有C的簡潔和性能,而且針對多處理器系統應用程序的編程進行了優化,很好的提供了21世紀互聯網環境下服務端開發的各種實用特性。
Go語言的誕生
事件起源于2007年9月,當時 C++委員會正在 Google 對 C++ 語言新增加的35個新的特性進行一場分享演講。
Google 的技術大神們也在認真聽講座,其中就有Go語言的三個創作者,分別是: Robert Griesemer(羅伯特.格利茨默),Rob Pike(羅伯.派克),Ken Thompson(肯.湯普森)。
-
Rob Pike(羅伯.派克)
羅布·派克是Unix的先驅,是貝爾實驗室最早和Ken Thompson以及 Dennis M. Ritche(C語言之父) 開發Unix的猛人,UTF-8的設計人。讓人佩服不已的是,羅伯伯還是1980年奧運會射箭的銀牌得主。
-
Ken Thompson(肯.湯普森)
Ken Thompson,C語言前身B語言的作者,與Dennis Ritchie是Unix的原創者。1983年圖靈獎得主以及1998年美國國家技術獎(National Medal of Technology)得主。
-
Robert Griesemer(羅伯特.格利茨默)
參與制作了Java的HotSpot編譯器以及Chrome瀏覽器的javascript的搜索引擎V8。
隨著會議的中場休息,大家開始了對這些 C++ 語言新特性是否帶來更多的價值進行吐槽。Rob Pike他們認為:簡化語言的成就遠大于添加功能。于是,一門新的語言,Go,在這個思路下應運而生。
2007 年 9 月 25 號,Rob Pike在回家的路上得到關于新語言名字的靈感,于是給另外兩人發了郵件:
郵件正文大意為:
在開車回家的路上我得到了些靈感。
1.給這門編程語言取名為“go”,它很簡短,易書寫。工具類可以命名為:goc、 gol、goa。
交互式的調試工具也可以直接命名為“go”。語言文件后綴名為 .go 等等
這就是 Go 語言名字的來源,自此之后 Robert、Rob 和 Ken 三個人開始在 Google 內部進行了研發,一直到了 2009 年,Go 正式開源了,Go 項目團隊將 2009 年 11 月 10 日,即該語言正式對外開源的日字作為其官方生日。源代碼最初托管在 http://code.google.com 上,之后幾年才逐步的遷移到 GitHub 上。
Go語言的版本
Go 1.0 — 2012 年 3 月:Go 的第一個版本,帶著一份兼容性說明文檔來保證與未來發布版本的兼容性,進而不會破壞已有的程序。
Go 1.1 — 2013 年 5 月:這個 Go 版本專注于優化語言(編譯器,gc,map,go 調度器)和提升它的性能。
Go 1.3 — 2014 年 6 月:這個版本對棧管理做了重要的改進。??梢陨暾圼連續的內存片段,提高了分配的效率
Go 1.4 — 2014 年 12 月:此版本帶來了官方對 Android 的支持,讓我們可以只用 Go 代碼就能寫出簡單的 Android 程序。
Go 1.7 — 2016 年 8 月: 這個版本發布了context 包,為用戶提供了處理超時和任務取消的方法。
Go 1.11 — 2018 年 8 月: Go 1.11 帶來了一個重要的新功能:Go modules。
Go語言的優勢
Go語言的應用領域
使用Go的大型互聯網公司
Go語言的強項在于它適合用來開發網絡并發方面的服務,比如消息推送、監控、容器等,所以在高并發的項目上大多數公司會優先選擇 Golang 作為開發語言。另外一個應用就是對一些python,php或者java項目進行重構。
介紹完Go語言,那么接下來我們就可以正式進入Golang的學習了。
一、計算機基礎
計算機(computer)俗稱電腦,是現代一種用于高速計算的電子計算機器,可以進行數值計算,又可以進行邏輯計算,還具有存儲記憶功能。是能夠按照程序運行,自動、高速處理海量數據的現代化智能電子設備。
計算機是20世紀最先進的科學技術發明之一,對人類的生產活動和社會活動產生了極其重要的影響。它的應用領域從最初的軍事科研應用擴展到社會的各個領域,已形成了規模巨大的計算機產業,帶動了全球范圍的技術進步,由此引發了深刻的社會變革。
1.1、計算機硬件組成
- CPU
其中,CPU包括運算器和控制器,相當于計算機的大腦,是計算機的運算核心和控制核心。
(1) 運算器是用來進行數據運算加工的。
(2) 控制器是是計算機的指揮中心,負責決定執行程序的順序,給出執行指令時機器各部件所需要的操作控制命令,用于協調和控制計算機的運行。
- 存儲器
儲存器可分為內儲存器和外儲存器兩部分:內存屬于內儲存器,內存是CPU與硬盤之間的橋梁,只負責在CPU與硬盤之間做數據預存加速的功能。斷電后即會被清除。輸入設備的數據是從設備接口進去到端口緩沖器的,再經主板的輸入輸出總線(I/O總線)直接到CPU的,不經過內存。
外儲存器是指除計算機內存及CPU緩存以外的儲存器,此類儲存器一般斷電后仍然能保存數據。常見的外存儲器有硬盤、軟盤、光盤、U盤等。
- 輸入輸出設備
輸入設備就是鍵盤、鼠標、麥克風、掃描儀等等,向電腦輸入信息。輸入設備則相反,電腦向外部輸出信息,如顯示器、打印、音像、寫入外存等。
1.2、馮-諾伊曼計算機
提到計算機,就不得不提及在計算機的發展史上做出杰出貢獻的著名應用數學家馮諾依曼(Von Neumann,是他帶領專家提出了一個全新的存儲程序的通用電子計算機方案。這個方案規定了新機器由5個部分組成:運算器、邏輯控制裝置、存儲器、輸入和輸出。并描述了這5個部分的職能和相互關系。
早期的ENIAC有一個致命的缺點就是程序與計算兩分離。在埃歷阿克ENIAC尚未投入運行前,馮·諾依曼就已開始著手起草一份新的設計報告,要對這臺電子計算機進行脫胎換骨的改造。他把新機器的方案命名為“離散變量自動電子計算機”,英文縮寫譯音是“埃德瓦克”(EDVAC)。1945年6月,馮·諾依曼與戈德斯坦、勃克斯等人,為埃德瓦克方案聯名發表了一篇長達101頁紙洋洋萬言的報告,即計算機史上著名的“101頁報告”。這份報告奠定了現代電腦體系結構堅實的根基,直到今天,仍然被認為是現代電腦科學發展里程碑式的文獻。報告明確規定出計算機的五大部件**(輸入系統、輸出系統、存儲器、運算器、控制器),并用二進制替代十進制運算**,大大方便了機器的電路設計。埃德瓦克方案的革命意義在于**“存儲程序”**──程序也被當作數據存進了機器內部,以便電腦能自動依次執行指令,再也不必去接通什么線路。
人們后來把根據這一方案思想設計的機器統稱為“諾依曼機”。自馮·諾依曼設計的埃德瓦克始,直到今天我們用“奔騰”芯片制作的多媒體計算機為止,電腦一代又一代的“傳人”,大大小小千千萬萬臺計算機,都沒能夠跳出諾依曼機的掌心。在這個意義上,馮·諾依曼是當之無愧的“計算機之父”。而
總線(Bus)是計算機各種功能部件之間傳送信息的公共通信干線,它是由導線組成的傳輸線束, 按照計算機所傳輸的信息種類,計算機的總線可以劃分為數據總線、地址總線和控制總線,分別用來傳輸數據、數據地址和控制信號??偩€是一種內部結構,它是cpu、內存、輸入、輸出設備傳遞信息的公用通道,主機的各個部件通過總線相連接,外部設備通過相應的接口電路再與總線相連接,從而形成了計算機硬件系統。
二、編程語言介紹
2.1、什么是編程語言
編程語言是用來控制計算機的一系列指令(Instruction),它有固定的格式和詞匯(不同編程語言的格式和詞匯不一樣)。就像我們中國人之間溝通需要漢語,英國人溝通需要英語一樣,人與計算機之間進行溝通需要一門語言作為介質,即編程語言。
編程語言的發展經歷了機器語言(指令系統)=>匯編語言=>高級語言(C、java、Go等)。
010010101001-》ADD
- 計算機在設計中規定了一組指令(二級制代碼),這組指令的集和就是所謂的機器指令系統,用機器指令形式編寫的程序稱為機器語言。
- 但由于機器語言的千上萬條指令難以記憶,并且維護性和移植性都很差,所以在機器語言的基礎上,人們提出了采用字符和十進制數代替二進制代碼,于是產生了將機器語言符號化的匯編語言。
- 雖然匯編語言相較于機器語言簡單了很多,但是匯編語言是機器指令的符號化,與機器指令存在著直接的對應關系,無論是學習還是開發,難度依然很大。所以更加接近人類語言,也更容易理解和修改的高級語言就應運而生了,高級語言的一條語法往往可以代替幾條、幾十條甚至幾百條匯編語言的指令。因此,高級語言易學易用,通用性強,應用廣泛。
2.2、編譯型語言與解釋性語言
計算機是不能理解高級語言的,更不能直接執行高級語言,它只能直接理解機器語言,所以使用任何高級語言編寫的程序若想被計算機運行,都必須將其轉換成計算機語言,也就是機器碼。而這種轉換的方式分為編譯和解釋兩種。由此高級語言也分為編譯型語言和解釋型語言。
- 編譯型語言
使用專門的編譯器,針對特定的平臺,將高級語言源代碼一次性的編譯成可被該平臺硬件執行的機器碼,并包裝成該平臺所能識別的可執行性程序的格式。
編譯型語言寫的程序執行之前,需要一個專門的編譯過程,把源代碼編譯成機器語言的文件,如exe格式的文件,以后要再運行時,直接使用編譯結果即可,如直接運行exe文件。因為只需編譯一次,以后運行時不需要編譯,所以編譯型語言執行效率高。
1、一次性的編譯成平臺相關的機器語言文件,運行時脫離開發環境,運行效率高;
2、與特定平臺相關,一般無法移植到其他平臺;
- 解釋型語言
使用專門的解釋器對源程序逐行解釋成特定平臺的機器碼并立即執行。是代碼在執行時才被解釋器一行行動態翻譯和執行,而不是在執行之前就完成翻譯。
1.解釋型語言每次運行都需要將源代碼解釋稱機器碼并執行,執行效率低;
2.只要平臺提供相應的解釋器,就可以運行源代碼,所以可以方便源程序移植;
總結
- 上一篇: 打蚊子表情包_蚊子表情包 - 蚊子微信表
- 下一篇: 模拟人生2