00-Go語言程式設計開篇
什麼是Go語言
- Go語言(Golang)是Google公司2009年推出的一門"高階程式設計言語", 目的是為了解決:
- "現有主流程式語言"明顯 落後於硬體發展速度 的問題
- 不能合理利用多核CPU 的優勢提升軟體系統效能的問題
- 軟體複雜度越來越高, 維護成本也越來越高 的問題
- 企業開發中不得不在 快速開發和效能之間艱難抉擇 的問題
科普小知識:
1.靜態語言:
1.1一般都需要通過編譯器(compiler)將原始碼翻譯成機器碼,之後才能執行。程式被編譯之後無論是程式中的資料型別還是程式的結構都不可以被改變
1.2靜態語言的效能和安全性都非常好, 例如C和C++、Go, 但是C和C++的缺點是開發速度慢, 維護成本高
2.動態語言
2.1一般不需要通過編譯器將原始碼翻譯成機器碼,在執行程式的時候才逐行翻譯。程式在執行的過程中可以動態修改程式中的資料型別和程式的結構
2.2動態語言開發速度快,維護成本低,例如Ruby和Python, 但是Ruby和Python的效能和安全性又略低
- Go語言專門針對多核CPU進行了優化, 能夠充分使用硬體多核CPU的優勢 , 使得通過Go語言編寫的 軟體系統效能能夠得到很大提升
- Go語言編寫的程式,既可以媲美C或C++程式碼的執行速度, 也可以媲美Ruby或Python開發的效率
- 所以Go語言很好的解決了"現有主流程式語言"存在的問題, 被譽 "現代化的程式語言"
Go語言優勢
- 簡單易學
- Go語言的作者都有C的基因,Go自然而然也有了C的基因,但是Go的語法比C還簡單, 並且幾乎支援大多數你在其他語言見過的特性:封裝、繼承、多型、反射等
- 豐富的標準庫
- Go目前已經內建了大量的庫,特別是網路庫非常強大
- 前面說了作者是C的作者,所以Go裡面也可以直接包含c程式碼,利用現有的豐富的C庫
- 跨平臺編譯和部署
- Go程式碼可直接編譯成機器碼,不依賴其他庫,部署就是扔一個檔案上去就完事了. 並且Go程式碼還可以做到跨平臺編譯(例如: window系統編譯linux的應用)
- 內建強大的工具
- Go語言裡面內建了很多工具鏈,最好的應該是gofmt工具,自動化格式化程式碼,能夠讓團隊review變得如此的簡單,程式碼格式一模一樣,想不一樣都很困難
- 效能優勢: Go 極其地快。其效能與 C 或 C++相似。在我們的使用中,Go 一般比 Python 要快 30 倍左右
- 語言層面支援併發,這個就是Go最大的特色,天生的支援併發,可以充分的利用多核,很容易的使用併發
- 內建runtime,支援垃圾回收
- ... ...
Go語言發展史
2007年,谷歌工程師Rob Pike, Ken Thompson和Robert Griesemer開始設計一門全新的語言,這是Go語言的最初原型。 2009年11月10日,Go語言以開放原始碼的方式向全球釋出。 2011年3月16日,Go語言的第一個穩定(stable)版本r56釋出。 2012年3月28日,Go語言的第一個正式版本Go1釋出。 2013年4月04日,Go語言的第一個Go 1.1beta1測試版釋出。 2013年4月08日,Go語言的第二個Go 1.1beta2測試版釋出。 2013年5月02日,Go語言Go 1.1RC1版釋出。 2013年5月07日,Go語言Go 1.1RC2版釋出。 2013年5月09日,Go語言Go 1.1RC3版釋出。 2013年5月13日,Go語言Go 1.1正式版釋出。 2013年9月20日,Go語言Go 1.2RC1版釋出。 2013年12月1日,Go語言Go 1.2正式版釋出。 2014年6月18日,Go語言Go 1.3版釋出。 2014年12月10日,Go語言Go 1.4版釋出。 2015年8月19日,Go語言Go 1.5版釋出,本次更新中移除了”最後殘餘的C程式碼”。 2016年2月17日,Go語言Go 1.6版釋出。 2016年8月15日,Go語言Go 1.7版釋出。 2017年2月17日,Go語言Go 1.8版釋出。 2017年8月24日,Go語言Go 1.9版釋出。 2018年2月16日,Go語言Go 1.10版釋出。
Go作者
-
Go語言是UNIX作者、C語言作者、谷歌V8引擎作者攜手打造的, 由谷歌公司2009年推出的一門高階程式設計言語。
Go語言現狀
-
多次獲得TIOBE年度最佳語言
-
-
2018年Go語言一度超過Java, ofollow,noindex">進入程式語言排行榜前三名 .
+
-
從公司角度:
-
從業務維度:
K8S就是Go開發的
-
從薪資角度來看
- 應屆生普遍在
4~8K
, 1年左右普遍在10K左右
, 2年~3年普遍在20K左右
- 應屆生普遍在
Go語言應用場景
- 網路程式設計,這一塊目前應用最廣,包括Web應用、API應用、下載應用、記憶體資料庫等
- 雲平臺開發,目前國外很多雲平臺在採用Go開
- 伺服器程式設計, 以前你如果使用Java或者C++做的那些事情,都可以用Go來做
- 分散式系統,資料庫代理器等
- 它可以做從底層到前端的任何工作
如何學習Go語言
- Go語言被稱之為現代化的C語言, 所以無論是從語法特性, 還是作者本身, Go語言都與C語言有著莫大的關係, 所以學習本套課程之前如果你有C語言的基礎, 那麼將會事半功倍
- 對於初學者而言, 學習程式設計的捷徑只有一條, 那就是 多動手
竹子用了4年的時間, 僅僅長了3cm, 從第五年開始, 以每天30cm的速度瘋狂地生長, 僅僅用了六週的時間就長到了15米。 其實,在前面的四年, 竹子將根在土壤裡延伸了數百平米。 做人做事亦是如此, 不要擔心你此時此刻的付出得不到回報, 因為這些付出都是為了紮根。