2018年12月29日 星期六

Julia 學習筆記 (一) : Win10 安裝 Julia 1.0.3

前陣子同學老張分享了新興程式語言 Julia 的訊息, 我想 Python 與 NodeJS 已經很好了, 已經可解決全部會遇到的問題, 沒必要再學一個吧? 但今天在博客來找書時看到下面這本五南剛出的書 :

Julia程式設計:新世代資料科學與數值運算語言 $432


Source : 金石堂


看了簡介才知 Julia 是為資料科學而誕生的語言, 源自麻省理學院 (MIT) 應用計算實驗室的一個專案, 它是專為數值分析與科學計算而設計的語言, 很年輕, 才滿 6 歲 (發布於 2012), 已發展到 v1.0.3 版, 目前在 TIOBE 排行第 44 名, 參考 :

The Julia Programming Language
https://www.tiobe.com/tiobe-index/




Julia 的開發者都是 Matlab 的高手, 但他們希望有一個更理想的的程式語言可以應用在資料科學上, 期望它 :
  1. 像 Python 般語法簡潔 (但更快速)
  2. 像 C 語言般快速 (但更容易上手)
  3. 像 Matlab 般具備強大的線性代數運算能力 (但免費)
於是原始的三位位設計者 Jeff Bezanson, Stefan Karpinski, 以及 Viral B. Shah 在 Alan Edelman 教授的指導下從 2009 年開始著手設計這種高階高效能的程式語言, 2012 年正式公開此計畫, 並於 2014 年釋出 v0.3 版, 目前下載數已超過 200 萬. 參考維基百科 :

Julia (程式語言)
https://en.wikipedia.org/wiki/Julia_(programming_language)

Julia 的源碼寄存在 GitHub, 目前擁有 1165 個關注度 (watch) 以及 23275 顆星星 (star) :

# https://github.com/JuliaLang/julia

教學文件網址如下 :

https://docs.julialang.org/en/v1/

Julia 的運算效能令人驚豔, 來自於語言本身同時支援靜態與動態型別之故, Julia 編譯器具有型別推論 (type inference) 功能, 並根據變數之推理結果進行目的碼最佳化; 亦即 Julia 語法容許你以類似 C 的寫法明訂資料型別, 這樣編譯出來的程式碼就會跟 C 一樣快, 甚至超越 C; 反之, Julia 也容許你像 Python 那樣使用動態型別來寫程式, 那麼執行效能就會接近 Python.

在下面這篇文章中, 作者以計算費伯納西數為例比較靜態型別與動態型別寫法之效能差異, 可知若要達到像 C 那樣的高效率, 則 Julia 程式碼要盡量以靜態型別來寫才能最佳化 :

Julia (7) -- 雜談: 為什麼julia的速度可以接近C甚至更快?

另外, 在 Learning Julia (Packt 出版) 一書中則針對 Julia, Python, R, MATLAB, Go, 以及 Java 這四種語言跑 fib, quick sort 等運算的效能做了比較, 結果最佳化的 Julia 程式碼在各項計算評比出沒有一項是輸人的.

安裝 Julia 執行環境可從官網下載安裝檔 :

https://julialang.org/downloads/

我下載的是 Windows 64 位元版 julia-1.0.3-win64.exe, 約 55MB 左右. 預設是安裝在 C 碟使用者的 Local Data 下 (例如 C:\Users\tony\AppData\Local\Julia-1.0.3), 但可安裝在硬碟任何目錄中, 也可裝在隨身碟中帶著走 (Portable), 建議更改安裝路徑為 C:\Julia-1.0.3 或 D:\Julia-1.0.3 :




事實上安裝過程只是解壓縮而已, 安裝完整個 Julia 目錄約占 377 MB 左右. 點擊 Julia 捷徑會執行 bin\julia.exe 顯示 REPL 介面 (Julia 解譯器), 可以像 Python 的 IDLE 介面那樣輸入 Julia 指令進行互動式操作, 例如 :

julia> println("Hello World!")
Hello World!




更多 Julia 教學參考 khl 的 30 篇系列文章 :

科學運算和資料處理的潛力新秀--Julia語言

我想在學習 Python 資料科學的同時也與 Julia 對照, 同步比較語法與效能上之差異. 不過在 khl 的教學裡提到,  Python 的 Numpy 與 Pandas 雖然很強, 但是因為 Python 一開始並不是專為資料科學而設計的, 因此在執行效率上還不是很讓人滿意, Julia 的出現便是想彌補這方面的缺憾. 不過 Julia 太年輕了, 資源還不夠多, 所以我還是以 Python 為主要的工具, Julia 只是對照而已.

參考 :

程式語言Julia歷經6年開發,融合多語言特性終釋出1.0
# Julia vs. Python: Julia language rises for data science

沒有留言 :