乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Python要被學(xué)術(shù)圈拋棄了?科學(xué)家們可能找到了更好的替代品

       西北望msm66g9f 2021-02-19

      一些科學(xué)家開始使用比 Python 性能更強(qiáng)大的新編程語言了,它和 Python 一樣能夠“立等可取”,而且計算能力還更強(qiáng)。

      本文轉(zhuǎn)載自公眾號“Nature Portfolio”

      原文作者:Jeffrey M. Perkel

      2015 年,生物信息學(xué)家 Johannes K?ster 還是(用他自己的話說)“差不多全職寫 Python 的”。他當(dāng)時已經(jīng)用 Python 寫過一個備受歡迎的工具——流程管理工具 Snakemake。現(xiàn)在,他正在準(zhǔn)備寫的項目所要求的計算能力超過了 Python 能提供的范圍。所以他開始搜索新的工具。

      現(xiàn)在德國杜伊斯堡-埃森大學(xué)任職的 K?ster 正在尋找一種計算機(jī)語言,可以具備 Python 的“立等可取”性,同時擁有 C 和 C++ 這類語言的速度。換言之,“一個高性能的語言,而且還,這么說吧,符合人類工程學(xué)。”他解釋道。他找到的語言就是 Rust。
      象征兼具速度和安全的程序員的漫畫。繪畫:Project Twins
      Rust 是 2006 年由 Graydon Hoare 在加利福尼亞州瀏覽器公司 Mozilla 工作的時候作為小項目開發(fā)的。Rust 混合了 C++ 這類語言的性能、友好的語法、對代碼安全性的關(guān)注和一套精心設(shè)計的工具用以簡化開發(fā)流程。Mozilla 的 Firefox 中有一部分就是用 Rust 寫的。據(jù)報道微軟也使用 Rust 重寫了 Windows 操作系統(tǒng)中的一部分。每年一度的 Stack Overflow 開發(fā)者調(diào)查已經(jīng)連續(xù)五年將 Rust 列為“最受喜愛的”編程語言。代碼共享網(wǎng)站 GitHub 說,Rust 是該平臺 2019 年增長第二快的語言,比去年增長了 235%。

      科學(xué)家們同樣看向了 Rust。例如,K?ster 用它寫了一個叫做 Varlociraptor 的應(yīng)用。該應(yīng)用能將數(shù)百萬的基因序列與幾十億種基因堿基比對,以找出基因突變?!皵?shù)據(jù)量極大,”他說,“所以比對必須盡可能地快?!钡牵琑ust 的強(qiáng)大是有代價的:學(xué)習(xí)曲線很陡。

      “上手之前是得花些時間?!辟e夕法尼亞州咨詢公司 Integer 32 的創(chuàng)辦者,也是 Rust 核心團(tuán)隊成員的 Carol Nichols 說?!暗撬屛夷軌蜃鲆恍┐饲盁o法做到的事。我認(rèn)為這些時間花得值?!?/span>

      警告:沒有護(hù)欄
      分析科學(xué)數(shù)據(jù)的工作流程通常會使用 Python、R 和 Matlab 這樣的語言。這類語言會逐行解釋代碼并執(zhí)行。該模式在探索數(shù)據(jù)的時候很有用,但是速度不會快。

      C 和 C++ 很快,但是沒有“安全護(hù)欄”。斯德哥爾摩的 Rust 程序員(他們管自己叫Rustacean),Ashley Hauck 說。例如,沒什么能阻止 C 和 C++ 的程序員訪問已經(jīng)釋放回系統(tǒng)的內(nèi)存,或是把同一塊內(nèi)存釋放兩次。最好的情況下,這樣做會讓程序崩潰,但也有可能返回?zé)o意義的數(shù)據(jù)或是產(chǎn)生安全漏洞。根據(jù)微軟的研究,他們公司每年修補(bǔ)的安全漏洞中有70%都和內(nèi)存安全有關(guān)。

      內(nèi)存規(guī)則
      Rust 的模型所使用的規(guī)則將每一片內(nèi)存都分配給了一個單一的所有者,并限制了誰能訪問它。違反規(guī)則的代碼根本不會有機(jī)會崩潰——它根本就無法編譯?!八麄兊膬?nèi)存管理系統(tǒng)是基于這個生命周期概念的,允許編譯器可以在編譯的時候追蹤內(nèi)存何時分配,何時釋放,由誰持有,誰能訪問,” Rob Patro 說。他是馬里蘭大學(xué)的一位計算生物學(xué)家?!坝幸徽愓_性問題都可以通過語言的設(shè)計方法避免。”

      這套理念還會幫助保證并行計算——使用多個處理器同時進(jìn)行計算的軟件——可以安全執(zhí)行。例如,可以避免多個線程同時訪問同一份數(shù)據(jù)的可能性。

      結(jié)果是,這種語言更易于維護(hù)和調(diào)試,但是學(xué)習(xí)起來就更難了。“其他任何一種主流語言都沒有這些概念,而它們是理解Rust編程方式的核心?!盢ichols 說。在都柏林圣三一大學(xué)研究地理數(shù)據(jù)可視化的 Stephan Hügel 估計,他花費了兩三個月把一個將地理空間坐標(biāo)轉(zhuǎn)化進(jìn)另一個參照系的 Python 算法改寫成了 Rust,執(zhí)行速度快了 4 倍。加利福尼亞州的一個化學(xué)信息學(xué)軟件公司 Metamolecular 的創(chuàng)辦者 Richard Apodaca 說他為熟練使用 Rust 花了六個月。


      聚焦易用性
      為了彌補(bǔ)這一問題,Rust 的開發(fā)者花功夫改進(jìn)了用戶體驗,在加利福尼亞州的 Rust 開發(fā)者工具團(tuán)隊的主管 Manish Goregaokar 說。例如,編譯器會返回特別有信息量的錯誤信息,甚至?xí)⒊鲥e的代碼高亮出來,并建議如何修正?!叭绻愕恼Z言想要引入新的概念,那最好用起來方便一些?!?Goregaokar 解釋道。

      Rust 社區(qū)還提供了詳盡的文檔和在線幫助,其中包括一本大受歡迎的在線詳解“Book”和一份介紹如何解決常見問題的“Cookbook”。Rust 工具鏈——程序員用來將代碼轉(zhuǎn)化成程序的工具——很受用戶好評(見下文“大家一起氧化吧”)?!癛ust 的工具和架構(gòu)真的很棒。”Patro 說。相較于 C 程序員需要面對的很多種編譯器和輔助應(yīng)用,Rust 程序員只需要一個叫做 Cargo 的工具就可以編譯 Rust 代碼、運行測試、自動生成文檔、將代碼上傳到代碼庫中,等等。它還會自動下載并安裝第三方軟件包。Cargo 的一個插件 Clippy 可以標(biāo)亮常見錯誤和“不怎么規(guī)范”的 Rust 代碼,Patro 評價這一特性是“絕對棒”。

      大家一起氧化吧

      下面以創(chuàng)建一個讀取GenBank文件的程序的步驟為例,探索Rust語言的一些功能。
      · 訪問www.rust-lang.org/learn/get-started安裝Rust
      · 從GitHub上復(fù)制代碼https://github.com/jperkel/gb_read
      · 在命令行中執(zhí)行“cargo run”以下載外部依賴,并編譯程序。程序的默認(rèn)設(shè)置是讀取GitHub代碼庫中的GenBank文件“nc_005816.gb”,但是你可以通過“cargo run <文件名>”選擇讀取其他文件。
      · 使用“cargo test”運行代碼庫里面的測試。
      · 使用“cargo doc --open”創(chuàng)建并閱讀文檔。
      流行的開發(fā)環(huán)境中也有 Rust 的插件,例如微軟的 Visual Studio Code 和 JetBrains 的 IntelliJ。還有一個在線的 Rust Playground,允許實時在線實驗 Rust 代碼。住在悉尼的 David Lattimore 在 Jupyter 計算筆記本里面創(chuàng)建了一個 Rust 的內(nèi)核,以及一個類似于 Python 的交互式環(huán)境REPL。

      Rust 程序員的另外一大助力是它的第三方軟件包(Rust管它叫“crate”)生態(tài)系統(tǒng),目前已經(jīng)有了 5 萬多個(見下文“Rust越來越火”)。軟件包封裝了例如生物信息學(xué)(K?sterd的Rust-Bio)、地理科學(xué)(Geo-Rust項目)、數(shù)學(xué)(nalgebra)等學(xué)科的算法。不過,Nichols 說,“要是你想要的庫沒有 Rust 版本,那就是 Rust 的大劣勢了?!碑?dāng)然,程序員有時候還是可以使用 Rust 的“外部函數(shù)接口”來搭一座橋。

      來源:http://www.

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多