回覆列表
  • 1 # EmacserVimer

    如何優雅暫時沒想到,反而想到這事並不能輕鬆實現。因為Java程式設計師學習第二語言的願望並不是很強烈。當然Go語言的優勢會打動一部分程式設計師的。

    “執拗的爪哇猿”

    去年Java整合開發環境IntelliJ IDEA的開發公司JetBrains對1500名以上Java程式設計師做過一次“未來一年第二語言學習規劃”的調查,結果令人咋舌。調查結果顯示,Java程式設計師在工作中最常用的非Java語言是JS(即JavaScript) ,其次是關係型資料庫的SQL語言(mysql、oracle和sql server等),然後為前端語言html。有一半調查者表示沒有第二語言的學習計劃,剩下部分程式設計師選擇前三是Kotlin、Python和GO語言。Java程式設計師是學不動,還是Java生態樂不思蜀了呢?

    Java程式設計師選擇Kotlin語言還說得過去,畢竟Google和Oracle已經撕破了臉,都不見為淨。Google推薦使用Kotlin來做安卓應用開發,之前使用Java開發安卓應用的程式設計師當然要兩手準備。再者Java準備商用收費,雖然個人開發和OpenJDK使用免費,但一些程式設計師也要做到萬無一失。

    GO語言的優雅

    Python在機器學習、資料分析和資料視覺化等方面已經具備得天獨厚的優勢,Java開發人員選擇它作為第二學習語言也是情理之中。那為什麼還要選擇GO語言呢?

    Python優勢在於友好且易於學習,但是Python和Ruby 一樣屬於動態型別語言範疇,不像編譯型語言那樣先將程式編譯再執行,所以在日常開發中沒有Java執行高效。而且Python需要花費大量精力防止常見語法或解析錯誤,並不能提前發現。

    而GO語言屬於靜態強型別的編譯語言,程式碼清潔嚴格,當然能做到“優雅”了。雖然在前期學習增加了困難度,但是GO語言的社群,貢獻率和維護都很活躍,不是什麼難事。

    GO語言在雲應用和基礎架構的語言都有無可比擬優勢。現在各種雲層出不窮,學習正當時而且。GO語言能以更“輕”方式實現java常用的開發任務,這些優勢足夠了。

  • 2 # Go語言中文網

    向Java程式設計師介紹Go,還需要優雅的介紹,我覺得主要從以下角度考慮。

    1. Java 有哪些優點,Go 是否擁有;

    2. Java 有哪些不足,Go 有沒有解決;

    3. Go 特別棒的特性;

    Java 的優點,Go 是否擁有

    Java 經過很多年的發展,形成了很好的生態。一門語言的生態是至關重要的,就好比一家公司的壁壘。Java 一直以來,有 谷歌、IBM、Oracle 等超級大廠的支援,有開源界牛逼的 Apache 組織支援,產生了很多頂級的軟體,比如大名鼎鼎的 Hadoop、ElasticSearch 等等,Java 社群的原則也比較統一,基本 Spring 一統天下,沒那麼多糾結,很成熟!這些都是很強的壁壘!

    相較而言,Go 語言還比較年輕。但是,自從 Docker、k8s 的興起,為 Go 語言的生態搭建了自己的壁壘,同時帶來了一大批學習者,很有明星專案效應!

    因此,在大型專案中,一般會多語言、多生態並存!

    Java 有哪些不足,Go 有沒有解決

    1. Java 目前大家抱怨比較多的是寫法囉嗦,雖然新版本在不斷改進,但畢竟有歷史包袱。

    2. Java 學習門檻較高。拿 Java Web 開發來說,首先你得學完 Java SE,然後是 Java EE,學習 Tomcat 這類容器,接著你還得掌握 SSH 框架,這些經過了很多年的發展,生態龐大,學習成本較高!

    3. Java 程式記憶體佔用較多,經常莫名卡死。目前公司使用了 confluence 一套系統,隔斷時間就有人反饋打不開了,和美團的人聊過,他們也是遇到同樣的問題,得定期重啟。

    Go 從誕生之日起,就崇尚簡潔,崇尚工程實踐,沒有歷史包袱,可以借鑑先輩們的優秀設計經驗。比如 對 C 語言揚棄,保留指標,但廢棄指標運算;避免隱式型別轉換帶來莫名問題,必須顯示轉換。雖然是靜態語言,但從 Python 這樣的動態語言借鑑了很多優點,語言層面支援 slice 和 map ,使得開發效率有很大提升;同時支援面向過程、面向物件和函數語言程式設計 等等。

    整體上,Go 語言簡潔,易於學習,每個人寫出的程式碼風格一致。在記憶體佔用方面,因為沒有重的 VM,還是比較少的。

    在現在重前端的大背景下,服務端負責 API 的情況下,Go 會是很好的選擇。

    Go 特別棒的特性

    1. Go 的招牌是併發。因為原生支援協程(goroutine),使得寫併發程式非常方便。goroutine + channel 一對招牌搭檔!

    2. 極快的編譯速度。有一個段子說,Go 語言是在 C++ 專案在編譯的時候開發出來的!

    3. 強大的工具鏈。

    4. 標準庫提供 net 和 http 包,可以很方便的實現一個 HTTP 服務。

    5. 類鴨子型別的介面,interface 的設計。

    6. 標準庫支援日誌和單元測試。

    7. 和Java 一樣,自帶 GC。

    總結

    無意語言之爭,只是希望大家對語言有更全面的瞭解,根據情況選擇適合的,沒有最好,只有最適合!

    當然,Go 也在不斷完善中,比如沒有泛型,近期才對包依賴有了較好的官方支援,被人議論最多的錯誤處理等,如果 GC 一樣,我相信 Go 會越來越好。

  • 中秋節和大豐收的關聯?
  • 形容看書的句子?