Go語言發展歷史、核心、特性及學習路線
Go語言發展歷史、核心、特性及學習路線
目錄
- 知名程式語言發展簡史
- Go語言主要發展過程
- Go語言設計初衷
- Go語言的優勢
- Go語言的核心特性
- Go語言能開發什麼?
- 採用Go語言的國內外企業
-
Go語言學生路線
一、Go語言的發展歷史
(一)、知名程式語言或系統的發展簡史
1、B語言之父:Ken Thompson(肯.湯普)。
2、C語言之父:美國著名計算機專家,Dennis Ritchie(丹尼斯.裡奇)1969-1973年發明了C語言和Unix作業系統。
3、C++之父:Bjarne Stroustrup(本賈尼。斯特勞斯特盧普)。1982年Bjarne Stroustrup博士在C語言的基礎上引入並擴充了面向物件的概念,發明了一種新的程式語言,它被命名為C++。
4、Python之父:Guido von Rossum(吉多.範.羅蘇姆)1994年釋出 1.0版本,1995年9月釋出了Python3.5版。
5、Java:JamesGosling(詹姆斯.高斯林)。1991年開發Oak,1994年改名為Java,1995年5月正式釋出。
6、Javascript:Brendan Eich(布蘭登.艾奇)。1995年5月只用了10天時間把Javascript設計出來了。
7、Go語言:Go的三個作者分別是:Robert Griesemer(羅伯特.格利茨默),Rob Pike(羅伯.派克)和 ken Thompson(肯.湯普森)。
.Robert在開發Go之前是Goole V8 、Chubby和HotSpot JVM的主要奉獻者;
.Rob主要是Unix 、UTF-8、 plan9的作者;
.ken主要是B語言、C語言的作者、Unix之父。
(二)、Go語言的發展過程
1、2007年9月,Rob Pike(羅伯.派克)正式命名為Go;
2、2008年5月,Google全力支援該專案;
3、2009年11月,Go將程式碼全部開源;
4、2012年3月28日,Go釋出第一個正式的穩定版本。
二、Go語言的特點及優勢
(一)、Go語言設計初衷(為什麼設計Go語言)
1、設計Go語言是為了解決當時Google開發遇到的問題:
.大量的C++程式碼,同時又引入了Java和Python
.數以萬行的程式碼
.分散式的編譯系統
.數百萬的伺服器
2、Google開發中的痛點 :
.編譯慢
.失控 的依賴
.每個店工程師只是用了一個語言裡面的一部分
.程式難以維護
.更新的花費越來越長
.交叉編譯困難
3、如何解決當前的問題和痛點?
.Go希望成為網際網路時代的C語言。多數系統級語言(包括Java和C#)的根本程式設計哲學來源於C++,將C++的面向物件進一步發揚光大。但是Go語言的設計者卻有不同的看法,他們認為值得學習的是C語言。C語言經久不衰的根源是它足夠簡單。因此,Go語言也是足夠簡單。
.所以,他們當時設計Go語言的目標是為了消除各種緩慢和笨重、改進各種低效和擴充套件性。Go是有那些開發大型系統的人設計的,同時也是為了這些人服務的,它是為了解決工程上的問題,不是為了研究語言設計;它還是為了讓我們的程式設計變得更舒適和方便。
4、Go語言的特色:
沒有繼承多肽的
強一致型別
Interface不需要顯示宣告(DuckTyping)
沒有異常處理
基於首字母的可訪問特性
不用的import或者變數引起編譯錯誤
完整而卓越的標準庫包
(二)、Go語言的優勢
1、學習曲線容易
Go語言語法簡單,包含了類C語法。
2、效率:快速的編譯時間,開發效率和執行效率高
3、出身名門、血統純正
4、自由高效:組合的思想、無侵入式的介面
5、強大的標準庫
6、部署方便:二進位制檔案,Copy部署
7、簡單的併發
8、穩定性強
(三)、Go語言的核心特性和優勢
.Go主要有靜態語言、天生併發、內建GC、安全性高、語法簡單、編譯快速這幾個方面的特性。這些特性決定了Go的三個高富帥特性:執行快、開發快和部署快。
(四)、Go語言能開發什麼?(做什麼?)
1、伺服器程式設計,以前你如果用C或者C++做的那些事情,用Go來做很合適,例如:處理日誌,資料打包、虛擬機器處理、檔案系統等。
2、分散式系統
3、網路程式設計
4、資料庫操作
5、開發雲平臺
(五)、採用GO語言的國內外知名企業
三、Go語言學習路線
一、第一章初識Go語言
1 Go語言特性及發展過程、學習路線
2 安裝Golang及設定環境變數、安裝Goland開發環境
3 helloworld程式及go的程式結構
二、第二章Go基本語法
1變數、變數型別及注意事項
2列印格式化介紹
3常量與列舉
4Iota與常量注意事項
5資料型別轉換
6表示式及運算子
7鍵盤輸入
三、第3章流程控制
1if條件語句
2if巢狀
3switch選擇語句
4跳轉語句及fallthrough、break、continue的用法
5for迴圈
6 for雙層迴圈
7隨機數及隨機數種子
四、第四章Go內容容器陣列及切片
1陣列元素訪問
2二維陣列及多維陣列
3氣泡排序
4切片slice的概念
5slice的操作
五、第五章Go內建容器map字典
1map宣告、建立和遍歷
2map元素刪除、查詢
3map案例
六、第六章函式和指標
1函式定義
2函式呼叫
3不定引數
4函式多返回值
5匿名函式和閉包
6指標
7深拷貝和淺拷貝
七、第七章Go檔案操作
1記憶體儲存
2檔案儲存
八、第八章 錯誤處理
1error介面
2defer語句
3panic和recover
九、第九章Go單元測試
1Go進行單元測試
2Go進行HTTP測試
3第三方Go測試庫
4Gocheck測試包
5Ginkgo測試框架
十、第十章Go面向物件程式設計
1值型別和引用型別
2結構體
3方法
4介面
5函數語言程式設計
十一、第十一章Go安全程式設計(加密處理)
1 雜湊演算法
2資料加密
3數字簽名
4數字正式
5pKI體系
6加密通訊
十二、第十二章Go併發程式設計
1併發法程式設計基礎
2多程序程式設計
3多執行緒程式設計
4Go的併發機制
5協程及goroutine
6Channel
7同步鎖及原子操作
十三、第十三章Go網路程式設計
1Socket程式設計
2HTTP程式設計
3RPC程式設計(Gob及RPC介面)
4JSON處理
5網站開發(net、http包)
十四、第十四章Go資料庫程式設計
1SQL/">MySQL介紹
2MySQL noinstall安裝
3MySQL圖形化方式安裝
4啟動和停止MySQL服務
5MySQL資料型別及客戶端管理工具Navicat
6SQL基礎入門
7SQL中元素符
8SQL常用函式
9DQL語句高階查詢
10事物及回滾
十五、第十五章Go爬蟲實戰開發
四、Go開發文件
https:ofollow,noindex" target="_blank">//www.studygolang.com/pkgdoc