1. 程式人生 > >Go語言發展歷史、核心、特性及學習路線

Go語言發展歷史、核心、特性及學習路線

Go語言發展歷史、核心、特性及學習路線
目錄

  1. 知名程式語言發展簡史
  2. Go語言主要發展過程
  3. Go語言設計初衷
  4. Go語言的優勢
  5. Go語言的核心特性
  6. Go語言能開發什麼?
  7. 採用Go語言的國內外企業
  8. 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 常量與列舉
4 Iota與常量注意事項
5 資料型別轉換
6 表示式及運算子
7 鍵盤輸入
三、 第3章 流程控制
1 if條件語句
2 if巢狀
3 switch選擇語句
4 跳轉語句及fallthrough、break、continue的用法
5 for迴圈
6 for雙層迴圈
7 隨機數及隨機數種子
四、第四章 Go內容容器 陣列及切片
1 陣列元素訪問
2 二維陣列及多維陣列
3 氣泡排序
4 切片slice的概念
5 slice的操作
五、第五章 Go內建容器 map字典
1 map宣告、建立和遍歷
2 map元素刪除、查詢
3 map案例
六、第六章 函式和指標
1 函式定義
2 函式呼叫
3 不定引數
4 函式多返回值
5 匿名函式和閉包
6 指標
7 深拷貝和淺拷貝
七、第七章 Go檔案操作
1 記憶體儲存
2 檔案儲存
八、第八章 錯誤處理
1 error介面
2 defer語句
3 panic和recover
九、第九章 Go單元測試
1 Go進行單元測試
2 Go進行HTTP測試
3 第三方Go測試庫
4 Gocheck測試包
5 Ginkgo測試框架
十、第十章 Go面向物件程式設計
1 值型別和引用型別
2 結構體
3 方法
4 介面
5 函數語言程式設計
十一、第十一章 Go安全程式設計(加密處理)
1 雜湊演算法
2 資料加密
3 數字簽名
4 數字正式
5 pKI體系
6 加密通訊
十二、第十二章 Go併發程式設計
1 併發法程式設計基礎
2 多程序程式設計
3 多執行緒程式設計
4 Go的併發機制
5 協程及goroutine
6 Channel
7 同步鎖及原子操作
十三、第十三章 Go網路程式設計
1 Socket程式設計
2 HTTP程式設計
3 RPC程式設計(Gob及RPC介面)
4 JSON處理
5 網站開發(net、http包)
十四、第十四章 Go資料庫程式設計
1 MySQL介紹
2 MySQL noinstall安裝
3 MySQL圖形化方式安裝
4 啟動和停止MySQL服務
5 MySQL資料型別及客戶端管理工具Navicat
6 SQL基礎入門
7 SQL中元素符
8 SQL常用函式
9 DQL語句高階查詢
10 事物及回滾
十五、第十五章 Go爬蟲實戰開發
四、 Go開發文件
https:

//www.studygolang.com/pkgdoc