日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

这个可能打败Python的编程语言,正在征服科学界

發(fā)布時間:2024/8/23 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 这个可能打败Python的编程语言,正在征服科学界 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

圖片來源:Unsplash

Julia 語言是近年來科學(xué)世界中出現(xiàn)的一匹黑馬。物理學(xué)家 Lee Phillips 發(fā)表了一篇高質(zhì)量的科普,介紹了這種科學(xué)計算語言的真正魅力所在。

>>>>

最近,我和許多科學(xué)家在網(wǎng)上視頻見面了很多次,他們對一個新工具感到興奮。它既不是最新的粒子加速器,也不是超級計算機,而是一種年輕的計算機語言 ——Julia。

不同的計算機語言擅長的工作也不一樣,有的運行速度很快,有的則更容易開發(fā)和部署,有的擁有龐大的生態(tài)系統(tǒng)和庫,有的則適用于解決特定問題。

對于需要模擬氣候變化或核聚變的科學(xué)家來說,目前的主流語言是?Fortran。它的編譯器可以充分利用大型超級計算機的強大性能。而對于數(shù)據(jù)科學(xué)家來說,?Python才是最受青睞的語言,因為它擁有豐富的生態(tài)系統(tǒng),強大的交互性和快速的開發(fā)周期。

六年前,我撰文描寫了 Fortran 在科學(xué)計算領(lǐng)域的地位,并與其他幾種語言進行了比較。在文章結(jié)尾處我曾預(yù)測:十年后,一種名為?Julia的新語言很可能取而代之,成為科學(xué)家在解決大規(guī)模數(shù)字計算問題時更愿意使用的語言。

我的預(yù)言不是很準(zhǔn)確,因為 Julia 只用了大約一半的時間,就接近了這一目標(biāo)。

通過近年與許多科學(xué)家的交流,我確信,Julia 在業(yè)界掀起了新的熱情。不過,當(dāng)年分析它的潛力時,我還不明白為什么這種語言會如此受歡迎。

當(dāng)時,我的評估是基于 Julia 獨特的便捷語法與出色性能。盡管 Julia 1.0 正式版尚未發(fā)布,但整個社區(qū)已經(jīng)非常興奮。

Julia 似乎已經(jīng)解決了?“?兩語言問題(two-language problem)”,這是 Python 等解釋性語言用戶經(jīng)常面臨的難題。用 Python 編寫一個程序,雖然可以享受它的便捷語法和交互性,但當(dāng)計算規(guī)模擴大到一定程度,程序的運算速度就會放慢很多。這是 Python 語言本身的局限性。

對于大型的仿真模擬運算來說,由于數(shù)據(jù)量過于龐大,程序的運行速度至關(guān)重要,因此研究人員不得不用 C 之類的語言再重寫一個一樣的程序,以提升實際應(yīng)用時的運行速度。可是速度上來之后,他們在后續(xù)研究中又要同時維護和更新兩種語言的代碼。“兩語言問題” 由此而生。

Julia 自誕生起就以解決 “兩語言問題” 作為使命,以此吸引科學(xué)家和其他人來學(xué)習(xí)該語言,不過這并不是它唯一令人興奮的地方。

以今年的 JuliaCon 大會為例,普通的計算機會議大多圍繞編程、編譯器、算法和優(yōu)化等計算機科學(xué)主題展開。雖然 JuliaCon 上也有這些,但更多的是圍繞科學(xué)研究課題,比如流體力學(xué)、語言處理、大腦成像等等。這些演講題目給人一種走進了科學(xué)研究大會的錯覺。

這種百花齊放的情況得益于 Julia 編程社區(qū)的開放態(tài)度,每個人的代碼都可以在 GitHub 上找到。如果有人希望使用現(xiàn)成的算法,從幫助文檔到代碼注釋,都可以拿到最新版本。

這與絕大多數(shù)年齡較大的科學(xué)家所熟悉的氛圍完全不同:在過去,科研代碼幾乎不會離開實驗室。

Julia 社區(qū)正是以大規(guī)模的協(xié)作和代碼共享為基石。

解決 “表達問題”

“?表達問題(Expression Problem)” 是計算機語言設(shè)計研究中的常見概念。它是計算機科學(xué)的分支研究領(lǐng)域,人們對它的含義和解釋往往十分抽象,并且依賴于專業(yè)術(shù)語。?

如果想要更好地理解這個概念,我們或許可以將其類比成烹飪。

首先我們要明確一些計算機科學(xué)術(shù)語,包括函數(shù) / 程序、數(shù)據(jù)類型和庫 / 模塊 / 包。

簡單來說,函數(shù) / 程序指的是 “獲取輸入值,對其進行處理,最后產(chǎn)生輸出值” 的過程。數(shù)據(jù)類型是數(shù)字、字符或其他信息的集合,這些信息有各式各樣的結(jié)構(gòu),可以由函數(shù)操控。庫 / 模塊 / 包則是函數(shù)的集合,還包括函數(shù)使用的數(shù)據(jù)類型的描述。

接下來我們開始類比。

如果你知道食譜和烹飪是什么意思,這個類比就很好懂。我們可以將庫 / 模塊 / 包視為市面上出售的 “食譜書”,函數(shù) / 程序就是 “制作菜肴的完整過程或技術(shù)”,而數(shù)據(jù)類型就是需要用到的 “食材或配料”。

現(xiàn)在想象一下食譜的內(nèi)容。一般來說,食譜都是以不同菜品為分類,比如炒菜實際上細分為如何炒洋蔥,如何炒蝦等等。每一道菜的步驟不同,因為它們使用的食材或配料不同。這些食材和配料表也是食譜的一部分。

菜品烹飪需要特定食材和配料。圖片來源:Lee Phillips

如果我們要添加一道新菜,那只需要囊括所有涉獵到的食材或配料就可以了,其他現(xiàn)有的菜品都不需要任何改動 —— 新菜不會讓舊菜失效。

添加新菜不會影響舊菜。圖片來源:Lee Phillips

但如果我們想加入新的配料或食材怎么辦?比如現(xiàn)有菜品制作過程中沒有用到魚,那么我們就需要修改現(xiàn)有的制作過程。

但要添加新的食材,就要改變現(xiàn)有菜譜。圖片來源:Lee Phillips

不過,組織食譜書的方法有很多,另一種方法是圍繞食材來組織書譜,而不是烹飪方法。每個食材,都會有配套的烹飪技術(shù)和方法。就像下圖所示:

以食材為核心來組織菜譜。圖片來源:Lee Phillips

在這種情況下,烹飪技術(shù)就不再是獨立存在的,而是與所使用的食材相關(guān)聯(lián)。如果要新添加魚作為新的食材,就可以編寫一個新的魚的制作方法,與現(xiàn)有的魚類烹飪方法整合在一起。

這樣一來,添加新食材就不用改變現(xiàn)有菜譜。圖片來源:Lee Phillips

但如果想添加一種新烹飪技術(shù)呢?比如如何使用攪拌機?

在不更改現(xiàn)有工作的情況下,我們沒有辦法實現(xiàn)。因為現(xiàn)有技術(shù)已經(jīng)綁定在食材上,新烹飪技術(shù)必然會改變食材的制作方法。

這兩種食譜的組織方式類似于兩種計算機語言類型。圍繞烹飪過程的食譜書是 “面向過程的語言”,而圍繞食材的食譜書則是 “面向?qū)ο蟮恼Z言”。兩種語言各有千秋。

這其實就是 “表達問題”:無論哪種語言,都存在擴展軟件(食譜)的障礙。?在重用和組合現(xiàn)有代碼時,能否不更改現(xiàn)有已存在的軟件包至關(guān)重要。

如果你覺得前面的類比還不夠清楚,接下來這一節(jié)還有另一種更直觀的解釋。

引入 “多重調(diào)度”

顯而易見的是,若有一種無論什么情況下都不用更改已有內(nèi)容的方式來組織食譜,就可以獲得極大的擴展自由度,那將是一個很大的優(yōu)勢。

與其嚴(yán)格遵照制作過程和食材來組織食譜,不如采用一種更通用且靈活的方法。如下圖所示:

看起來雜亂的新菜譜組合方式,允許更大的自由度。圖片來源:Lee Phillips

這張圖片顯示了方法與食材的自由關(guān)聯(lián),誰都不是另外一個的附屬品。但這不代表能隨機組合無關(guān)的方法,而是要基于現(xiàn)有方法創(chuàng)建變種,并與不同的食材配套。

舉個例子,我們現(xiàn)有的食譜書包含了炸雞的烹飪過程。如果想添加煎魚的過程,也不需要重新編寫,只需要指導(dǎo)讀者用炸雞的方式煎魚,但要使用更高的溫度,并且將配料更早的剔除。

另一種審視三種思維模式的方法是想一想 “食譜的目錄”。

在?“面向功能”的版本中,目錄可能是這樣的:?

- 第一章:煎炸

- 第二章:水煮

在這種情況下,添加新功能只需要新開一章,但添加新的食材(比如雞蛋)需要修改現(xiàn)有章節(jié):在第一章添加煎蛋,第二章添加水煮蛋等等。

在?“面向?qū)ο蟆?的版本中,目錄可能是這樣的:

- 第一章:雞

煎炸

水煮

- 第二章:魚

煎炸

水煮

在這種情況下,添加新食材只需要新開一章,但添加新的烹飪方法(比如烤)需要修改現(xiàn)有章節(jié):在第一章添加烤雞,第二章添加烤魚等等。

至于第三種方法,秉承可最大程度擴展食譜的思想,目錄可能是這樣的:

- 第一章:炸雞

- 第二章:水煮雞

- 第三章:炸魚

- 第四章:水煮魚

很顯然,無論是食材還是烹飪技術(shù),都能作為新章節(jié)自由添加到書中,無需修改任何現(xiàn)有章節(jié):第五章烤雞,第六章烤魚等等。

與前兩個版本相比,第三種模式似乎沒有組織性。

但在實際操作中,烹飪方法和食材之間的關(guān)系可以成為庫結(jié)構(gòu)的一部分。在食譜類比的語境中,我們可以想象雞和魚是肉的子集,草莓和櫻桃是紅色水果的子集,而煎炒和水煮則是更大的通用烹飪方法的變體,以此類推。

這種思維模式是解決 “表達問題” 的一種嘗試。這在語言設(shè)計中也被稱為?“多重調(diào)度”,指的是基于要應(yīng)用的所有數(shù)據(jù)類型的類型自動選擇方法。?

“多重調(diào)度” 是 Julia 解決 “表達問題” 的方法,也是其核心組織原則,因此 Julia 既不是面向?qū)ο蟮?#xff0c;也不是面向功能的。它采用的解決方法比兩者更強大,更通用。這意味著 Julia 在混合和使用庫方面更加自由。

工具的重要性

Julia 不是第一個嘗試解決 “表達問題” 的語言,也不是第一個用到 “多重調(diào)度” 的語言。擁有該功能的 Common Lisp 語言已經(jīng)誕生 40 年,Perl 等語言的最新版本也擁有該功能。用戶已經(jīng)肯定了 “多重調(diào)度” 在編寫和擴展庫方面的便利性。

但 Julia 與它們的區(qū)別在于,?Julia 是圍繞 “多重調(diào)度” 設(shè)計的,而其他語言只是將其作為可選項,并且會帶來性能損失。比如 Julia 的 “多重調(diào)度” 允許其更靈活和自然地表達數(shù)學(xué)思維,其社區(qū)代碼重用量讓語言設(shè)計者都感到驚訝。?

不過想在科學(xué)界立足,有了上述優(yōu)勢還不夠。Julia 之所以受到了大量關(guān)注,還在于它將 “多重調(diào)度” 和其他特性相結(jié)合,比如快速上手的免費高質(zhì)量代碼和非常快的運算速度,對需要大量數(shù)字運算的科學(xué)家非常有吸引力。

斯坦福大學(xué)教授 Mykel Kochenderfer 使用 Julia 設(shè)計了避免飛機碰撞的系統(tǒng),該系統(tǒng)已成為國際標(biāo)準(zhǔn)。他表示,Julia 不僅 “是高級的,可被解釋的語言,而且它的運行速度也與高度優(yōu)化的 C ++ 代碼一樣快。”

Julia 還具有表達力強,易于閱讀的語法,尤其是在處理數(shù)組時。它為數(shù)字算法的并行處理提供了一條快速通道。它具有 Unicode 時代的設(shè)計優(yōu)點,使其在表述數(shù)學(xué)公式時更像真正的數(shù)學(xué)。

下面這幅圖片是 Julia 程序中的實際代碼,使用了專門為 Julia 語言設(shè)計的字體。

Julia 語言的數(shù)學(xué)公式表達。圖片來源:Lee Phillips

Julia 的這些特性在早期就吸引了許多科學(xué)家,甚至在 “多重調(diào)度” 的特殊優(yōu)勢引發(fā)關(guān)注之前,就已經(jīng)吸引了大量用戶。

而我從中所學(xué)到的核心思想是:工具很重要。這就好比,畫家作畫時要選好符合作品風(fēng)格的畫筆和顏料,而作曲家腦海中的音律必須與樂器和表演者的技巧相吻合。

作為一個編程工具,Julia 之于科學(xué)家也是一樣。它能擴展科學(xué)家在有限時間內(nèi)能夠完成的任務(wù),幫助其實現(xiàn)未曾想象過的想法。

參考來源:

[1]?The unreasonable effectiveness of the Julia programming language

https://arstechnica.com/science/2020/10/the-unreasonable-effectiveness-of-the-julia-programming-language/?

—THE END—

翻譯 REN

撰文 Lee Phillips,物理學(xué)家

文章推薦

?20位國外博士日常(20張圖)

?物理學(xué)中最難的方程之一,你知道多少?

?物理學(xué)家張首晟:如果世界末日來臨,我會帶這幾句話上諾亞方舟|研習(xí)社演講實錄

?“孫子10歲,他的數(shù)學(xué)題我都不會”,清華教授狠批家庭作業(yè)引爭議

?人工智能時代的到來,c++還有用武之地嗎?

?「中國居里夫人」登美國永久郵票,穿旗袍做實驗,世界欠她個諾貝爾獎

總結(jié)

以上是生活随笔為你收集整理的这个可能打败Python的编程语言,正在征服科学界的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一卡二卡 | 爱插视频 | 一二三区视频 | 爱的色放在线 | 国产人妖在线观看 | 91免费看大片 | 国产伦精品一区二区三区网站 | 亚洲精品国产99 | 亚洲精品久久久中文字幕痴女 | 日本亚洲一区二区 | 成年女人毛片 | 国产成人久久婷婷精品流白浆 | 欧美大片高清免费观看 | 国产天天骚 | 欧美一二三区视频 | 久插视频 | 国产欧美视频在线播放 | 91极品在线 | 午夜资源网| 欧美日韩中文在线观看 | 国产在线视频导航 | 美女88av | 一级黄色片在线观看 | 欧美黄色激情 | 国产美女永久无遮挡 | a级片毛片 | 91在线视频免费看 | 美女啪啪动态图 | 一区不卡在线观看 | 91九色在线播放 | 欧美性受xxxx黑人xyx性爽 | 特级西西人体 | 国产亚洲毛片 | 国产高清片 | 国产精品嫩草av | 久久久久亚洲 | 91精品国产综合久久久密臀九色 | 香蕉啪啪网| 国产亚洲性欧美日韩在线观看软件 | 亚洲视频 一区 | 一区二区在线精品 | 操操操日日日 | 日本大奶子视频 | 国产资源精品 | 少妇无套高潮一二三区 | 毛片无码一区二区三区a片视频 | 91精品婷婷国产综合久久竹菊 | 性感美女被草 | 亚洲色图欧美色 | 性高跟丝袜xxxxhd | 午夜日韩在线观看 | a级片免费播放 | 人人妻人人澡人人爽久久av | 亚洲色图国产 | 日韩另类av| 999精品网站 | 国产精品第四页 | 娇小激情hdxxxx学生 | 少妇精品久久久一区二区三区 | jizz中文字幕 | 亚洲毛片在线观看 | 免费一级特黄特色大片 | 污污内射在线观看一区二区少妇 | 四虎永久在线精品 | 成人在线免费播放 | 黄色录像网址 | 久久资源在线 | 中文字幕日韩欧美一区二区三区 | av大全免费观看 | 久久99精品久久久久久国产越南 | 亚洲天堂avav | 国产亚洲片 | 日本aa大片 | 91香蕉国产在线观看软件 | wwwav网站| a天堂v| 奇米888一区二区三区 | 国产精品无码粉嫩小泬 | 东京av在线 | 在线观看中文字幕视频 | 欧美在线不卡视频 | 少妇av一区二区 | 久久久国产一区 | 人妻aⅴ无码一区二区三区 阿v免费视频 | 催眠调教后宫乱淫校园 | 国产成人久久精品流白浆 | 奇米色在线 | 人妻丰满熟妇av无码久久洗澡 | 天天操天天操天天操天天操天天操 | 亚洲精品偷拍 | 筱田优av | 国产白丝在线观看 | 高清国产一区二区 | 久久久久久久中文字幕 | 久久黄色网络 | 欧美中文字幕在线播放 | 台湾av在线 | 91亚洲国产成人久久精品麻豆 | 精品九九在线 |