我爲何選擇Go語言(Golang)

做爲一個以開發爲生的程序員,在我心目中編程語言如同戰士手裏的武器,好與很差主要看使用的人是否趁手、是否適合,沒有絕對的高低之分。前端

從2013年起,學習並使用Golang已經有4年時間了,我想敘述一下我選擇Go語言的一些經歷,但願能給考慮使用Go的開發者們作些參考。程序員

Golang和其餘語言同樣並不是完美,它有不少優勢,也固然有不少缺點

爲了不無謂的語言爭論,提早說明一點:Golang並不完美。編程

我在許多討論場合中都表達過這樣的觀點,選擇適當的編程語言很是重要,甚至會影響一個程序員的職業發展歷程,可是編程語言自己確沒有絕對的高低之分。一名武術大師使用狙擊槍不只不能發揮槍的優點,並且可能會影響本身的招式,最重要的是,武術大師可能根本沒有使用狙擊槍的場景,一把精良的劍可能更適合他。後端

一些經歷

我並不是計算機專業科班出身,我學習的是土木工程專業,在學校曾經簡單的學習過C語言,可是學校的計算機教育並無引發我學習編程的興趣(國內學校的教育方式不扼殺學生的興趣就算是萬幸了)。學習編程的緣由是我當時很想搞清楚怎麼搭建一個漂亮平面設計網站和論壇,有一個朋友推薦我學習了ASP(用VB語言),在我大學那個時候,搭建一個網站對於大多數人來講仍是一個挺神祕的事情。後來又由於懶惰,不想和其餘同窗同樣手繪圖紙,因而專心學習了一段時間Lisp,以便於在AutoCAD(一款工程繪圖軟件)自動繪製圖紙。對於編程,我一貫是實用主義安全

大學畢業後,放棄了土木專業的就業方向,正式以編程做爲本身的職業,學習不一樣的編程語言也成爲了工做必備的要求。服務器

選擇CSharp

一開始,我選擇了C#以便於開發.net框架下的應用和網站,此次選擇很是有意義,在.net框架下不只能夠開發動態網站,還能夠開發各類Windows系統下的視窗程序、控制檯和動態連接庫,微軟提供了很是好用的IDE,對於一個非科班出身的程序員,在.net框架完整的解決方案的幫助下,我儘量快的接觸到了軟件開發領域的各個方面。框架

選擇PHP

隨着Web2.0概念的提出,個人工做幾乎徹底是Web開發。在這個領域最被人們津津樂道的語言就是PHP。原本我並不覺得然,直到我發現不少優秀的項目都是用PHP開發後,它成功的吸引了個人注意;另外一個緣由是微軟的服務器操做系統和IIS在當時的版本下確實有許多問題,我但願能擺脫微軟的控制,將軟件部署在Linux或Unix服務器上,LAMP(Linux+Apache+MySQL+PHP)組合方案就是我所須要的。PHP除了擁有學習快,上手容易這些基本的優點外,PHP開源社區很是活躍,你能夠輕鬆的找到各類開源的PHP項目,幾乎全部Web相關的開源項目中最著名的都是PHP語言開發的,好比 WordPress、Drupal、PrestaShop、Joomla、Opencart等,數不勝數。編程語言

選擇Java

後來,我開始帶領團隊,成爲了公司開發團隊的小頭目,我不能只專心於本身的開發工做,須要考慮整個團隊的工做須要。PHP開發公司經營的網站很是有效,可是團隊裏有一些項目的需求方會要求使用他們指定的開發語言,好比Java。在當時,Java被認爲是最穩定、最安全、最標準的解決方案,許多開發領域的大神們也很是推崇Java,J2EE幾乎是政府、金融等領域大型項目的標準解決方案。出於市場須要,我不得不讓本身和團隊學習和掌握Java以便於可以有更多的項目機會。工具

選擇Python

Java自己很優秀,再加上活躍的社區、完善的第三方框架和庫,可是總讓我以爲太麻煩(或者是我愈來愈懶),團隊經常會有一些簡單的工做任務,因而我選擇了Python來作這些簡單的工做。Python的簡單出乎預料,剛開始學習的一段時間,我很是迷戀Python,它讓編程變得如此簡單,而且它歷史悠久,擁有很是豐富的開源資源,Web、桌面、服務器領域的開發都有它的身影。性能

Python是我很是喜歡的語言,可是它的性能問題是個人心結,儘管如《黑客與畫家》做者所說,程序的運行性能每每不是編程語言致使,並且將來計算機硬件的發展速度會讓編程語言的性能差別愈來愈微不足道,但若是能有一門語言可以像Python那麼簡單又同時具有靜態語言的性能豈不更好。

很幸運,我在那段時間,遇到了Golang

選擇Go

我很是看重一門語言的入門門檻。我所在的團隊並不大,咱們須要精打細算每個時間成本的投入,學習和進步是必須的,可是也須要切實的考量成本問題。

Golang入門很是快,當時我獨自學習大概花了一週時間(我還要保持其餘工做正常完成),而後我收集整理學習資料,再組織團隊的其餘成員學習,整個開發團隊學習Golang很是的快,不管他們之前擅長Java、C++或是其餘語言,都能很快的上手。

我有一個好朋友,曾經共事過一段時間,後來這位朋友專心於前端開發領域。有一次咱們討論團隊配合的問題,討論到先後端API開發的一些事情,當時我提到了Golang,我朋友看了一些簡單的介紹和範例後問了我一個問題 「做爲腳本語言,Golang與Python、NodeJS比起來有什麼優點?」。聽到這個問題,我很是高興,緣由是個人朋友把Golang看成了腳本語言(個人這位朋友也有多年的開發經驗,並且在前端領域也是至關厲害的大神了),這至少說明做爲靜態語言的Golang給人的初步影響是簡單清晰的,如同腳本語言(動態語言)同樣。

Golang的性能很好,根據官方的描述以及其餘人的測試結果來看,它的運行性能僅次於C/C++。固然,會有不少人認爲這並不絕對有用,性能問題仍是得根據具體的代碼環境而言,純粹的循環IO沒有意義。不過一個語法上像腳本語言同樣簡單的高性能靜態語言,對程序猿來講仍是頗有吸引力的。

最後

  • 隨着團隊和個人成長,咱們的項目須要可以運行在不一樣操做系統的服務器上,甚至有一些須要運行在客戶機上,而不須要讓用戶安裝額外的虛擬機或解釋器;
  • 如今的需求提供方也更加理性、專業,再也不把指定開發語言放在需求清單中;
  • 咱們的團隊依然不大(就算大,也沒有必要浪費),因此咱們須要一種編程語言能夠同時勝任大型項目開發、平常維護工具開發、Web服務端API開發;
  • 咱們須要一種可靠的編程語言,開源、社區發展迅速、有像Google這樣的科技巨頭的支持

因此,我選擇Golang

歡迎你們簡書或個人我的博客與我交流

做者:ZetaChow曉代碼 連接:https://www.jianshu.com/p/00d22807610d 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
相關文章
相關標籤/搜索