欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

從 Python 到 Go 再到 Rust,誰是后端開發之王?

系統 2057 0

640?wx_fmt=gif

【CSDN 編者按】作為一種簡單易上手的面向對象的動態類型語言,Python 在近兩年的技術圈中,可謂是炙手可熱;而另一種素有 Google “親兒子”之稱的 Go 語言,被設計成一門應用于搭載 Web 服務器,存儲集群或類似用途的巨型中央服務器的系統編程語言,其自從誕生起,就備受業界關注;最后來自 Mozilla 開發的系統編程語言 Rust,在安全性上表現尤為突出,且在過去三年間連續獲得了 StackOverflow 開發者調查中“最受喜愛編程語言”的 Top 1。??

在此,如果這三種語言同置于后端開發之中時,將會為開發者帶來什么樣的體驗?而誰又會更勝一籌?

從 Python 到 Go 再到 Rust,誰是后端開發之王?_第1張圖片

作者 |?allomedia

譯者 |?彎月,責編 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下為譯文:

?

說起后端語言,我很自然地從Python切換到了程序員們的新寵:Go,但僅一個星期之后,我意識到換成Go只是此次旅行的一半路程。盡管Go比Python更能滿足我的需要,但遠遠比不上我期待中的開發體驗,就像我在前端使用Elm時的體驗。所以我嘗試了一下Rust。

?

640?wx_fmt=png

離開Python

?

在過去三年的后臺開發中,我主要使用Python 3。從管理員腳本開始,后來開始寫機器學習腳本,到Flask/Django應用程序,我最近大部分時間都在使用Python,但總覺得它不是那么舒服。說實話,我并不是從某個“完全隨機的時間點”開始感覺不對勁,而是因為我喜愛上了Elm這個強類型語言。

我很喜歡一句名言:“能通過編譯就能用”,一旦你體會到了這一點,就再也回不到過去了。你可以盡情嘗試,只要按照編譯器給出的友好錯誤信息改代碼,然后就能神奇地使用了!

我開始意識到,我希望的“最佳”后端語言應該擁有以下特性:

  1. 靜態類型,強類型

  2. 大多數檢查在編譯時進行(而且,沒有異常!)

  3. 沒有null

  4. 沒有可修改性

  5. 能漂亮地處理并發

我知道你會說:“嗨,這不就是Haskell嘛!”是的,沒錯,但不知出于什么原因,我從未能用Haskell完成過什么東西(盡管我嘗試了許多)。也許只有我這樣吧,但從一個外行的角度來看,Haskell的思維方式過于精英化,也沒有太多文檔和示例,所以很難入門。《學習Haskell做正確的事情》這本書當然很好,但它太長了,而且對于我來說過于抽象(整本書沒有構建任何實際的東西)。

“嘿,那Scala怎么樣?”Scala是什么?更好的Java?還是Scalaz的函數式編程語言?還是那個需要4GB JVM才能運行,而且不確定是否會在java.lang.NullPointerException上出現運行時錯誤的那個面向對象的函數式編程語言?我在幾年前嘗試過,顯然,它并不適合我。

在與一些人討論之后,我決定試試Go語言。它有編譯器,沒有異常,沒有null(但有null值),而且能很好地處理并發。

?

640?wx_fmt=png

嘗試Go

?

我決定用Go語言重寫一個用Python寫的內部項目,目的只是為了感受兩者之間的差異。

第一感覺:學習Go非常容易。我只花了一個晚上,就編譯出了該項目的原型版本,實現了最基本的功能,還寫了一些測試。能夠快速添加功能的感覺非常好。編譯器的錯誤信息也非常有用 ,一切都很好。

結果痛苦開始了。我需要在某個結構體中添加一些字段,于是我修改了結構體,正要打算根據編譯器錯誤找出這個結構體在哪兒用過的時候……

我編譯了代碼,結果……沒有錯誤信息。一切正常。嗯?但我在結構體中添加了字段啊,編譯器應該指出我的代碼有錯誤,因為這些字段并沒有初始化!

問題在于,Go語言認為不給結構體提供值是正常的。值的默認初始值就是零,能通過一切編譯。這一點我堅決不能接受。我認為,編譯器不能在我犯錯誤的時候替我收拾殘局。于是我想:如果Go的編譯器并不比Python和mypy更好,那我為什么要學Go語言呢?當然Go語言的并發處理要好得多,但無法依賴編譯器的缺點對于我來說太嚴重了。

不要誤會,我依然認為Go能與Python并駕齊驅,如果有人要從兩者中選擇一個,我依然會推薦學習Go而不是Python。但就我個人而言,我已經學會了Python,只是想要一些更安全的東西,Go并沒有給我足夠的理由去學習。

?

640?wx_fmt=png

嘗試Rust

?

所以,我不會再考慮Go語言,因為我發現我真正想要的是更有幫助的編譯器,這個編譯器不應該默認我懂得如何編程(大量事實證明我的確不懂)。正因為如此,我開始嘗試Rust。

Rust并不是我的第一選擇,因為它標榜自己為“系統語言”,而我本身更傾向于Web開發,而不是系統開發。但它有許多非常好的賣點:

  • 沒有null值,二是提供了Option類型(編譯時檢查)

  • 沒有異常,但提供了Result類型(編譯時檢查)

  • 變量默認是不可修改的

  • 設計時考慮了并發

  • 設計時考慮了內存安全,不使用垃圾回收器

我決定重寫之前用Python和Go寫過的那個項目。Rust入門比Go語言難多了。像Go一樣,我試著上手寫代碼,但發現非常困難:我需要理解許多Rust特有的概念,比如ownership、lifetimes,才能理解我在StackOverflow上看到的代碼。所以我只好去閱讀《Rust Book》,花了兩個星期才能寫出一點代碼(別忘了Go語言我只花了一個晚上就能寫代碼了)。

但度過了初期陡峭的學習曲線之后,編寫Rust代碼變成了一種享受,我現在依然很喜歡編寫Rust代碼。有了Rust,我不再需要相信自己,只要跟著編譯器的指示即可,只要代碼能通過編譯,那基本上就能用。這正是我一直在尋找的編程感覺。

當然,Rust也有許多缺點:

  • 它非常新,一切發展都很迅速。我的項目中使用了futures-rs和hyper.rs,想找一份好的文檔非常困難(感謝irc.mozilla.org#rust-beginners的人提供的幫助)。

  • 它會強迫你思考在使用高階語言時從未思考過的問題:內存管理(包括lifetimes和ownership的概念)。

  • 編譯器的消息有時并不是太容易懂,特別是將futures和它們超長的類型結合在一起時。

  • 可修改性是允許的,所以有時候副作用會讓你抓狂。

但是,它也有許多優點:

  • 非常快

  • 工具鏈非常好(cargo,rustfmt)

  • 大多數東西都在編譯時檢查

  • 你幾乎可以用它做任何事,可以編寫瀏覽器,編寫Web應用,甚至還能編寫游戲。

  • 社區非常友好

  • 由Mozilla支持

?

640?wx_fmt=png

總結

90%的程序員學Python這么認為:

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

Go語言非常酷,但并沒有為我提供足夠的類型安全。如果不需要并發,那么我寧可繼續使用Python及其生態環境,而不會去冒險采用Go重寫一切。如果需要并發,那我也不會使用Go,因為它缺乏類型安全,這個炸彈肯定會爆炸。

Rust非常適合并發和安全,盡管futures-rs的“箱子”(Rust里函數庫叫做“箱子”)依然非常新。我認為,以后Rust會成為許多后臺的默認語言。

關于Go和Rust更深入的區別的文章和討論,可以參考Ralph Caraveo(@deckarep)的這篇文章:為Go開發者準備的Rust編程范式(https://medium.com/@deckarep/paradigms-of-rust-for-the-go-developer-210f67cd6a29)。

至少,我認為Rust是我最喜歡的后臺語言。

原文:https://tech.allo-media.net/point/of/view/2018/03/22/from-python-to-go-to-rust.html

本文為 CSDN 翻譯,轉載請注明來源出處。

【END】

從 Python 到 Go 再到 Rust,誰是后端開發之王?_第2張圖片

從 Python 到 Go 再到 Rust,誰是后端開發之王?_第3張圖片

?熱 文 ?推 薦?

一場全能的開發者大會,來自助力開發者成功進階的華為云

? JavaScript 的函數式編程與面向對象編程區別在哪?

? 如果微軟開發了 Android,會有何不同?

我在阿里的十年:從 BI 到產品經理,曾被程序員踢翻桌子罵

?L ibra的Move編程語言到底是個啥? 美女程序員通讀26頁的白皮書后, 找出了這些精華… | 技術頭條

? 文末送書啦!| Device Mapper,那些你不知道的Docker核心技術

?Bi gBiGAN問世,“GAN父”都說酷的無監督表示學習模型有多優秀?

? 學好正態分布有多重要?

? 實測!華為鴻蒙比 Android系統快60%!

從 Python 到 Go 再到 Rust,誰是后端開發之王?_第4張圖片 點擊閱讀原文,輸入關鍵詞,即可搜索您想要的 CSDN 文章。

640?wx_fmt=png 你點的每個“在看”,我都認真當成了喜歡


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 性xxxxx视频| 91精品最新国内在线播放 | 欧美黄色网 | 国精品人妻无码一区二区三区性色 | 久久综合欧美 | 在线看片h站 | 天天噜日日噜夜夜噜 | 亚洲第一成人影院 | 国产综合视频在线观看 | 欧美激情精品久久久久久久 | 亚洲最大黄色网址 | 欧美大香线蕉线伊人久久 | 黄网站视频在线观看 | 国产成人精品三级 | 三级全黄a | 天天影院| 97se亚洲综合在线韩国专区福利 | 狠狠色丁香婷婷综合久久片 | 欧美日韩a| 欧美日韩一区二区在线 | 波多野吉衣一区二区 | 亚洲精品色 | 国产精品美女久久久 | 99久久99久久精品免费看蜜桃 | 日本不卡视频在线播放 | www欧美 | 在线观看特色大片免费网站 | 精品国产第一国产综合精品gif | 六月丁香婷婷天天在线 | 日韩精品一区二区在线观看 | 99精品国产免费观看视频 | 欧洲另类一二三四区 | 国产精品亚洲成在人线 | 一级aaaaaa片毛片在线播放 | a视频在线免费观看 | 波多野结衣在线视频观看 | 日韩av一二三区 | 久久华人| 一级毛片私人影院老司机 | 久久久久久久久淑女av国产精品 | 久久久www成人免费无遮挡大片 |