搜尋
首頁後端開發Python教學為什麼急於尋找Python的替代者?

為什麼急於尋找Python的替代者?

Apr 11, 2023 pm 09:10 PM
python人工智慧機器學習

譯者| 劉濤

審校| 孫淑娟

人工智慧(AI)和機器學習(ML)是我們日常生活的伙伴,很難想像沒有演算法和統計模型會是怎樣一種生活。每當我們聽到機器學習這個字時,首先想到的就是 Python。因為Python長期以來一直是機器學習的代言人,它在幫助實現機器學習的技術層面上發揮了重要作用。

Python可能是最優美的機器學習語言,有48.24%的開發人員使用它。由於Python具有強大便利的低階套件和高級API接口,它在科學計算的所有領域中都具有無可比擬的優勢,但在用於特定任務時,它也有一些缺點。因此,對於Python替代語言的需求也越來越普遍。

目前,許多新興語言在表現上與Python相當,甚至比Python更好。所以它不再是機器學習的唯一選項。 Scala,Julia,MQL5以及其他非 Python超集的語言可以用來開發和提供機器學習應用。因此機器學習不再侷限於Python。

本文將探討新機器學習語言的出現,以及它們如何侵蝕Python市場佔有率以及未來機器學習的變化。

1.Python的缺點 

#讓我們來討論Python的一些缺點,這些缺點是開發者和資料科學家經常面對的。

效能和速度

Python開發速度很快,但是計算速度非常慢。它使用解釋器而非編譯器。由於執行順序代碼,它比其他的資料科學程式語言慢。 Python的速度比C慢,因為C有很多有用的工具和函式庫。除非你掌握了向量化程式碼,否則你會發現它是多麼的慢。

Cython是一個Python的超集,它將Python原始碼編譯成C語言程式碼,最關鍵是提供了C語言層級的運算速度,而無需額外的運算資源。很多程式設計師使用Cython編寫Python程式碼的運行速度和C語言的一樣快,但是更簡潔易讀。

設計限制

Python在設計上有巨大的缺陷,這是由它的動態型別造成的。 通常程式語言中的動態類型變數不需要特別聲明。 Python使用的是鴨子型,這種類型讓人困惑。在鴨子型中,一個物件的類別或屬性沒有它的功能那麼重要。 鴨子型不需要類型檢查。 您也可以對進程或屬性進行驗證。

記憶體消耗效率低

Python由於其龐大的結構而佔用了大量記憶體。此外,Python資料類型在記憶體消耗方面很靈活。它不適用於記憶體密集型任務。其靈活的資料類型也會導致記憶體消耗。因此,當您創建大型且長期運行的Python系統時,Python中的記憶體管理變得具有挑戰性。

線程不足

與其他語言相比,Python線程效率更低。儘管Python是多執行緒處理任務,但每次只能執行一個執行緒。因此,多執行緒的 Python 提供了單執行緒的處理效率。 Python有一個全域解釋器鎖 (GIL),同一時間只允許一個執行緒使用。只有在Python使用原生函式庫的情況下,才能同時執行多執行緒。此外,Python的超集 Jython可以實作多線程,而Python則不行。

2.為什麼資料科學家要尋找Python替代者? 

Python確實很棒。但它不可能同時既是閃電俠又是無敵浩克!有人可能需要閃電俠,有人可能需要綠巨人。用戶需求是多樣性的。同樣,Python也不是專為數學和數據科學應用而設計的。它需要一個像NumPy或Tensorflow這樣的第三方函式庫,專門用於深度學習演算法。因此,與Python相比,資料專用程式語言更具優勢。

例如,在商業領域,機器學習需要速度和可擴展性以減少執行時間。您不能讓顧客等太久。因此,您需要更快的ML語言(通用函數式程式語言)來執行。速度越快越好。

現在,Python已經很快了,但還有什麼能比Python更快的呢?有的,它是Julia,或是Scala!

在這種情況下,資料科學家更喜歡使用與Python不同的程式語言。

3.資料科學的Python替代方案 

在各種應用程式環境中,有幾種Python替代方案的性能與Python相當或優於Python。以下是一些Python資料科學的替代方案:

(1)Julia

Julia是一種全新的高階動態程式語言,具有創新性、快速性和舒適性。它是一種能夠編寫各種應用程式的通用語言。值得一提的是,其軟體包生態系統和功能有很大一部分都是針對高階數值計算的,非常適合機器學習。

Julia是基於多種語言構建,包括C語言和Python、R和MATLAB等高階動態類語言。 Julia汲取了這些語言的可選類型、語法和特性,因為Julia的目標是整合它們的優點並消除其缺點。

為什麼急於尋找Python的替代者?

Julia的創造者希望開發出一種語言,可以像C語言一樣快速地處理科學計算、機器學習、資料探勘、大規模線性代數、分散式和平行計算。然而,他們最終開發出的語言速度更快。 儘管Python的速度越來越快,但Julia還是勝過了它。

Julia簡化了許多用於機器學習的數學符號。它提供諸如ArrayFire這樣的多樣化GPU程式包,它能讓GPU執行通用程式碼。每個套件都有自己獨特的程式模式,例如, NVIDIA有CUDA. Jl,AMD有AMDGPU. jl和oneAPI。

機器學習工程師可以在大型叢集中快速部署Julia,受益於其強大的工具,例如MLBase.jl、Flux.jl(深度學習)、MLJ.j(通用機器學習)和Knet.jl (深度學習)。 Flux是 一個高速的深度機器學習函式庫,它預先安裝了額外的工具,使Julia的能力達到了最大化。 同樣,也包括適用於 ML應用程式的ScikitLearn.jl、TensorFlow.jl和MXNet.jl。

Julia擅長解決複雜的計算問題。因此,包括史丹佛大學和東京都立大學在內的許多著名學府都開設了Julia課程。 它在與Python的比較中,表現也很穩固。

(2)Scala

像Logan Kilpatrick這樣的眾多產業主管認為,Julia是機器學習和資料科學的未來。

Julia的主要特點:

  • Julia的一些核心功能可實現高效的資料科學計算:
  • Julia的運算速度很快。它比Python快2-20倍;
  • 靈活豐富的函式庫功能;
  • 內建套件管理器;
  • PyCall和CCall 套件直接呼叫Python;
  • 使用類似shell的功能管理其他流程;
  • 為平行和分散式運算而開發;
  • #自動為各種參數類型產生高效率程式碼;
  • 具有MIT許可證的免費和開源軟體。

Scala是一種高階程式語言,它同時支援物件導向和函數式程式設計技術。 Martin Odersky創建了它,並於2004年6月正式推出。 Scala在開發人員中越來越受歡迎,並且正在跨越當今的技術。

Scala是一種與Java應用程式和函式庫相容的Java虛擬機器 (JVM) 語言。因為它缺乏基本資料的概念,所以經常被認為是一種靜態語言。它的多範式、多核心架構很複雜。

ApacheSpark是一種強大、速度快的即時資料流和資料處理工具。 Scala Spark有助於複雜的映射、ETL和大型資料處理任務。 Scala允許使用者透過理解程式碼來實現新的Spark功能。 Scala與Java的兼容性使程式設計師能夠快速掌握物件導向的概念。

SparkMLlib包含了Spark中的高品質演算法和出色的效能,使其成為可擴展的機器學習函式庫。分類、迴歸、聚類、協同過濾和降維都包含在Spark的MLlib機器學習庫中。此外,Breeze、Spire、Saddle和Scalalab是其他一些有助於創建強大的資料處理應用程式的ML庫。

ApacheKafka是一種開源分散式事件流平台,隨著Python的流行,Spark也開始大行其道。 Scala Spark中執行緩慢的內容必然會在PySpark中崩潰。此外,您可以使用TensorFlow Scala庫為機器學習模型建立一個適應性強的高效能服務系統。

Scala的靜態類型有助於複雜的應用程式。它的JVM和JavaScript運行時使高效能係統能夠輕鬆存取庫。此外,它的性能優於Python。它也在與Python的比較中站穩了腳步。

Scala的主要特點

##Scala的一些核心功能可實現高效的資料科學計算:

    Scala的速度比Python快10倍;
  • 具備高階類型推斷機制;
  • 範例類別(case class)和模式匹配;
  • 有簡潔但易讀的表達式語法;
  • 提供高階函數;
  • 使用Singleton物件而不是靜態變數;
  • 使用OOP、FP或混合風格的程式碼;
  • Scala原始碼編譯為“. class”文件,該文件在JVM上執行。
(3)MQL5

MQL5是一種提供進階資料分析及機器學習功能的高階物件導向程式語言。它基於廣泛使用和廣為人知的程式語言C 之上,並以速度快、通用性強著稱。

MQL5不是像Python、Julia或Scala那樣的日常ML語言。它專門為金融市場創造,用於監控金融工具。語言的核心與其他語言相似,但具有獨特的功能。 MQL5支援整數、布林值、文字、字串、日期、時間和枚舉。它把結構和類別都定義為複雜資料型態。

MQL5語言說明文件列出了函數、操作、保留字等。此外,它還提供了整數、布林值、文字、字串、日期和時間等資料類型。它有複雜的結構和類別。此外,此說明文件還包括交易策略、控制台、自訂視效和文件存取等的標準庫類定義。

此外,MQL5擁有超過1,500個用於新應用開發的原始碼庫。您可以使用包含大量數值分析函數的ALGLIB函式庫。同樣,還有用於處理時間序列的TimeSeries庫和用於開發模糊模型的Fuzzy庫以及其他各種庫。

MQL5是一種功能強大的程式語言,可以幫助您建立即時系統,提供視覺化的決策協助。 MQL5 支援枚舉、結構、類別和事件。透過增加主嵌入式函數的數量,MQL5程式可以與DLL進行通訊。

MQL5具有與C 類似的語法,可以輕鬆地將用不同的程式語言編寫的程式轉換成MQL5程式。因此,在使用數據分析、人工智慧或金融工具作為交易機器人時,您可以獲得與C 相同的效率。

MQL5的主要特點

MQL5的一些核心功能可實現高效率的資料科學計算:

  • MQL5是以C 為基礎的。因此,其速度與C 相當,且超過Python;
  • 專為金融市場的工具和分析而創建;
  • 完全事件驅動;
  • 1500多個原始碼庫;
  • 可預先定義標準常數和枚舉。服務架構儲存資訊;
  • 更改配色方案、建立控制面板、新增自訂交易品種以及從MQL5程式匯出價格圖表;
  • 12種新的繪圖樣式,512個緩衝區,以及從過去到未來的直接索引值計算;
  • 在圖表和多幣種測試器中調試外匯智能交易系統(Expert Advisor)

#4.您應該選擇哪種Python ML替代方案?  

程式語言好比駕駛賽車,適當的車是不可或缺的,駕駛就更不用說了。同樣,身為資料科學家,您正是這些獨特跑車的駕駛者。

每位資料科學家或開發人員對特定技術都有自己的要求和規格。最佳的技術選擇取決於您需要的視角和功能。因此,很難做出最終選擇。

如果您希望實現多進程的運算,而且要求非常高的運算速度,則可以選擇Julia。它是三者中最快的。另一方面,如果您正在做大型項目,Scala應該是更好的選擇,因為它能夠勝任。如果您對金融工具感興趣,MQL5則是最佳選擇。

同樣,每種程式設計語言都有自己特點和擅長領域。因此,選擇滿足您的要求和規範的語言才是最好的做法。

5.總結  

機器學習是持續的、不斷進化的過程。隨著時間的推移,它與標準化ML (SML) 語言一起出現,並在Python中流行起來。如今,具有不同需求的機器學習語言呈現多樣化的發展。

簡而言之,Python是一種非常出色的機器學習語言。但Python並不是一種資料科學專用語言,並且有一些更現代的程式語言可以比它更有效地執行特定任務。

因此,新興的程式語言正在機器學習領域中獲得了市場份額並不斷增長。希望在未來幾年內,它們也能夠普及流行起來。

原文連結:https://hackernoon.com/not-only-python-problems-errors-and-alternatives

譯者介紹

#劉濤,51CTO社群編輯,某大型央企系統上線偵測管控負責人,主要職責為嚴格審核系統上線驗收所做的漏掃、滲透測試以及基線檢查等多項檢測工作,擁有多年網路安全管理經驗,多年PHP及Web開發及防禦經驗,Linux使用及管理經驗,擁有豐富的程式碼稽核、網路安全測試及威脅挖掘經驗。精通Kali下SQL審計、SQLMAP自動化探測、XSS審計、Metasploit審計、CSRF審計、webshel​​l審計、maltego審計等技術。

以上是為什麼急於尋找Python的替代者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Apr 02, 2025 am 07:12 AM

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何提高jieba分詞在景區評論分析中的準確性?如何提高jieba分詞在景區評論分析中的準確性?Apr 02, 2025 am 07:09 AM

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...

如何使用正則表達式匹配到第一個閉合標籤就停止?如何使用正則表達式匹配到第一個閉合標籤就停止?Apr 02, 2025 am 07:06 AM

如何使用正則表達式匹配到第一個閉合標籤就停止?在處理HTML或其他標記語言時,常常需要使用正則表達式來�...

如何繞過Investing.com的反爬蟲機制獲取新聞數據?如何繞過Investing.com的反爬蟲機制獲取新聞數據?Apr 02, 2025 am 07:03 AM

攻克Investing.com的反爬蟲策略許多人嘗試爬取Investing.com(https://cn.investing.com/news/latest-news)的新聞數據時,常常�...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境