
集 Python、C、R、Ruby 之所長,動態(tài)編程語言 Julia 1.0 正式發(fā)布
動態(tài)編程語言 Julia 迎來了 1.0 正式版本,下載地址:
https://julialang.org/downloads/
Julia 可以看作是一門集眾家之所長的編程語言,在首次公開時開發(fā)團隊就已明確其需求:
我們想要一種擁有自由許可的開源語言,同時擁有 C 的速度和 Ruby 的靈活。我們想要一種同像性語言,有像 Lisp 這樣真正的宏,也有像 Matlab 這樣的淺顯熟悉的數(shù)學符號。我們想要一門像 Python 一樣可用于通用編程,像 R 一樣易于統(tǒng)計,像 Perl 一樣自然地用于字符串處理,像 Matlab 一樣強大的線性代數(shù),像 shell 一樣擅長將程序粘合在一起的語言。它簡單易學,卻能讓嚴苛的黑客為之傾心。我們希望它是交互式的,具備可編譯性。
開發(fā)團隊表示,圍繞這一語言,一個充滿活力的社區(qū)已蓬勃發(fā)展起來,為實現(xiàn)同一目標,來自世界各地的開發(fā)者們不斷地重塑并精煉 Julia 。超過 700 人對 Julia 做出了實質(zhì)性貢獻,還有更多的人數(shù)以千計的令人驚嘆的 Julia 開源包??傊?,我們構(gòu)建了這樣一種語言:
快速:Julia 為高性能而生。Julia 程序通過 LLVM 為多個平臺編譯高效本地代碼。
通用:它使用多分派(multiple dispatch)作為范例,使得表達許多面向?qū)ο蠛秃瘮?shù)式編程模式變得容易。標準庫提供異步 I / O 、進程控制、日志記錄、性能分析、包管理器等。
動態(tài):Julia 是動態(tài)編程語言,與腳本語言相似,并且對交互式使用有很好的支持。
專業(yè):它擅長于數(shù)值計算,其語法非常適合數(shù)學,支持多種數(shù)字數(shù)據(jù)類型,和開箱即用的并行性。Julia 的多分派非常適合定義數(shù)字和數(shù)組類型的數(shù)據(jù)類型。
(可選)多樣:Julia 具有豐富的描述性數(shù)據(jù)類型,類型聲明可用于闡明和鞏固程序。
可組合:Julia 的包可以很好地協(xié)同工作。單位數(shù)量的矩陣,或貨幣和顏色的數(shù)據(jù)表列都可以組合工作 - 并具有良好的性能。
想要嘗試 1.0 的用戶,如果是從 Julia 0.6 或更早版本升級代碼,建議先使用 0.7 過渡版。0.7 版本包括棄用警告,可以幫助指導你完成升級過程。等到你的代碼不再出現(xiàn)警告,就可以直接升級至 1.0 而不會產(chǎn)生任何功能性更改。已注冊的軟件包也正在利用 0.7 的過渡期發(fā)布 1.0 兼容的更新。
當然,Julia 1.0 中最重要的一個新特性是對語言 API 穩(wěn)定性的承諾:你為 Julia 1.0 編寫的代碼將可以繼續(xù)在 Julia 1.1、1.2 等版本中運行。語言是“完全成熟的”,核心語言開發(fā)者和社區(qū)都可以專注于基于這個堅實的基礎去構(gòu)建軟件包、工具和新特性。
Julia 1.0 不僅僅涉及穩(wěn)定性,還引入了一些新的、強大的和創(chuàng)新的語言功能。自 0.6 版本以來的一些新特性包括:
全新的內(nèi)置包管理器帶來了巨大的性能改進,使包及其依賴項安裝變得前所未有的簡單。它還支持 per-project 的包環(huán)境,并記錄工作應用的確切狀態(tài),以便與他人共享 - 以及你未來的項目。此外,還引入了對私有包和包存儲庫的無縫支持。你可以使用與開源軟件包生態(tài)系統(tǒng)相同的工具來安裝和管理私有軟件包。
Julia 有一個新的缺失值表示規(guī)范。能夠表示和處理缺失的數(shù)據(jù)是統(tǒng)計和數(shù)據(jù)科學的基礎。采用典型的 Julian 方式,新的解決方案具有通用性、可組合性和高性能。任何泛型集合類型都可以通過允許元素包含預定義值來有效地支持缺失值 missing 。在之前的 Julia 版本中,這種“統(tǒng)一類型化”集合的性能會太慢,但隨著編譯器的改進允許 Julia 匹配其他系統(tǒng)中自定義 C 或 C ++ 缺失數(shù)據(jù)表示的速度,同時也更加通用和靈活。
內(nèi)置 String 類型現(xiàn)在可以安全地保存任意數(shù)據(jù)。你的程序不會因為無效 Unicode 的單個丟失字節(jié)就浪費數(shù)小時或數(shù)天的時間。保留所有字符串數(shù)據(jù),同時指示哪些字符有效或無效,使你的應用程序可以安全方便地處理具有所有不可避免的瑕疵的真實數(shù)據(jù)。
廣播(broadcasting)已經(jīng)成為一種具有方便語法特性的核心語言功能 - 它現(xiàn)在比以往更強大。在 Julia 1.0 中,將廣播擴展到自定義類型并在 GPU 和其他矢量化硬件上實現(xiàn)高效優(yōu)化計算很簡單,為將來更高的性能提升鋪平了道路。
命名元數(shù)組是一種新的語言特性,它使得通過名稱有效和方便地表示和訪問數(shù)據(jù)。例如,你可以將一行數(shù)據(jù)表示為 row = (name="Julia", version=v"1.0.0", releases=8) 并使用 row.version 訪問該 version 列,其性能與不那么方便的 row[2] 相同。
點運算符現(xiàn)在可以重載,允許類型使用 obj.property 語法來獲取除 getting 和 setting 結(jié)構(gòu)字段之外的含義。這對于使用 Python 和 Java 等面向?qū)ο蟮恼Z言進行更順暢的互操作時特別有用。屬性訪問器重載還允許獲取一列數(shù)據(jù)以匹配命名元組語法的語法:你可以編寫 table.version 訪問 version 列,就像使用 row.version 訪問 version 行的字段一樣。
Julia 的優(yōu)化器在很多方面遠比下面列出來的還要更聰明,但這些亮點仍值得一提。優(yōu)化器現(xiàn)在可以通過函數(shù)調(diào)用傳播常量,從而允許比以前更好地消除無用代碼和靜態(tài)評估。編譯器在避免在長期對象周圍分配短期包裝器方面也要好得多,這使得開發(fā)者可以使用方便的高級抽象而無需降低性能成本。
現(xiàn)在始終使用與聲明相同的語法調(diào)用參數(shù)類型構(gòu)造函數(shù),這消除了語言語法中比較模糊且令人困惑的角落。
迭代協(xié)議已經(jīng)完全重新設計,以便更容易實現(xiàn)多種迭代。
作用域規(guī)則(scope rule)已經(jīng)簡化。無論命名的全局綁定是否已存在,局部作用域的結(jié)構(gòu)現(xiàn)在都是一致的。這消除了先前存在的 “soft/hard scope” 差異,并且意味著 Julia 現(xiàn)在可以始終靜態(tài)地確定變量是本地的還是全局的。
語言本身非常精簡,許多組件被拆分為“標準庫”軟件包,而不再屬于“基礎”語言的一部分。如果需要,可以導入它們(不需要安裝),但它們不再被強加給你。在未來,這也將允許標準庫獨立于 Julia 本身進行版本控制和升級,從而允許它們以更快的速度發(fā)展和改進。
對 Julia 的所有 API 進行徹底的評估,以提高一致性和可用性。許多模糊的遺留命名和低效的編程模式已被重命名或重構(gòu),以更優(yōu)雅地匹配 Julia 的功能。這使得處理集合更加一致和連貫,以確保參數(shù)排序遵循整個語言的一致標準,并在適當?shù)臅r候(更快的)將關(guān)鍵字參數(shù)整合到 API 中。
此外,圍繞 Julia 1.0 的新特性,還正在構(gòu)建許多新的外部軟件包。像是:改進數(shù)據(jù)處理和操作生態(tài)系統(tǒng),以利用新的缺失支持。
Cassette.jl 提供了一種強大的機制,可以將代碼轉(zhuǎn)換傳遞注入 Julia 的編譯器,從而實現(xiàn)事后分析和現(xiàn)有代碼的擴展。除了用于分析和調(diào)試等開發(fā)工具之外,這甚至可以實現(xiàn)機器學習任務的自動區(qū)分。
異構(gòu)體系結(jié)構(gòu)支持得到了極大的改進,并且與 Julia 編譯器的內(nèi)部結(jié)構(gòu)進一步分離。
有關(guān)更改的完整列表,可參閱:
0.7 NEWS file:
https://docs.julialang.org/en/release-0.7/NEWS/
Julia 1.0:
https://julialang.org/blog/2018/08/one-point-zero
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
訓練與驗證損失驟升:機器學習訓練中的異常診斷與解決方案 在機器學習模型訓練過程中,“損失曲線” 是反映模型學習狀態(tài)的核心指 ...
2025-09-19解析 DataHub 與 Kafka:數(shù)據(jù)生態(tài)中兩類核心工具的差異與協(xié)同 在數(shù)字化轉(zhuǎn)型加速的今天,企業(yè)對數(shù)據(jù)的需求已從 “存儲” 轉(zhuǎn)向 “ ...
2025-09-19CDA 數(shù)據(jù)分析師:讓統(tǒng)計基本概念成為業(yè)務決策的底層邏輯 統(tǒng)計基本概念是商業(yè)數(shù)據(jù)分析的 “基礎語言”—— 從描述數(shù)據(jù)分布的 “均 ...
2025-09-19CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-19SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18DSGE 模型中的 Et:理性預期算子的內(nèi)涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數(shù)據(jù)分析與統(tǒng)計學領(lǐng)域,假設檢驗是驗證研究假設、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11