程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python與JavaScript做比較公平嗎?

編輯:Python

作者 | STX Next

譯者 | 彎月

出品 | CSDN(ID:CSDNnews)

在討論應該使用 Python 還是 JavaScript 構建項目時,一般我們都不會說只使用一種編程語言來構建所有的組件。

在現代軟件開發中,如果想構建符合標准的軟件,確保在截止日期前完成,或者構建一款可以處理數百萬用戶的應用程序,那麼通常都會使用多種語言、框架、工具和 API。

因此,如果我們想比較 Python 和 JavaScript,那麼就應該討論使用這兩種語言來構建軟件的核心組件。

除了這個核心主題之外,我們還將在本文中討論:

  • Instagram 成為世界上最大的 Python 應用程序的背後故事;

  • 最適合 Python 和 JavaScript 的應用程序;

  • 這兩種語言可互補。

Python和JavaScript 的快速介紹

在深入探討細節之前,首先我們來簡單地回顧一下 Python 和 JavaScript 的發展經歷,以及它們當前在編程世界中的獨特地位。

Python發展成為最大的編程語言之一的經過

Python 問世於 1991 年,這是一種通用編程語言,因此可用於解決任何可以用代碼量化和描述的問題。

近年來,Python 在科技市場的受歡迎程度大幅上升。在Django 等 Web 開發框架的推波助瀾下,Python 聲名大噪,此外Python在學術圈也非常流行。之後,Python 又成為了機器學習和數據處理的首選語言,這進一步增加了 Python 的人氣。

CSDN付費下載自視覺中國

Python 借助 Django 等 Web 開發框架在網絡開發中人氣大增,雖然還比不上 JavaScript。在 2020 年的 StackOverflow 開發者調查中,JavaScript 以 67.7% 的使用率位居榜首,而 Python 的使用率為 44.1%。在框架方面,JavaScript 的庫和框架 jQuery、React 和 Angular 占據前三位。Django 排在第 10 位。

如今,許多科學家和研究人員都在使用 Python,這些人精通復雜的科學知識,但技術力不是特別強,對他們來說,Python 是一種簡單易學的語言。科學家們可以利用 Python 快速制作原型,因此這種語言更具吸引力。

這一切都是因為 Python 是最簡單的語言之一,但這種語言入門容易,想要精通卻很難。即使你不是程序員,也可以利用 Python 實現簡單的自動化,比如抓取網站的數據,或者將數據從一個程序遷移到另一個程序。

此外,如果花費一番心思真正掌握 Python,就可以利用它來構建各種各樣的軟件。

JavaScript 成為通用編程語言的漫漫長路

JavaScript 於 1995 年首次問世。當時還沒有 Web 應用,JavaScript 的目標是讓 Web 成為一個真正的應用程序平台。

JavaScript 的發展並非一帆風順。由於一些設計選擇,以及糟糕的營銷,JavaScript 被許多開發人員厭棄,而且由於低網速和低帶寬的限制,JavaScript的能力也非常有限。另外,很長一段時間以來,跨浏覽器的兼容性一直存在問題,這使得開發人員很難構建可以在所有浏覽器上運行的網站。

CSDN付費下載自東方IC

多年來,JavaScript 的受歡迎程度一直在穩定增長。於 2006 年發布的 jQuery 是第一個消除跨浏覽器兼容性問題的庫。在 jQuery 的支持下,網站交互性的實現變得更加容易。後來又出現了一個主流框架 AngularJS,但它後來被 Angular 2+ 取代,如今該框架在企業級解決方案中仍然非常流行。

2011 年~2012 年左右,JavaScript 首次獲得了所有主流浏覽器的支持,包括Firefox、Chrome、Opera 和 Safari。但即使到現在,JavaScript 仍然未能獲得 100% 的支持。這是因為 JavaScript 會定期添加新功能,因此浏覽器開發人員必須不斷努力改進對 JS 的支持。

2013 年,Facebook 工程團隊發布了 React,該框架迅速流行起來,並為鞏固 JavaScript 作為最受歡迎的網絡技術貢獻了重要力量。

當然,上述只是 JavaScript 發展歷史的概要,實際上整個發展過程更加漫長,更加復雜。總的來說,JavaScript 經歷了重重磨難,才有了如今的地位。

目前,新版 JavaScript 的設計正在朝著成熟通用編程語言的方向邁進。

何時使用 Python 和 JavaScript 來構建核心組件

如果核心組件或系統發生故障的時間過長,整個項目就會面臨崩潰。因此,我們需要慎重地選擇這部分的構建技術。

對於優先級較低的系統,你可以嘗試不同的方法,找到最節省成本的方法。然而,在為構建核心組件選擇編程語言時,也采用這種態度就會導致項目走向失敗。

假設有一款主要用於共享照片和視頻應用程序,在全球擁有超過 10 億用戶,那麼處理海量內容的服務器就是該應用程序的核心組件。對於這類應用,我第一個想到的就是Instagram,這款應用號稱“世界上最大的 Python 網站”。

Instagram 的一位工程師曾表示,“Instagram 的服務器完全由 Python 驅動。”Instagram 服務器的應用程序就是“一個龐大的、包含數百萬行代碼以及數千個 Django 端點的大型代碼庫”。Instagram 的每張照片、每個視頻都是通過最流行的 Python Web 框架 Django 編寫的。

為什麼 Instagram 會選用 Python 來編寫核心服務器?

Instagram 使用了大量 Facebook 數據中心的服務器。工程師不僅需要管理應用程序的外觀、消息流、內容推薦算法,還需要確保服務器的 CPU 不會過熱。

這是一項極其艱巨的任務。他們為什麼會選擇 Python 作為主要語言?

Instagram 的開發者博客公布了答案:“我們最初選擇使用 Python,是因為該語言簡單且實用,這與我們的理念非常吻合,即從簡單的事情入手’。但簡單也有一個缺點:效率低。”

簡單且實用。Martin Fowler 是一位軟件開發大師,擁有數十年的從業經歷,還出版了多本書籍,他曾經寫道:“任何傻瓜都可以編寫計算機可以理解的代碼。但只有優秀的程序員可以編寫人類可以理解的代碼。”

這意味著,雖然你的目標是確保機器不會因每天為數十億用戶提供服務而過熱,但實現這一點的方式並不是學習怎樣更好地編寫機器代碼。你必須編寫方便其他開發人員理解的代碼,這樣他們就可以在必要時快速調試代碼,或在現有代碼之上構建新功能,同時還不會擔心破壞現有系統。

Python 非常適合這類應用,因為該語言方便閱讀、簡潔且易於理解

Instagram 使用 JavaScript 嗎?

雖然 Instagram 的服務器選用了 Python,但界面部分卻並非由 Python 負責。Python 負責存儲和管理所有數據,但智能手機上的界面是使用原生編程語言構建的,而且還有很大一部分來自 JavaScript。

Instagram 的移動界面是使用 Swift(iOS)和 Java(Android)構建的,但流行的移動前端 JavaScript 框架 React Native 也發揮了重要作用。Instagram 工程師之所以選擇該框架,是因為他們希望提高開發速度,這樣就能夠盡快為應用程序的 iOS 和 Android 版本添加新功能。

React Native 是不二之選,因為工程師只需編寫一套代碼就可以在不同的系統上發布新功能。他們可以使用 JavaScript 代碼在兩個系統上創建原生界面。

本來他們可以使用另一種方法,例如利用 Swift 和 Java 構建單獨的界面,但他們選擇了 React Native。在 React Native 的支持下,維護界面的工作不僅可以節省成本和開發時間,而且也可以減輕開發人員的負擔。

Python 與 JavaScript:哪種語言的使用更多?

Instagram 代表了當前網絡和移動行業的基准。許多流行的應用都采用了與之類似的結構:後端采用 Python,前端采用 JavaScript

即使是與 Instagram 完全不同的 PayPal,也有類似的技術棧。他們曾在一個非常簡單的聲明中稱使用了 Python 來管理數據,而且還使用 JavaScript 來創建用戶界面。

這份聲明被極度簡單化了,因為了解一下他們所使用編程語言和工具的細節,就會被復雜性所淹沒。另外,他們不像 Instagram 那樣熱衷於與全世界分享技術棧的細節。

還有一篇博文解釋說,PayPal 的中間層基礎設施(Web服務器和前端)采用了Node.js,因此這樣他們就可以只使用 JavaScript 來構建網站了。

但這也不是核心組件。PayPal 的的核心組件隱藏在所有這些界面之下,其中很多是采用 Python(很可能還有其他幾種語言)編寫的,而且安全性、穩定性和數據管理也是由 Python 負責的。

JavaScript 不適合核心系統的構建。最初,這門語言的設計目標是為網站添加交互性,雖然如今已經發展成為一個強大的工具,但依然受到設計的限制。

另一方面,Python 的設計目標是通用編程語言,因此它的用途遠遠超出了 Web 開發。如今,Python 還植根於學術界。我們不僅可以利用 Python 構建網站,而且還可以利用這門編程語言來構建人工智能的神經網絡。

因此,總的來說,Python 的使用比 JavaScript 更廣泛。但是,在幾個領域內JavaScript 是不二之選,選擇 Python 就不太明智了。

JavaScript 相較於 Python 的優勢

JavaScript 是移動開發領域的贏家。雖然有一些移動開發的小眾框架(比如 Kivy 和 PyQT)是使用Python開發的,但幾乎沒有人使用。

對於 Python 開發人員來說,學習 JavaScript 並使用其最流行的移動開發框架 React Native 來構建應用程序是合理的選擇。

還有一個領域 JavaScript 略勝一籌,那就是前端開發。在構建現代界面方面,JavaScript擁有一流的框架(React、Angular、Vue)。開發人員還可以借助 Node.js,構建應用程序的服務器端。此外,開發人員還可以通過 JAM 技術棧(即JavaScript + APIs + HTML),在短期內快速構建漂亮的 Web 應用。

對於預算有限,時間緊迫的中小型 Web 和移動開發團隊來說,JavaScript 絕對是最佳選擇。

Instagram 和 PayPal 的例子表明,Python 與 JavaScript 結合使用,可以構建出主導市場並徹底改變數十億人生活的應用程序。

JavaScript 在性能上是否超越了 Python?

使用 JavaScript 構建的應用程序可以在 Web 上快速運行。與 Python 應用程序相比,無疑使用 Node.js 構建的 Web 應用程序的運行速度會更快。

正如 Towards Data Science 所說,“Python 的性能相對較慢,因為它只能單線處理請求,而 Node.js 可以使用多線程。”

有一些方法可以優化 Python 的性能,因為其底層使用的是 C 語言。例如,NumPy 利用經過優化的 C 代碼提升了 Python 的速度。Cython 是一個編譯器,是 Python 語言的超集,使用該編譯器的開發人員可以構建速度更快的C模塊,從而加快 Python 代碼的執行。

一般來說,對於 I/O 壓力較大的應用程序(比如 Facebook)來說,JavaScript 的運行速度更快,這類應用程序需要處理大量的實時數據,避免用戶等待至關重要。

如果是CPU需求較大的應用程序,例如需要處理大量數據來解決特定問題的機器學習模型,則Python的速度更快。另外,需要GPU進行大量計算的應用程序,也應該選用Python。

Instagram屬於I/O 密集型應用,但它的服務器使用了Python,這表明,經過合理的優化後,Python的執行速度也可以很快。

關於性能,我們還需要考慮到另一個層面:走向市場的時間。只要代碼編寫合理,這兩種語言都可用來快速構建最小化可行產品。對於復雜的程序,使用Python可以縮短開發時間,因為該語言易於閱讀和調試。此外,Python還可以促進團隊協作。

而使用JavaScript構建產品則會比較復雜,雖然速度很快,但開發時間會更長。出於這個原因,如今很多公司選擇了TypeScript,因為一些開發人員認為TypeScript比Python更容易閱讀和維護。

機器學習領域內Python與JavaScript的使用

Python 是機器學習開發人員的首選語言。機器學習很復雜,涉及大量數據,因此選擇Python合情合理。Python 是一種簡單易讀的語言,可以減輕開發人員的負擔,而且它一直是數據科學的標准。

如今流行的機器學習框架(如TensorFlow、scikit-learn、PyTorc)大多是使用Python編寫的,而且它們還提供了專用的 Python API。TensorFlow 曾在2018 年發布了該框架的 JS 版本,支持開發人員構建可在浏覽器或 Node.js 服務器中運行的機器學習模型。

但這還不足以贏得整個機器學習的世界。Python非常適合機器學習,而且在短期內它不太可能被另一種語言取代。

Python 和 JavaScript 的未來

很多人認為 Python 與 JavaScript 做比較並不公平。畢竟這兩種語言的設計初衷不同,因此二者在軟件開發中的應用也存在差異。

正是這些差異使得這兩種技術能夠在現代編程世界中完美地互補。

將來這種情況會發生變化嗎?就目前來看,JavaScript 作為最強大的 Web 與移動應用開發工具的地位似乎非常牢固。同時,JavaScript 也在朝著通用編程語言的方向發展,但未來它能否取代 Python 之類的語言,目前尚無定論。

至於 Python,由於可讀性、易用性以及處理數據的能力,該語言可能會繼續主導機器學習領域和學術界。

說到底,技術棧的選擇始終取決於項目的性質、程序員掌握的技術以及其他多種因素。

*本文由CSDN翻譯,未經授權,禁止轉載。

原文鏈接:https://medium.com/@STXNext/python-vs-javascript-is-it-a-fair-comparison-a3d90288a204

— 推薦閱讀 —

《新程序員001-004》已全面上市

歡迎掃描下方二維碼或點擊進入立即訂閱

即可暢享電子書及精美紙質書。

*Linux 超 macOS、最討厭 Angular.js 框架,調查了 7 萬名開發者的最新發現!
*“一次編寫,運行各端”,高通重磅發布 AI 軟件棧!
*把騰訊搬到雲上,治愈了他們的技術焦慮

一鍵三連 「分享」「點贊」「在看」

成就一億技術人


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved