GO學習筆記——做一場華麗的轉型(1)

說實話我是C++的忠實粉絲,但是好像,每一個語言的忠實用戶都認爲該語言是世界上最好的語言(PHP使用者這個時候就有話說了)。我學了C/C++大概有兩年半,從真正開始認真學也就兩年時間。我認爲C++很好,真的很好,作爲一個較老的語言,他的第三方庫非常的多,功能也越來越強大,熱度始終在編程語言排行版的前三左右。

但是我還是覺得,技多不壓身。作爲主語言,目前還是隻會C/C++,其他的Python,Java都也只是略懂皮毛。最近剛找到一份滿意的工作,所以想在即將去工作之前的這幾個月時間內,抽出時間學一些新的東西(畢竟去公司之後可能就是業務方面的多一些了)。

我注意到了GO語言。

我做過一個新聞網站,涉及到了很多高併發的問題。在做的過程中,就有很多人推薦說,GO做高併發非常好(原生地支持高併發),當時就覺得,以後有機會一定要去接觸一下這門語言。

另外,找到工作以後,HR跟我說他們公司後臺主要用的是C++,PHP和GO,於是我想,這麼巧?所以就下定決心了,開始學GO語言,一則它真的吸引了我好久,二則因爲公司需要,三則它真的是一個非常新,非常好,在中國越來越火的編程語言。另外聽說GO做區塊鏈也非常棒哈哈,好了義不容辭。

說一說GO的優點吧(吹一吹我新學的語言)

  1. GO是強類型語言,這一點倒類似C++,在使用一個變量前必須明確該變量的類型。當然了,GO可以不寫變量類型而讓編譯器來推導出變量類型,這一點C++11中的auto關鍵字也做到了,當然那樣我還要寫一個auto,而GO不用。另外還要補充的一點是,GO也是靜態類型語言,編譯時就知道變量類型,一個變量一旦被聲明成一個類型,就不可以變爲另一個類型(除非類型轉換,但是也只能在兼容類型之間做類型轉換,比如int不可以轉換爲string),相比於動態類型語言(Python),速度要快很多。

  2. GO是編譯型語言。編譯型語言相對於解釋型語言最大的好處就是它的速度非常快。因此上面的說的靜態類型+編譯型語言,就決定了GO語言程序的運行速度,GO具有堪比與C的運行速度(當然C還是最快的),和C++的運行速度也是差不多了,比Python差不多要快30倍

  3. GO具有腳本化的語法,語法簡單。說真的,作爲一個C++忠實用戶,我也覺得C++的語法太複雜了,所以這也是我轉型的一個方面,寫的代碼少並且完成效率差不多畢竟是個好事。後續的學習過程中,一些語法方面的細節,我也會仔細分析和C++的差別

  4. 支持多種編程範式,包括函數式編程以及面向對象編程。不過需要注意的是,GO並沒有像C++和Java一樣有一個class來表示類,它本身其實沒有對象這樣的概念,是用strcut來模擬面向對象的。因爲沒有對象,所以GO語言也沒有繼承多態這些概念(這些東西其實都是由接口來實現的),也沒有泛型編程(學C++的時候繼承多態確實把我學的夠嗆)。那麼GO語言有什麼?GO語言有接口,函數式編程,接口interface在GO語言中是一個很重要的東西,面向接口的編程也是GO的一個主流編程範式

  5. GO語言相比於別的語言最大的好處就是,GO原生的支持併發。像我在寫C++的時候,都是調用一些系統調用來創建線程(其實C++有自己封裝的和線程相關的函數,我沒用而已)。這裏需要注意的是原生的支持和通過第三方庫來支持的區別,GO是在語法上支持,而C++需要調用第三方庫來支持(std::thread,其實也是一個C++的標準庫吧)。這部分概念其實還是要到後面真正學到GO併發了纔會瞭解到,所以這裏先“吹”爲敬。之後會學到goroutine和channel,這是GO併發的關鍵

之後的博客文章,我都會對一些語法以及一些細節的地方,將GO和C++做一些對比,希望通過對比來快速地上手GO語言。

好了先吹這麼多,總之GO吸引到了我,我就開始學了,今天先寫這篇文章,開啓一場華麗的轉型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章