開發了5年Java,我開始了Go語言學習之旅

開發了5年Java,我開始了Go語言學習之旅

做了近5年的Java開發,最近項目也是不怎麼忙,空閒的時候總會思考一些事情,我個人覺得很有必要學習後臺開發,由於公司是Go語言開發的,瞭解go語言一段時間後,我發現go語言的強大。基於優雅的語法和其強大的併發性,我開啟我的go學習之旅。

Go語言作為專門為併發和大數據設計的語言,在編程界佔據越來越重要的地位!不論是c/c++,php,java,重構首選語言就是Go

就像ccmouse老師,在《2018你不能錯過的Go語言》寫道:Go語言人才,早已是各大公司爭奪的對象,簡單的搜索就能找到諸如滴滴,美團,360的Go語言專屬職位,而Go語言編寫的項目,如Docker,Kubernetes,以太坊等早已“家喻戶曉”。Go語言也在諸如大數據,雲計算,微服務,容器,區塊鏈領域應用廣泛。……

2019年,我們要思考的,已經不是應不應該學習Go語言,也不是思考Go語言能夠做什麼。而是,如何騰出時間和精力,去學習Go語言。

附上一些Go的教程,適合剛入門級別看看。關注頭條號,私信回覆“資料”獲取。

開發了5年Java,我開始了Go語言學習之旅

下面三個是我認為 Go 是重要的編程語言的原因。

安全

個人而言,你和我或許完全有能力在 C 中編寫程序,既不會洩漏內存,也不會不安全地重複使用內存。然而,整體上,即使有超過 40 年)的經驗,用 C 的程序員也無法可靠地這樣做。

儘管靜態代碼分析、valgrind、tsan 以及 “-Werror” 已經存在了幾十年,卻很少有證據表明這些工具被廣泛認可,更不用說廣泛採用。總而言之,事實表明,程序員根本無法安全地管理自己的內存。現在是離開 C 的時候了。

Go 不需要程序員直接管理內存,所有內存分配都由語言運行時自行管理,使用前初始化,必要時檢查邊界。它肯定不是提供這些安全保障的第一個主流語言,Java(1995)可能是該冠軍的競爭者。關鍵是,世界對不安全的編程語言沒有胃口,所以人們默認認為,Go 是內存安全的。

開發人員生產力

從 20 世紀 70 年代末,開發人員的時間變得比硬件所耗費的時間更昂貴了。開發人員的生產力是一個不斷擴展的話題,但它歸結為這一點:你花了多少時間做有用的工作,又有多少時間等待編譯器或者失望地迷失在外部代碼庫中。

有個笑話說 Go 是在等待 C ++ 程序編譯時開發的。快速編譯是 Go 的一個重要功能,也是吸引新開發人員的關鍵工具。雖然編譯速度仍然是一個永久的戰場,但公平地說,在其他語言中需要幾分鐘的編譯,在 Go 中只需要幾秒鐘。

Go 程序員意識到生產力的更根本的問題是代碼是為了讀而寫的,所以將代碼的閱讀行為放在編寫之上。Go 通過工具和自定義來強制所有代碼格式化成特定的樣式。這消除了學習項目特定語言的方言時的困難,並有助於發現錯誤,因為它們看上去就是不正確。

由於專注於分析和機器輔助,Go 開發人員開始採用越來越多的工具來發現常見的編碼錯誤,這種工具從來沒有在 C 語言開發者中產生共鳴 - Go 開發人員希望工具幫助他們保持代碼清潔。

併發性

十多年來,芯片設計師一直在警告免費午餐將會結束。從最低端的手機到最耗電的服務器,硬件的並行性以更多、更慢、堆砌 cpu 內核的形式出現,但只有當你的語言可以利用它們才有意義。因此,併發特性需要內置到我們編寫的要在今天的硬件上運行的軟件中。

通過提供一種基於協程的輕量級併發模型,或者是 Go 中已知的 goroutines,Go 超越了那些暴露操作系統的多進程或多線程並行模型的語言。goroutines 允許程序員避開復雜的回調,而語言運行時確保有足夠的線程來保持你的內核的活躍。


分享到:


相關文章: