2020年Julia开发者 【问卷调查】
眾所期待的 Julia 語言 1.0 版是近十年的心血結晶。 在 JuliaCon 2018 年會上,Julia 社群歡慶並共同正式地將該版本 升級為 1.0.0。
Julia 語言 第一次公開發佈 並有不少強烈的期待:
我們想要一個開源的語言,擁有自由的版權。我們想要 C 的速度和 Ruby 的動態。我們想要有一個語法與內在表示有一致性(homoiconic)的語言, 並且像 Lisp 一樣擁有真的 macro,但是擁有像 Matlab 一樣熟悉好懂的數學符號。我們也想要像 Python 一樣好用的泛用型程式語言, 處理統計要和 R 一樣,處理字串要和 Perl 一樣地自然,要有和 Matlab 一樣強大的線性代數功能,串接程式要如同 shell 一樣好用。 要學習的東西極致簡單,同時能讓大多數嚴苛的黑客寫起來開心。我們希望它是互動式的而且也是可編譯的。
一個充滿活力和繁榮的社群圍繞著這樣的語言成長起來,來自世界各地的人們都在為了這個目標而努力不懈地改進和塑造 Julia。 超過 700 人對 Julia 做出了貢獻,更多人創造了上千的開源的 Julia 套件。總而言之,我們創造了這樣一種語言:
現在可以 下載 Julia 1.0 版本 來試試 Julia。 如果你現在從 Julia 0.6 或者更早的版本開始升級程式碼,我們建議你先使用過渡的 0.7 版本, 其中包括了棄用警告(deprecation warning)來指導你升級的過程。一旦你的程式碼無警告通過, 那麼你可以無痛將程式碼更改為 1.0 版本。 已註冊過的套件可以利用這個來作為墊腳石並發布與 1.0 相容的版本更新。
當然,在 Julia 1.0 版本中一個最重要的新特性是對語言 API 穩定性的保證:你為 Julia 1.0 撰寫的程式碼將可以繼續在 Julia 1.1、1.2 中執行。這種語言是 足夠成熟的。基於這樣的一個穩固的基礎, 核心語言的開發者和社群都可以集中於第三方套件,工具,和新特性的開發上。
但是 Julia 1.0 並不只意味著穩定,它也引入一些新的、強大的以及新穎的語言特性。其中一些新的特性是 0.6 版就有的:
missing
變數來有效支援遺失值。而這種集合型別的效能在過去的 Julia 版本里可能會很慢,但是現在編譯器已經
可以使得 Julia 在遺失值的表示上達到類似 C 或者 C++ 的速度,然而遠比 C 或者 C++ 更廣義和靈活。String
型別可以安全地使用並且處理任意的資料。你的程式不會因為一個無效 Unicode 字元而壞掉好幾個小時或者好幾天。
所有的字串資料會保留,同時指出哪些字元是有效的,哪些是無效的,這樣允許你的應用程式安全而方便地執行在不可避免缺陷的真實世界的資料中。row = (name="Julia", version=v"1.0.0", releases=8)
並且透過 row.version
存取 version
資料,而這和
row[2]
有著同樣的效能,卻更加方便。obj.property
的方式來存取物件資訊,而不是用額外撰寫欄位 setting 和 getting function 的方式。
這有助於將以類別為基礎的語言例如 Python 和 Java 更加流暢地翻譯到 Julia。屬性存取器的重載讓存取一行資料與 named tuples 的存取語法一致:你可以寫 table.version
來獲取表格中的 version
這一行,就如同 row.version
會取得
version
這一列的這個欄位一樣。start
、next
、done
。現在只需定義一個參數
和兩個參數的 iterate
函式即可。這允許我們可以簡單地定義一個帶有預設值的函式來給出一個初始值。更重要的是,這也實現了一個只有在嘗試回傳失敗之後就結束的迭代器。這種迭代器可以非常普遍使用在 I/O、網絡和生產者-消費者模型中;而 Julia 現在
可以更直接和正確地撰寫這樣的迭代器。我們仔細地審查了 Julia 的 API,並且提高了它的一致性和可用性。很多費解的命名和低效的實作都被重新命名和重構, 能夠更優雅地發揮 Julia 的能力。這樣的改變促使集合的使用方式更加一致和連貫。確保在整個語言中遵循一致的參數的順序, 並且將關鍵字參數(現在更快了)整合到了 API 中。
還有無數個大大小小的改善。你可以查看 0.7 NEWS 文件 當中的完整的更新。 在我們 2012 年的 “為什麼我們創造 Julia” 文章 裡,我們寫到:
它還沒有完工,但是是時候發布一個 1.0 版本了(其實歷時 6 年才發布)—— 我們創造了一個語言叫做 Julia。
雖然對於 1.0 的發布我們放了大家好幾次鴿子,但是這一次我們終於正式發布了。 我們真心為上千位以各種形式貢獻給這個真正的數值計算和泛用程式設計的現代語言的人感到自豪和無比欣喜。