在 Python 涵蓋的眾多領(lǐng)域中,數(shù)據(jù)分析應(yīng)當(dāng)是應(yīng)用最廣同時(shí)最為重要的。Python 通過加載大量的庫、工具和應(yīng)用程序,使得科學(xué)計(jì)算和數(shù)據(jù)分析工作變得快速便捷。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了當(dāng)雄免費(fèi)建站歡迎大家使用!Julia 語言(https://julialang.org/) 專門針對科學(xué)計(jì)算、機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、大規(guī)模線性代數(shù)、分布式和并行計(jì)算,在 Julia 的使用者眼里,Python 不夠快也不夠方便。此消彼長,當(dāng)它擅長某一項(xiàng)工作時(shí),肯定會(huì)忽略其他部分。
Julia 語言簡介
Julia 由一個(gè)四人組成的團(tuán)隊(duì)于 2009 年創(chuàng)建,在 2012 年正式對外發(fā)布,旨在解決用于科學(xué)計(jì)算和數(shù)據(jù)處理的編程語言(比如 Python)和應(yīng)用程序的缺陷。團(tuán)隊(duì)成員追求完美和極致,他們表示:
我們需要一個(gè)開放源碼且擁有自由許可證的語言。我們希望兼具 C 語言的速度與 Ruby 的動(dòng)態(tài)性。我們希望編程語言具有同像性,既有 Lisp 這樣真正的宏,又有 Matlab 這樣帶有明顯的、為人熟知的數(shù)學(xué)符號(hào)。我們希望它像 Python 一樣可以用于一般編程,又像 R 語言一樣適用于統(tǒng)計(jì)學(xué),能夠像 Perl 那樣自然地用于字符串處理,就可以像 Matlab 那樣強(qiáng)力支持線性代數(shù),此外還能像 shell 一樣做程序的粘合劑。它能夠讓初學(xué)者輕松入門,又能給資深開發(fā)者提供高級(jí)特性。我們希望它具有很強(qiáng)的交互性,同時(shí)又屬于編譯型語言。
為了實(shí)現(xiàn)這些想法,Julia 遵循了如下策略:
為了更快的速度,定義為編譯型語言,而不是解釋型。Julia 使用 LLVM 編譯器框架進(jìn)行即時(shí)編譯(JIT)。在某些情況下,Julia 可以接近甚至達(dá)到 C 語言的速度。
采用直接但有用的語法。Julia 語法的簡潔程度可以與 Python 媲美,雖然簡潔,但是表現(xiàn)力很強(qiáng)。
動(dòng)態(tài)類型。你可以指定變量的類型,如“無符號(hào)的32位整數(shù)”。但是,你也可以創(chuàng)建類型的層次結(jié)構(gòu)以允許處理特定類型變量,例如編寫一個(gè)接受整數(shù)的函數(shù),通常不指定整數(shù)長度。最后如果在特定的上下文中不需要,你可以不用完全輸入。
可以調(diào)用 Python、C 和 Fortran 編寫的庫。Julia 可以直接調(diào)用 C 語言和 Fortran 編寫的外部庫。也可以通過 PyCall 庫與 Python 代碼進(jìn)行交互,此外, Python 和 Julia 之間的數(shù)據(jù)可以共享。
元編程。Julia 程序可以生成其他的 Julia 程序,甚至可以修改自己的代碼,就像 Lisp 這樣的語言一樣。
Julia 相比 Python 的優(yōu)勢
Julia 從一開始就是為科學(xué)和數(shù)值計(jì)算而設(shè)計(jì)的。因此,Julia 在此領(lǐng)域具有眾多優(yōu)點(diǎn)也就不足為奇。它的優(yōu)點(diǎn)如下:
速度更快。Julia 的 JIT 編譯和類型聲明意味著它可以比“純粹的”、未被優(yōu)化的 Python 快幾個(gè)數(shù)量級(jí)。雖然 Python 可以通過 PyPy 或者 Cython 等方式進(jìn)行速度優(yōu)化,但 Julia 從設(shè)計(jì)之初就具有天然的速度優(yōu)勢。
友好的數(shù)學(xué)語法。Julia 的主要目標(biāo)受眾是科學(xué)計(jì)算語言和 Matlab、R、Mathematica、Octave 等環(huán)境的用戶。Julia 的數(shù)學(xué)運(yùn)算語法看起來更像計(jì)算機(jī)世界之外的普通數(shù)學(xué)公式,它使得非程序員很容易掌握。
自動(dòng)內(nèi)存管理。像 Python 一樣,Julia 不需要用戶太多關(guān)注分配和釋放內(nèi)存的細(xì)節(jié),它提供了一些針對垃圾回收的手動(dòng)控制方法。這樣的好處在于,假設(shè)你從 Python 轉(zhuǎn)投 Julia,你依然可以享有 Python 一樣的便利。
并行性。只有充分利用機(jī)器上可用的全部資源(特別是多核),數(shù)學(xué)和科學(xué)計(jì)算領(lǐng)域才能夠蓬勃發(fā)展。Python 和 Julia 都支持并行運(yùn)算。但是,在并行計(jì)算方面,Julia 的語法比 Python 更簡單,這樣就降低了并行運(yùn)算的使用門檻,使其能夠得到更廣泛的應(yīng)用。
Python 相比 Julia 的優(yōu)勢
Python 是一種易于學(xué)習(xí)的通用計(jì)算語言,已經(jīng)發(fā)展成為科學(xué)計(jì)算領(lǐng)域的主力軍。Python 之所以能夠在數(shù)據(jù)科學(xué)領(lǐng)域占據(jù)重要地位,得益于它的下列優(yōu)勢:
Julia 數(shù)組索引從 1 開始。Julia 的這個(gè)特性表面上看問題不大,但是我們不能排除它潛在的風(fēng)險(xiǎn)。在大多數(shù)語言中,包括 Python 和 C 語言,數(shù)組的第一個(gè)元素通常用 0 來訪問,例如,string[0] 表示 Python 字符串中的第一個(gè)字符。但是 Julia 則使用 1 作為數(shù)組中的第一個(gè)元素,它這樣做的原因是為了迎合一些數(shù)學(xué)和科學(xué)應(yīng)用(比如Mathematica)的用戶。雖然默認(rèn)情況下 Julia 采用1索引,但是可以通過其他手段(https://docs.julialang.org/en/latest/devdocs/offset-arrays/) 讓其支持 0 索引,畢竟用 1 作為第一個(gè)元素索引的方式違背程序員的編程習(xí)慣。
Julia 還很年輕。Julia 語言自2009年以來一直處在開發(fā)階段,并且一路上增減了多種功能。盡管開發(fā)者一直宣稱開發(fā)接近尾聲(https://github.com/JuliaLang/julia/milestone/4),但實(shí)際上它仍然沒有發(fā)布1.0版本。
Python 擁有更豐富的第三方軟件包。Python 數(shù)量龐大且實(shí)用的第三方軟件包是它能夠吸引大量開發(fā)者的殺手锏。而年輕的 Julia 語言的生態(tài)系統(tǒng)稍顯薄弱,它使用了很多現(xiàn)有的 C 和 Python 庫,但是開發(fā) Julia 自己軟件包的任務(wù)依然迫在眉睫。
Python 具有龐大的社區(qū)優(yōu)勢。如果編程語言沒有一個(gè)強(qiáng)大、活躍的社區(qū)支持,那么它的根基是不扎實(shí)的。Python 現(xiàn)在正擁有著一個(gè)強(qiáng)大的社區(qū)。雖然 Julia 的社區(qū)發(fā)展迅猛,但是和 Python 社區(qū)的規(guī)模相比依然不值一提。
總結(jié)
一個(gè)是經(jīng)過 8 年開發(fā)的新秀 Julia,一個(gè)是圈內(nèi)公認(rèn)的標(biāo)榜 Python,兩種編程語言在數(shù)據(jù)科學(xué)領(lǐng)域各有千秋,綜合以上的優(yōu)劣對比,你會(huì)更傾向選擇哪種編程語言入門呢?
網(wǎng)頁名稱:大佬Python對陣新秀Julia,誰能問鼎機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)?
分享網(wǎng)址:http://www.rwnh.cn/article36/dpepg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站內(nèi)鏈、App設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)