在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Go語言其實有很多優良特性,很多時候都可以代替Python

DPVg_AI_era ? 來源:lq ? 2019-02-13 10:01 ? 次閱讀

出身名門的Go語言在誕生之初就吸引了大批開發者的關注。比起大家熟悉的Python,Go語言其實有很多優良特性,很多時候都可以代替Python。Go和Python你更喜歡誰?

Go 語言誕生于谷歌,由計算機領域的三位宗師級大牛 Rob Pike、Ken Thompson 和 Robert Griesemer 寫成。由于出身名門,Go 在誕生之初就吸引了大批開發者的關注。誕生十年以來,已經涌出了很多基于 Go 的應用。就在不多久之前,知乎也舍棄了 Python,轉用Go 重構推薦系統。谷歌前員工 Jake Wilson 認為,比起大家熟悉的 Python,Go 語言其實有很多優良特性,很多時候都可以代替 Python,他已經在很多任務中使用 Go 語言替代了 Python。那么 Go 語言到底有著什么樣的獨特魅力?它有哪些勝于 Python 的地方呢?讓我們一起來了解一下吧!

2019 年程序員最想學習的編程語言

出身名門的 Go 語言

對于一門只有十年歷史的新語言,Go 的發展勢頭相當迅猛,容器界的扛把子 Docker 就是用 Go 寫的,國內也有不少團隊廣泛使用 Go。近日,HackerRank 在社區發起了程序員技能調查,來自 100 多個國家、超過 70000 名開發者參與其中。調查結果顯示,2019 年,程序員最想學習的編程語言 Top 3 分別是 Go、Kotlin 和 Python,其中 Go 以 37.2% 的比例排在首位。

但 Go 要想撼動編程界的常青樹 Java 二十多年的地位無疑難度頗大。據 HackerRank 數據顯示,2018 年,Java 在開發者最受歡迎的編程語言排行榜中仍然排名第 2,Python 排名第 4,Go 排名第 13,距離第一名 JavaScript 還有不小的差距。

但對本文作者 Jack Wilson 來說,Go 語言雖然“年紀尚小”,但已經擁有很多非常優秀的特性。

Go 語言到底好在哪?

在很多任務上,我已經用 Go 語言代替了 Python,舉幾個例子:

處理儲存在 S3 上的云端日志

在 S3 上的 bucket 和 / 或 region 之間移動 TB 級別大小的文件

匹配本地的數據庫記錄和 S3 上的文件,以保證文件處于同步狀態

這些任務大多是一次性的,所以使用腳本語言操作就會比較合適。這些任務需要快速地編程,而代碼用過一次一般就舍棄了。一般來說,這種任務的需求都比較新穎、比較專,其代碼很少需要復用。下面就來介紹一下,針對這種任務為什么可以用 Go 語言來替代 Python

擁有編譯器很方便

我經常在寫 Python 時犯很低級的錯誤。我會給變量或函數命錯名,或向它們傳遞錯誤的參數。這樣的錯誤用調試工具可以找出一部分,但這種工具一般需要專門設置。我從來沒很方便地配置過 pylint,而且我也不喜歡用那些很重的、配置起來更麻煩的 IDE。最慘的情況是,你可能會不小心打錯變量名,而這種錯誤又不太容易發現。你的腳本可能會跑好幾個小時才遇上這個錯誤,然后一切都崩潰了,你又得從頭開始跑這個腳本。這種錯誤大部分都可以靠單元測試檢出,但單元測試很少能覆蓋 100% 的代碼,而且我并不想浪費時間去給一個只用一次的腳本寫單元測試。而帶編譯器的語言就可以解決以上所有問題。編譯器可以檢測出你犯的所有低級錯誤。出于這點原因,我在寫長達幾百行的代碼時,更傾向于使用 Go 這類語言。

開發速度

然而,需要編譯的語言的一個缺點是,一般你的開發速度會下降。這點在 C/C++ 和 Java 等語言上體現得尤其明顯。而 Go 是一個非常簡單的語言,我發現它的開發速度并沒有被拖慢多少。不要誤會,我的意思并不是說它比 Python 還快,而是想說,用 Go 語言沒有比 Python 慢很多,一般達到使用 Python 開發速度的 85% 還是沒問題的。相對于擁有編譯器能避免的那些低級錯誤來說,我認為犧牲 15% 的開發速度還是很值的。

更好的并行性

你可能已經知道,Go 語言就是為并行而生的。在我的團隊里經常會需要并行程序,因為我們要在 S3 上操作我們數據庫中大量的數據。如果該任務是 IO 密集型的(實際上很多任務都是),我們就可以很容易地部署 Python 線程。但如果任務是 CPU 密集型的,用 Python 就比較不方便了,因為有全局解釋器鎖的存在。我非常享受在 Go 語言中簡單代碼不用修改就能直接多線程運行的爽快感。不知你在 Python 中有沒有遇到過這種問題:直接復制粘貼的多線程代碼卻完全不工作。在 Go 語言中就不會有此問題。

部署簡單

我比較喜歡把所有依賴放在單個二進制文件里。我經常在 EC2 服務器上運行自己的腳本,好讓環境更加接近我們在 S3 上的服務器。如果用 Python 的話,我需要保證所有需要的包都在服務器上裝好,而且我的同事不能在服務器上裝任何可能產生沖突的包。虛擬環境可以解決大部分問題,但我還是覺得用 Go 語言更方便。我一般是在 Mac 和 Linux 上交叉編譯我的代碼,將其拷貝到遠程服務器上,然后就可以任其運行了。我的代碼所需要的所有依賴都在一個二進制文件里。

風格一致

一開始,Go 語言的格式化工具 gofmt 實在是讓我抓狂,尤其是它在代碼縮進時要求使用 tab 鍵而不是空格鍵。我覺得這簡直是瘋了。但是我用了一段時間后,就開始“真香”了。寫代碼時,我在格式上可以天馬行空,格式化工具會幫我完成一切。我的所有代碼風格都是一致的,即使我是在寫不同的項目。這是因為格式化是標準 Go 工具的一個特性。但我如果想在 Python 中實現這一點,就要費些勁兒了。我需要正確地配置 pylint 工具,并要保證在每一個項目中都使用它。

更便捷的工具

Gofmt 只是 Go 語言眾多工具中的一個小例子。所有我喜歡用的編輯器——VSCode,vim 和 Sublime Text 中,都有 Go 語言相應的擴展,讓我能夠方便地享受到 Go 工具的優點。這樣,我就能獲得寫 Java 時的那種智能體驗,卻不需要真正使用一個 IDE。我在用 Python 時從未獲得過這種體驗。

Go 語言當然也有缺點

我每次看到批評 Go 語言的文章時,里面講的幾乎都是 Go 語言對關鍵特性的缺失,比如泛型。我倒是認為沒有泛型沒什么影響——你會發現,使用map和切片(Slice)就能實現多得驚人的操作。但是我在使用 Go 語言的過程中遇到了很多其他問題。

缺乏靈活性

首先,Go 語言可能是我用過的語言里最“固執”的語言了。比如,它除了會強迫你使用 tab 而不是空格鍵縮進(假設你用了 gofmt 工具),會強迫你使用特定的文件組織結構,還會強迫你在 GOPATH 環境變量中編程,如此等等。這種語言有太多難以改變的特性了。Go 語言簡單易學的原因之一恐怕就是你不能改變這些特性。如果你不愿意將所有首字母大寫的變量名 export 一遍,那真是抱歉了。幸運的是,Go 的這些特性倒是沒有觸犯我的原則底線,但是如果有人認為里面的某些要求根本無法理喻,我也能夠理解。相比之下 Python 就靈活多了。

庫支持有點差勁

在這方面把 Go 語言和 Python 做比較有些不公平。Go 的出現比 Python 晚很多,但當我發現有些功能 Go 居然不支持的時候,還是覺得很困惑。我甚至發現 StackOverflow 上很多人 po 出了本應該作為內置功能的代碼段,而且大家都需要該功能,紛紛將代碼復制粘貼到自己的項目下。這類功能不應該嵌入到語言內部嗎?說到這里,我想到了近幾年的兩個例子:

給切片排序(幸運的是在 Go 1.8 版本中這點方便多了)

Math.round 只支持整數,不能進行浮點數的取整(比如你想找一個最接近 0.5 的整數,Go 語言就無法完成)。甚至在 Go 1.10 版本之前,根本沒有 math.round 函數

當然,這些問題的原因有一部分是 Go 語言沒有泛型,另一部分是因為 Go 的開發者們只給 Go 的標準庫中添加最最必要的功能。

這兩點我都理解,但是在遇到很小的問題卻需要自己寫代碼解決時還是感到煩惱。

希望隨著 Go 語言的發展,它的問題會變得越來越少。

Go 和 Python 你更喜歡誰?歡迎留言交流!

作者介紹:

Jake Wilson,現任 SketchUp web team 技術經理,研究范圍包括 HTML5、WebGL、Google Closure、Typescript、Java Redis 后端開發等,從事軟件開發、硬件、產品、創業和激勵方面的工作。他曾就職于 Boxuno.com、Monolla.com、谷歌等公司。在谷歌,他曾參與 Goole+、chrome、Webmaster Tools 等項目。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程語言
    +關注

    關注

    10

    文章

    1949

    瀏覽量

    34850
  • python
    +關注

    關注

    56

    文章

    4801

    瀏覽量

    84865
  • go語言
    +關注

    關注

    1

    文章

    158

    瀏覽量

    9059

原文標題:再見,Python!你好,Go語言

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    很多大企業為何都用模塊電源代替開關電源

    很多大企業為何都用模塊電源代替開關電源 引言 DC/DC電源模塊是用開關電源的思想實現的,他們的原理沒有什么區別。DC/DC電源模塊的優點主要體現在體積小,轉換效率大、穩定性更好等。而開關電源可以
    的頭像 發表于 12-30 10:33 ?255次閱讀

    在學習go語言的過程踩過的坑

    作為一個5年的phper,這兩年公司和個人都在順應技術趨勢,新項目慢慢從php轉向了go語言,從2021年到現在,筆者手上也先后開發了兩個go項目。在學習go
    的頭像 發表于 11-11 09:22 ?184次閱讀

    go語言如何解決并發問題

    作為一個后端開發,日常工作中接觸最多的兩門語言就是PHP和GO了。無可否認,PHP確實是最好的語言(手動狗頭哈哈),寫起來真的很舒爽,沒有任何心智負擔,字符串和整型壓根就不用區分,開發速度真的是比
    的頭像 發表于 10-23 13:38 ?153次閱讀
    <b class='flag-5'>go</b><b class='flag-5'>語言</b>如何解決并發問題

    谷景科普一體成型電感可以代替磁環電感嗎

    谷景科普一體成型電感可以代替磁環電感嗎編輯:谷景電子一體成型電感和磁環電感雖然都是電感產品,但它們都有著自己的特性和應用場景。很多人好奇嗎,一體成型電感是否
    發表于 08-18 20:26 ?0次下載

    Python語言基礎2

    電子發燒友網站提供《Python語言基礎2.rar》資料免費下載
    發表于 07-17 17:23 ?1次下載

    opencv-python和opencv一樣嗎

    是OpenCV的一個Python語言接口,它允許開發者使用Python語言來調用OpenCV庫的功能。 雖然OpenCV和OpenCV-Python
    的頭像 發表于 07-16 10:38 ?1304次閱讀

    人員定位系統都可以用于哪些行業?

    。 一、人員定位系統都可以用于哪些行業? 這套系統可以服務的行業非常多,尤其是崗位具有一定危險性的,那么定位系統可以說發揮的作用十分明顯,比如化工廠、消防員、礦井、戶外勘探等,而為了便于人員管理的場景也
    的頭像 發表于 07-15 11:32 ?393次閱讀
    人員定位系統<b class='flag-5'>都可以</b>用于哪些行業?

    ESP32模組的EXT0和EXT1喚醒源都可以選擇哪些引腳?

    模組的 EXT0 和 EXT1 喚醒源都可以選擇哪些引腳?在技術文檔的哪些部分有相關說明?
    發表于 06-13 06:04

    使用Docker部署Go Web應用程序步驟

    大多數情況下Go應用程序被編譯成單個二進制文件,web應用程序則會包括模版和配置文件。而當一個項目中有很多文件的時候,由于很多文件沒有同步就會導致錯誤的發生并且產生
    發表于 04-20 09:33 ?531次閱讀
    使用Docker部署<b class='flag-5'>Go</b> Web應用程序步驟

    很多薄膜電容壽命很短,這是怎么回事呢?

    很多客戶在選擇薄膜電容的時候,也會重視產品質量,一般都會先對電容樣品進行測試,性能沒有問題以后才會大量選用。
    的頭像 發表于 03-29 14:17 ?561次閱讀

    繼電器可以用什么替代?3a 220vac 3a 28vdc都是什么意思?

    用電子開關也可以代替繼電器的開關。如可控硅、開關二極管、開關三極管、電子雙向開關IC、光電耦合器、集成開關電路……等等很多都可以代替繼電器的
    發表于 02-18 09:58 ?4783次閱讀

    c語言,c++,java,python區別

    C語言、C++、Java和Python是四種常見的編程語言,各有優點和特點。 C語言: C語言是一種面向過程的編程
    的頭像 發表于 02-05 14:11 ?2507次閱讀

    PSoC雙核架構中雙核都可以訪問全部外設嗎?

    你好!如標題:PSoC 雙核架構中兩個內核對芯片的全部外設都有直接訪問能力嘛?如果都可以直接訪問,那IPC模塊的主要應用場景是哪些呢?
    發表于 02-02 11:44

    自發電設備:可穿戴設備的能量收集技術取得重大進展

    當今最知名的可穿戴設備能量收集技術當然是太陽能,它可以從陽光或環境光照中提取電子。但太陽能只是序幕。研究人員發現,我們其實有很多以微瓦功率獲取能量的選擇,可以取代可穿戴設備中的電池。
    的頭像 發表于 01-29 15:49 ?926次閱讀
    自發電設備:可穿戴設備的能量收集技術取得重大進展

    電感量一樣都可以代換嗎

    電感作為電路中的重要電子元器件,它在電路中的作用主要是儲存能量和濾波。在電感使用中,我們經常會遇到有客戶咨詢關于電感替換的問題。有人問是不是電感量一樣都可以替換?本篇我們就來簡單探討以下這個問題吧
    的頭像 發表于 01-17 09:49 ?528次閱讀
    主站蜘蛛池模板: 7777sq国产精品| 在线免费视频手机版| 四虎永久在线精品| 婷婷色在线观看| 四虎网址最新| 欧美黄色三级视频| 久久青草免费免费91线频观看| 年轻人影院www你懂的| 久色网| 婷婷亚洲五月琪琪综合| 国产18到20岁美女毛片| 欧美xxxx极品流血| 亚洲日本一区二区| 中国日韩欧美中文日韩欧美色| 性视频久久| 欧美精品videosex性欧美| 黄 色 片成 人免费观看| 99免费视频观看| 日日日天天射天天干视频| 国产福利萌白酱喷水视频铁牛| 啪啪网站免费观看| 国产叼嘿视频网站在线观看| 婷婷色天使在线视频观看| 奇米色影院| 国产精品虐乳在线播放| 午夜亚洲国产精品福利| 国产精品天天在线| 亚洲一区在线免费观看| 永久免费看www色视频| 三级免费黄录像| 伊人久久大香线蕉综合7| 五月婷婷激情五月| 欧美成人精品| ts在线视频| 91美女在线播放| 日本黄色免费网址| 国产黄色在线| 亚洲精品视频区| 欧美xxxxx精品| 一区二区不卡在线观看| 成 人 a v黄 色|