全面比較編程語言Julia和Python,讓您更容易做出抉擇!
譯文長期以來,Python一直是程序員、乃至其他專業人士最喜歡的編程語言之一。Facebook、Instagram、Spotify、Netflix、ILM、Dropbox、Yahoo!和Google都在其應用服務中使用著Python。
不過,隨著應用業務對于數據操作和科學計算需求的持續增加,人們往往需要依賴一種更加高效的數據處理語言。為此,Alan Edelman、Viral B. Shah、Jeff Bezanson和Stefan Karpinski于2021年開發出了Julia。它在算術編程(arithmetic coding)方面可以作為Python的絕佳替代品,協助進行各項數據處理工作。目前,Julia已經成為了數據科學、??可視化??、機器學習、以及人工智能領域重要的工具之一。
Julia的特點
為了解決Python等語言在數據處理等應用場景中的科學計算能力不足等問題。Julia在開發之初就被設計為旨在是使用LLVM(Low Level Virtual Machine)編譯器框架所構建的即時編譯器(just-in-time,JIT),來提高運行時的性能。在最好的情況下,Julia會在編譯而不是在解釋時,可以達到、甚至超過C語言的性能。
Julia的交互式命令行類似于Python的REPL(read-eval-print loop,讀取-評估-打印循環)。各種一次性使用的腳本和命令可以被立即插入其中。同時,Julia有著與Python類似的、簡短且有效的語法。
Julia可以直接與第三方的C和Fortran庫進行通信。您可以使用PyCall模塊作為Python程序的接口,并在Python和Julia之間傳輸數據。
Julia能夠以一種類似于Lisp(List Processing,一種早期自由軟件項目)語言的方式,生成應用程序,甚至去編輯它們的代碼。在Julia 1.1中被引入的調試套件,則使得您能夠在本地REPL中,遍歷代碼的執行結果,檢查變量,以及將斷點應用到代碼中。例如,逐個代碼執行的函數可以去執行各種細粒度的任務。
Python的特點
近年來,經典且全面的Python持續與大量第三方程序保持著密切的聯系。雖然??Python??當初并非針對數據科學家而設計,但是它已經被運用到了該領域。由于Python模塊能夠簡化特殊算法的創建,因此許多數據科學家和機器學習專業人士,都會使用Python進行情感分析和自然語言處理(natural language processing,NLP)。
由于屬于一種解釋型語言,因此Python的代碼并不需要經歷編譯的過程。它不但開源而且可以被免費下載。Python能夠支持所有面向對象的概念,其中包括:類、多態性、以及封裝等。由于本身具有可擴展性,因此Python代碼可以用C或C++進行編寫和編譯。
Python屬于一種易于學習和編寫的高級編程語言。通過導入預先存在的Python庫,開發人員可以不必重新輸入相同的數據,進而節省了開發時間。其逐行順序執行的方式簡化了調試過程。而在運行時,Python變量的數據類型則取決于它的用途,而并非其聲明。
而作為一種面向對象的解釋性編程語言,Python在動態類型、高級數據結構、以及動態綁定等方面具有較強的適應性,程序員僅通過幾行代碼,便可創建出動態的程序。因此,Python的流行和使用都非常廣泛。
Python的主要弱點是處理速度較慢。當然,Python對此也在持續改進中。其新的、簡化了的PyPy 7.1解釋器就在速度上提升了不少。此外,Python正在通過并行和多核計算進行速度上的提升。
Julia與Python的全面比較
1.專為機器學習而設計
Python可被用于執行各項應用活動。而Julia的設計則主要考慮的是機器學習和統計工作的負載。
a) Julia具有在高級統計方面的顯著優勢;而Python不一定能夠處理機器學習中用到的所有方程和矩陣。例如,在線性代數方面,“vanilla”Julia的表現就明顯優于“vanilla”Python。
b) Julia在非包(non-package)體驗方面優于Python,更適合機器學習類計算;當然作為一門優秀的語言,Python也可以通過NumPy(一種開源的Python數值計算擴展)來存儲和處理大型矩陣。
c) Julia的操作數系統(operand system)與用于統計分析、繪圖的R語言操作環境旗鼓相當。而Python在操作計算方面的性能劣勢較為明顯。
2.速度
a) Julia的性能與速度可與Fortran和C等編譯性語言相媲美。不過,Julia并非解釋型語言,它主要依賴類型聲明,來執行那些需要在運行時編譯的程序。
b) 開發人員可以使用Julia來實現高性能的應用,而無需借助手動分析和優化方法。這對性能問題的解決,十分有利。
c) 憑借著豐富的計算和數值特征,Julia的程序執行效率很高。此外,它還具有多重分派能力,可以快速地開發出數組和整數等數據類型。
d) Python開發人員(https://skillsstreet.com/python-developer-skills/)正在通過優化工具、第三方JIT編譯器、以及外部庫來進一步提高Python的速度。
3.在數據科學中的應用
a) 如前所述,Python可被用于各種目的,數據分析只是其中的一項關鍵性應用。
b) 由于Python包括了能夠輕松、快速地進行數據分析和處理的應用程序、工具和庫,因此它成為了數據科學中最受歡迎的工具之一。
c) 為了滿足日益增長的針對數據分析和程序執行任務的需求,開發者會將Julia應用到科學計算、大規模線性代數、機器學習、并行和分布式計算等場景中。
d) Julia增強了Python的性能,使得數據科學家能夠輕松地執行計算和分析。
4.多功能性
a) Julia能夠讓數據科學家運用各種語言去開發項目,并通過字符串的傳輸進行構建。
b) 作為一種適應性非常強的編程語言,Julia可以在LaTeX、C、Python和R語言中生成可執行的代碼。此外,它在執行復雜且大型的代碼段時的速度也比Python快。
c) 鑒于Julia的封裝劣勢,您可以通過RCall和PyCall,按需調用R和Python。
d) 作為通用可靠語言的最佳選擇,Python可用于Web開發、自動化和腳本的編寫。
5.文檔和社區支持
a) 每種編程語言都離不開工具的支持。經過幾十年的發展,Python已擁有了龐大且活躍的互助性編程社區。此類社區不但能夠通過持續改進,向開發人員提供各種工具支持、用戶界面和系統資源,而且能夠確保各種顯著的程序問題,能夠得到足夠的關注。
b) 作為一種新興的編程語言,Julia的社區支持仍處于起步階段,目前尚不支持各種主要資源和調試工具。當然,其社區也正在變得日漸活躍起來。
結論
綜上所述,Julia有著更快的處理速度和易于代碼翻譯的特點,當然它也需要進一步開發與完善。而Python雖然在性能方面有待改進,但是它仍然是程序員、數據科學家和學生的首選語言。不過,如果您正在從事需要大量數學計算的項目的話,那么我推薦您選擇使用Julia語言。
譯者介紹
陳峻 (Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗;持續以博文、專題和譯文等形式,分享前沿技術與新知;經常以線上、線下等方式,開展信息安全類培訓與授課。
原文標題:??Julia vs. Python: Key Differences To Consider??,作者:sai kumar