-
1 # Mr冷鋒
-
2 # 音樂達人小木木
網際網路上有大量優秀的程式碼,它們構成了多種基礎架構的基石。甚至本文所在網站的建立初衷也是建立優秀程式碼。雖然普通使用者並沒有注意到這一點,但優秀的開發者總是致力於最佳化其應用(以及程式碼)。
編寫優秀程式碼的基礎在於開發者的技能以及他/她所選擇的程式語言。這必然導致開發者之間出現歷史性的衝突,這衝突不僅存在於技能層面,主要還在於開發者所選擇的語言。如果你把兩種程式語言(如 Golang (Go) 和 Python)放在一起對比,大機率會得到這樣的結果。
但是,我們退後一步,放下個人偏見和喜好,從優點和功能的角度來評價兩種語言。然後設定公平的競爭環境和技能水準。
現在,我們只有兩個選擇:Go vs Python。那麼問題來了:哪種語言更適合你?
關於 Python
詢問一些開發者後,你會發現 Python 是「空前絕後」的語言。Python 獲得這麼多人青睞的原因在於它是一門非常優秀的程式語言。網際網路上到處都是用 Python 寫就的奇蹟。
Python 是一門「古老」的語言,其概念首次出現於 1991 年。Python 的歷史積澱賦予了它一些優勢。Python 的使用者眾多,這表示這門語言穩定,且具備大量編寫完備的文件。在大部分案例中,你能找到幾乎所有事物的庫,以及關於你所思考的所有事物的程式碼示例。對於開發者和企業來說,這意味著使用 Python 伴隨而來的是大量經驗和程式碼,只需要評估即可。
還有大量以 Python 為基礎建立的開源專案,因此在大多數情況下,你不需要從頭開始。Python 可以很好地整合到企業級應用中,可用於機器語言和 AI 應用。但它也有缺點,比如,不適合記憶體密集型任務,執行速度略慢,不適合移動應用開發。
關於 Go 語言
Go 於 2009 年由谷歌開發完成。它解決了一個問題,創建出一種沒有 C++等語言的過重包袱和過分設計的語言。這使得 Go 在效能和速度上都有極大提升,使用 Go 工作成為一件樂事。此外,大部分第一次使用 Go 語言的開發者不會感覺到不便,因為 Go 中的熟悉元素及其易用性構成了一項驚喜。
這並不是說 Go 語言在所有情況下都是完美的。雖然它將速度和優雅度提升到新的層次,但也捨棄了一些使用者期望的功能。比如,它不具備大量庫,也不支援繼承。此外,它沒有 GUI 庫,也不支援物件導向的程式設計。Go 語言的特點表明它具備輕量級執行緒實現(Goroutine)、智慧標準庫、強大的內建安全性,且可使用最簡語法進行程式設計。
效能測試
關於 Go 和 Python 的優缺點能說上三天三夜,但最關鍵的一點還是它們的效能。因此接下來本文在基於 Intel® Core™ i7–9700K CPU @ 3.60GHz × 8 cores 執行的試驗配置中執行一些測試。
程式碼地址:https://github.com/sekarasiewicz/go-python-benchmark
二分搜尋
建立整型列表(從 1 到 100000),使用二分搜尋找出數字 729。測試結果如下:
氣泡排序
首先生成整型列表(包含 10000 個隨機數字元素),然後使用氣泡排序演算法對這些元素進行排序。測試結果如下:
從檔案中讀取
該測試是關於讀取「lorem ipsum」文字檔案,測試結果如下:
HTTP 請求處理
建立 HTTP 伺服器很簡單,但是用 Python 搭建一個類似的伺服器則需要花費一番功夫。我們來看二者對簡單的「hello world!」訊息的響應時間:
如何選擇?
Python 是社群最受歡迎的語言,在 2019 年第一季度「GitHub 發展最快的程式語言」中名列第二位(pull requests 數量增長 17%),但 Golang 也沒落後多少,在該排名中名列第四(pull requests 數量增長 8%)。在 Golang 和 Python 中做出選擇變得更加艱難。然而,在選擇適合自己的語言時,你需要考慮以下事項:
可擴充套件性:Golang 在建立之初就考慮到了可擴充套件性。其內建併發性允許同時處理多項任務。Python 也使用併發性,但並非內建,它透過執行緒實現並行化。這意味著如果你打算處理大型資料集,Golang 似乎是更適合的選擇。效能:眾所周知,Python 並非記憶體/CPU 友好的語言,但它具備大量庫,可以高效執行基礎的開發任務。Golang 具備內建功能,更適合微服務軟體架構。應用:Python 適合人工智慧、資料分析、深度學習和 web 開發任務,而 Golang 適用於系統程式設計,執行雲計算和叢集計算應用的開發者喜歡使用 Golang。社群與庫:如前所述,Python 的歷史賦予它一定優勢。其中之一就是它具備大量庫,擁有大型支援社群。而 Golang 語言仍在增長期,沒有那麼多庫和社群支援。但是我們不應因此判定 Go 語言出局。其增長率和採用率非常驚人,每天都在擴張。執行:如果速度是王道,那麼 Golang 遙遙領先。考慮以上事項後,具體使用案例將成為採用哪種語言的決定性因素。假如你的開發團隊要建立微服務,那麼 Golang 是更合理的選擇,因為它速度快、易於程式設計、可擴充套件性優異。而 Python 更適合 AI、ML 和資料分析任務。
從直接測試結果來看,Go 在大部分案例中領先,被認為是 Python 的有效替代方案。開發者在選擇程式語言時,應考慮開發專案的性質和規模,以及所需的技能組合。
好訊息是,不管選擇了哪種語言,Go 和 Python 都在持續演進。儘管在大多數情況下 Golang 可能是更好的選擇,但 Python 社群不會坐以待斃。這兩種語言都在擴張和增長。這意味著,未來我們將看到更多功能和改進。
回覆列表
python好,很多大公司都在用,而且學起來容易,網上免費學習的資源也多。