在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Julia真有這么神?你做好學習一門新編程語言的準備了嗎?

DPVg_AI_era ? 來源:未知 ? 作者:李倩 ? 2018-08-13 09:53 ? 次閱讀

近年來,Julia 語言已然成為編程界的新寵。這門由 MIT CSAIL 實驗室開發的編程語言結合了 C 語言的速度、Ruby 的靈活、Python 的通用性,以及其他各種語言的優勢于一身,并且具有開源、簡單易掌握的特點,大有潛力成為取代 Python 的下一個語言。

8 日,Julia 正式發布 1.0 版本。Julia 團隊表示:“Julia 1.0 版本是我們為如饑似渴的程序員構建一種全新語言數十年來工作成果的巔峰。” 那么問題來了,Julia 真有這么神?你做好學習一門新編程語言的準備了嗎?

為什么你應該學習 Julia?

從 2012 年到現在,Julia 1.0 在編程界已經打出了自己的一片 “小天地”。截至發稿前,Julia 在 Github 上已經獲得了 12293 顆星星,TOIBE8 月份編程語言排行榜上已迅速攀升至第 50 名。

Julia 之所以這么受歡迎,這與它解決了工程師們一個 “坑爹” 問題有關:工程師們為了在數據分析中獲得速度和易用性,不得不首先用一種語言編碼,然后用另一種語言重寫,即很多人口中的“雙語言問題”。

與其他語言相比,Julia 易于使用,大幅減少了需要寫的代碼行數;并且能夠很容易地部署于云容器,有更多的工具包和庫,并且結合了多種語言的優勢。據 Julia Computing 的宣傳,在七項基礎算法的測試中,Julia 比 Python 快 20 倍,比 R 快 100 倍,比 Matlab 快 93 倍。

目前 Julia 的應用范圍已經非常廣泛了,可以用于天文圖像分析、自動駕駛汽車、機器人和 3D 打印機、精準醫療、增強現實、基因組學和風險管理等領域。

兩年前,諾貝爾經濟學獎得主 Thomas Sargent 和澳大利亞國立大學的經濟學教授 John Stachurski,共同建議紐約聯邦儲備銀行把其用于市場走勢預測和政策分析的 “動態隨機一般均衡模型(DSGE)” 轉到 Julia 語言平臺。在項目第一階段后,他們發現,Julia 把模型運行時間縮短至原先 Matlab 代碼的十分之一到四分之三。

除了語言本身的優點,Julia 還擁有非常強大的生態系統,主要應用于數據可視化、通用計算、數據科學、機器學習、科學領域、并行計算六大領域。

Julia 在規模化機器學習領域為深度學習、機器學習和 AI 提供了強大的工具(Flux 和 Knet)。Julia 的數學語法使其成為表達算法的理想方式,支持構建具有自動差異的可訓練模型,支持 GPU 加速和處理數 TB 的數據。Julia 豐富的機器學習生態系統還提供監督學習算法(如回歸、決策樹)、無監督學習算法(如聚類)、貝葉斯網絡和馬爾可夫鏈蒙特卡羅包等。

Julia 目前下載量已經達到了200 萬次,Julia 社區開發了超過1900 多個擴展包。這些擴展包包含各種各樣的數學庫、數學運算工具和用于通用計算的庫。除此之外,Julia 語言還可以輕松使用 Python、R、C/C++Java 中的庫,這極大地擴展了 Julia 語言的使用范圍。

所以說,Julia 火起來不是沒有原因的,而最新發布的 1.0 版本又添加了很多新功能。

按例,先貼上新版本相關鏈接:

Julia 1.0 試用版鏈接:

https://julialang.org/downloads/

GitHub 地址:https://github.com/JuliaLang/julia

目前支持 Julia 的平臺:

Julia 到底是怎樣一門語言?

Julia 首次公開面世時便體現出該社區對語言的一些強烈要求:

我們想要一種擁有自由許可的開源語言。我們想要它擁有 C 的速度與 Ruby 的靈活。它要容易理解,像 Lisp 一樣真正地支持宏,但也要有像 Matlab 一樣的明顯、熟悉的數學符號。它還要像 Python 一樣可用于通用編程,像 R 一樣易于統計,像 Perl 一樣可自然地用于字符串處理,像 Matlab 一樣擅長線性代數,像 shell 一樣擅長將程序粘合在一起。總之,它既要簡單易學,但也要讓最嚴肅的黑客開心。我們既希望它是交互式,也希望它是可編譯的。

現在,一個充滿活力和蓬勃發展的社區圍繞著這種語言成長起來,來自世界各地的人們在追求這一目標的過程中不斷地精煉并重塑著 Julia。超過 700 人為 Julia 做出了貢獻,還有很多人制作了數以千計的令人驚嘆的開源 Julia 軟件包。

總而言之,我們建立的語言:

快速:Julia 就是為高性能而設計的。Julia 程序通過 LLVM 編譯為多個平臺的高效本機代碼。

通用:它使用多個調度作為范例,使得它很容易表達眾多面向對象和函數編程的模式。它的標準庫提供異步 I / O、進程控制、日志記錄、概要分析、軟件包管理器等。

動態:Julia 是動態類型的,就像一種腳本語言,并且很好地支持交互式使用。

技術:它擅長于數值計算,其語法非常適合數學,支持的數字數據類型眾多,并具有開箱即用并行性。Julia 的多次調度非常適合定義數字和數組類型的數據類型。

(可選)鍵入:Julia 具有豐富的描述性數據類型語言,類型聲明可用于闡明和鞏固程序。

可組合:Julia 的軟件包可以很好地協同工作。單位數量矩陣,貨幣和顏色數據表都可以進行,并且性能良好。

如果你要從 Julia 0.6 或更早版本升級代碼,我們建議首先使用過渡版 0.7,其中包括棄用警告幫助指導完成升級。如果你的代碼沒有警告,則可以更改為 1.0 而無需任何功能更改。已注冊的軟件包正在使用該過渡版本發布 1.0 兼容的更新。

1.0 更新了哪些功能?

當然,Julia 1.0 中最重要的一個新功能是對語言 API 穩定性的承諾:你為 Julia 1.0 編寫的代碼可以繼續在 Julia 1.1、1.2 等版本中運行。該語言是 “已完善” 的,核心語言開發人員和社區都可以放心使用基于此版本的軟件包、工具和新功能。

但 Julia 1.0 更新的不僅是穩定性,它還引入了一些強大、創新的語言功能。自 0.6 版以來,新發布的一些功能包括:

全新的內置軟件包管理器性能得以大幅改進,使安裝包及其 dependencies 項變得前所未有的簡單。它還支持每個項目的包環境,并記錄工作應用程序的確切狀態,以便與他人和你自己進行共享。最后,新的設計還引入了對私有包和包存儲庫的無縫支持。你可以使用與開源軟件包生態系統相同的工具來安裝和管理私有軟件包。JuliaCon 上展示了新功能設計的詳細情況:

https://www.youtube.com/watch?v=GBi__3nF-rM

Julia 有了一個新的規范表示缺失值(https://julialang.org/blog/2018/06/missing)。能夠表示和處理缺失的數據是統計和數據科學的基礎。與 Julian 的一貫風格相符,這個新的解決方案具有通用性、可組合性和高性能。任何泛型集合類型都可以通過讓元素包含 missing 的預定義值來有效地支持缺失值。在以前的 Julia 版本中,這種 “聯合類型” 集合的性能會太慢,但編譯器的改進現在使得 Julia 可以跟上其他系統中自定義 C 或 C ++ 缺失數據表示的速度,同時也更加通用和靈活。

內置的 String 類型現在可以安全地保存任意數據。你的程序數小時甚至數天的工作不再會因為一些無效 Unicode 雜亂字節而失敗。保留所有字符串數據,同時標記哪些字符有效或無效,可以使你的應用程序安全方便地處理不可避免具有缺陷的真實數據。

語法簡單的廣播(Broadcasting)已經成為核心語言功能,現在它比以往任何時候功能都更強大。在 Julia 1.0 中,將廣播擴展到自定義類型并在 GPU 和其他矢量化硬件上實現高效優化計算變得更簡單,為將來提高性能提升鋪平了道路。

命名元組是一種新的語言特性,它使得通過名稱表示和訪問數據變得高效快捷。例如,你可以將一行數據表示為 row =(name =“Julia”,version = v“1.0.0”,releases = 8),并將版本列作為 row.version 訪問,其性能與不甚快捷的 row [2] 相同。

點運算符現在可以重載,讓類型使用 obj.property 語法來獲取和設置結構字段之外的含義。這對于使用 Python 和 Java 等基于類的語言更順暢地進行互操作是個福音。屬性訪問器重載還允許獲取一列數據以匹配命名元組語法的語法:你可以編寫 table.version 來訪問表的 version 列,就像 row.version 訪問單行的 version 字段一樣。

Julia 的優化器在很多方面變得比我們在這里提到的更聰明,但有一些亮點值得一提。優化器現在可以通過函數調用傳播常量,可以更好地做到死碼消除和靜態評估。另外,編譯器在避免在長生命周期對象周圍分配短期包裝器方面也要好得多,這使得程序員可以使用便利的高級抽象而無需降低性能成本。

現在使用聲明相同的語法調用參數類型構造函數。這消除了語言語法的模糊和令人困惑的地方。

迭代協議已經完全重新設計,以便更容易實現多種迭代。現在是一對一定義一個或兩個參數方法,而不是定義三個不同泛型函數的方法——start,next,和 done。這通常使得使用具有開始狀態的默認值的單個定義可以更方便地定義迭代。更重要的是,一旦發現無法生成值就可以部署迭代器。這些迭代器在 I / O、網絡和生產者 / 消費者模式中無處不在;Julia 現在可以用簡單直接的方式表達這些迭代器。

范圍規則簡化。無論名稱的全局綁定是否已存在,引入本地范圍的構造現在都是一致的。這消除了先前存在的 “軟 / 硬范圍” 區別,并且意味著現在 Julia 可以始終靜態地確定變量是本地的還是全局的。

語言本身非常精簡,許多組件被拆分為 “標準庫” 軟件包,這些軟件包隨 Julia 一起提供但不屬于 “基礎” 語言。如果你需要它們,它可以給你方便(不需要安裝),但不會被強加給你。在未來,這也將允許標準庫獨立于 Julia 本身進行版本控制和升級,從而允許它們以更快的速度發展和改進。

我們對 Julia 的所有 API 進行了徹底的審查,以提高一致性和可用性。許多模糊的遺留名稱和低效的編程模式已被重命名或重構,以更優雅地匹配 Julia 的功能。這促使使用集合更加一致和連貫,以確保參數排序遵循整個語言的一致標準,并在適當的時候將(現在更快)關鍵字參數合并到 API 中。

圍繞 Julia 1.0 新功能的新外部包正在構建中。例如:

正在改進數據處理和操縱生態系統,以利用新的缺失支持

Cassette.jl(https://github.com/jrevels/Cassette.jl)提供了一種強大的機制,可以將代碼轉換傳遞注入 Julia 的編譯器,從而實現事后分析和現有代碼的擴展。除了用于分析和調試等程序員的工具之外,甚至可以實現機器學習任務的自動區分。

異構體系結構支持得到了極大的改進,并且與 Julia 編譯器的內部結構進一步分離。英特爾 KNL 只能用 Julia 工作。Nvidia GPU 使用 CUDANative.jl(https://github.com/JuliaGPU/CUDAnative.jl)軟件包進行編程,Google TPU 的端口正在開發中。

另外,Julia 1.0 還有無數其他大大小小的改進。有關更改的完整列表,請參閱文件:https://docs.julialang.org/en/release-0.7/NEWS/。

在 2012 年的文章《為什么我們創造 Julia》這篇博客文章中(https://julialang.org/blog/2012/02/why-we-created-julia),我們寫道:

它不完整,但現在是 1.0 發布的時候——我們創建的語言叫做 Julia。

現在,我們提前叩響了 1.0 版本發布的扳機,但它發布的時刻已然到來。真誠地為這些年來為這門現代化編程語言做出貢獻的人們感到驕傲。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140735
  • 編程語言
    +關注

    關注

    10

    文章

    1955

    瀏覽量

    36275
  • 機器學習
    +關注

    關注

    66

    文章

    8497

    瀏覽量

    134222

原文標題:Python、C++、R 三位一體!Julia 1.0 重磅發布

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    所以做出來了嗎

    所以做出來了嗎,求
    發表于 06-16 01:43

    跟老齊學Python:從入門到精通

    礎的學習者介紹一門時下比較流行、并且用途比較廣泛的編程語言,所以,本書讀起來不晦澀,并且在其中穿插了很多貌似與Python 編程無關,但與
    發表于 06-03 16:10

    gitee 支持的編程語言有哪些

    Gitee(碼云)是個基于 Git 的代碼托管和研發協作平臺,類似于 GitHub 和 GitLab。它支持多種編程語言,允許開發者托管和管理代碼,進行版本控制,以及協作開發。以下是
    的頭像 發表于 01-06 09:50 ?602次閱讀

    Triton編譯器支持的編程語言

    編寫和優化深度學習代碼。Python是種廣泛使用的高級編程語言,具有簡潔易讀、易于上手、庫豐富等特點,非常適合用于深度學習應用的開發。 二
    的頭像 發表于 12-24 17:33 ?906次閱讀

    如何選擇適合自己的編程語言

    步。 1. 確定目標和興趣 在選擇編程語言之前,首先要明確自己的目標和興趣。這包括你想要開發什么類型的項目,以及對哪些技術領域感興趣。例如,如果對網頁開發感興趣,那么
    的頭像 發表于 11-15 09:37 ?1814次閱讀

    編程語言的誤區與常見問題

    : 選擇編程語言時,應考慮項目需求、個人興趣以及語言的適用性。例如,如果對Web開發感興趣,那么學習JavaScript可能是
    的頭像 發表于 11-15 09:35 ?688次閱讀

    NPU支持的編程語言有哪些

    NPU(Neural Processing Unit)是種專門為深度學習和人工智能應用設計的處理器。NPU支持的編程語言通常與它所集成的平臺或框架緊密相關。以下是
    的頭像 發表于 11-15 09:21 ?1825次閱讀

    Orin芯片的編程語言支持

    Orin是款高度集成、高性能的車載計算平臺,由英偉達推出,并采用了英偉達自家的Volta架構GPU和其他高級處理器技術。關于Orin芯片的編程語言支持,可以從以下幾個方面進行介紹:
    的頭像 發表于 10-27 16:45 ?916次閱讀

    C++能不能讓編譯器自動推導變量類型嗎

    隨著計算機性能的持續提升,編程語言似乎迎來了次大爆發,各種編程語言不斷出現,樂意折騰的人總能找到一門
    的頭像 發表于 10-24 17:22 ?2275次閱讀

    CNC系統般可用幾種編程語言

    :NCL語言具有良好的靈活性,可以根據實際需求進行擴展。  易于學習:NCL語言的語法簡單,易于學習和使用。  CANUC  CANUC是
    的頭像 發表于 10-23 15:52 ?1365次閱讀

    嵌入式學習建議

    只了解幾個必要的語句,而直接使用c語言編程。但必須通過第個程序理解芯片初始化過程、中斷機制、程序存儲情況等,區別于PC機程序的內容。另外,為了測試的需要,最好掌握一門PC機
    發表于 10-22 11:41

    plc編程語言編程相關技巧有哪些

    PLC(可編程邏輯控制器)編程語言及相關編程技巧是工業自動化領域中不可或缺的知識。 、PLC編程
    的頭像 發表于 10-21 16:56 ?1010次閱讀

    如何學習ARM?

    、寄存器、內存管理單元(MMU)、中斷控制器等方面的知識。 3.學習編程語言和工具: 掌握一門與 ARM 處理器兼容的編程
    發表于 10-11 10:42

    名單公布!【書籍評測活動NO.39】倉頡編程快速上手 | 開發者的第個倉頡語言程序

    些特性 倉頡編程語言的定位,是面向全場景應用開發的現代編程語言,力圖在開發體驗、語言特性、程序性能之間取得最佳平衡。倉頡非常適合用來實現業務
    發表于 07-24 17:01

    按照這樣學習C語言,成為卷王不是夢!

    在計算機編程領域,C語言被譽為種強大而靈活的編程語言,掌握好C語言不僅可以讓
    的頭像 發表于 07-06 08:04 ?588次閱讀
    按照這樣<b class='flag-5'>學習</b>C<b class='flag-5'>語言</b>,成為卷王不是夢!
    主站蜘蛛池模板: 一级精品视频 | 伊人网视频 | 亚洲韩国日本欧美一区二区三区 | 日韩欧美伦理 | 一级片aaaa| 国产成人a一区二区 | 天天射天天操天天 | 四虎国产精品永久在线网址 | 视频网站黄 | 国产紧缚jvid | 日本一区二区三区在线观看视频 | 国产精品视频网站你懂得 | 国产在线观看午夜不卡 | 日日天天干 | 欧美宗合网 | 久草五月| 特级aaa片毛片免费观看 | 亚洲精品成人a在线观看 | 色视频在线播放 | 拍真实国产伦偷精品 | 人人爱人人爽 | 欧美jizzhd精品欧美4k | 亚州色吧 | 婷婷久久综合网 | 77米奇影院 | 在线观看黄网 | 日本丶国产丶欧美色综合 | 在线资源网 | 亚洲香蕉影视在线播放 | 成人黄色免费 | 一级片黄色免费 | 特黄特色的视频免费播放 | 国产色丁香久久综合 | 黄色三级网站免费 | 四虎在线最新地址公告 | 一级毛片看真人在线视频 | bt种子在线www天堂官网 | 国产69精品久久 | 三级高清 | 国内色综合精品视频在线 | 丝袜美腿一区 |