顯示具有 Julia 標籤的文章。 顯示所有文章
顯示具有 Julia 標籤的文章。 顯示所有文章

2022年10月25日 星期二

安裝 Julia 1.8.2

最近看到辦公桌書架上於 2020 年買的歐萊里 'Think Julia' 這本書, 兩年來只看了前兩章就打住了, 因為光是 Python 要學的東西就很多. 但書買來沒看太可惜, 所以打算利用零散時間加減看, 順便與 Numpy/Pandas 做對照, 此書篇幅不大, 用滴水穿石方法總有看完的時候. 

到官網下載最新版 Julia 發現已升至 1.8.2, 兩年前在筆電安裝時才 1.0.3 而已. 下載檔案大小約 85 GB, 一鍵安裝即可 :







記得要勾選 'Add Julia to PATH', 這樣就可以在 MS-DOS 視窗直接輸入 julia 進入解譯器視窗 : 




也可以從開始啟動 Julia :





也可以使用線上解譯器 Juliabox :

2021年1月14日 星期四

免費線性代數電子書 : Introduction to Applied Linear Algebra-Vectors, Matrices, and Least Squares

二哥這學期三電一工全上, 應付起來很吃力, 下學期要修線性代數, 前幾天說寒假要先看才行. 除了叫他問學長用哪本課本外, 我也幫他在市圖找適合的書, 其實我自己也想要重讀, 因為以前在學校時這門課學得有點糟, 而機器學習裡面都是線性代數的應用.

今天在網路上找到一本史丹福與加州大學採用的線性代數教科書, 作者為史丹福大學電機系主任 Stephen P. Boyd 與加州大學洛杉磯分校數學系教授 Lieven Vandenberghe, 此書獲得出版商劍橋大學出版社首肯開放為免費電子書, 下載網址 :


史丹福大學 ENGR108 線性代數課程網站裡有這兩位教授的授課投影片以及他們為此課程編寫的 Julia 與 Python 程式語言教材可下載 :


參考 : 


2020年2月20日 星期四

明儀買書兩本 (Julia 與 Python)

昨天上 momo 網站看到一本 "增壓的 Python" 有 71 折優惠, 本想一起買上回想買的 "Think Julia", 但這本歐來禮的書只打 79 折, 想說去明儀看看再決定. 今天下班去市圖取書順路進去明儀逛, 店員說歐來禮的書 VIP 現金 75 折, 就乾脆在明儀買了下面兩本 :

# 如何像電腦科學家一樣思考 Think Julia


Source : 博客來


Python 金融分析(第二版)


Source : 博客來


我是特地回家找到上回體育活動抽到的首獎 2000 元獎金拿去買的, 這樣比較有中獎的感覺.

2020年2月14日 星期五

7 本學習 Julia 的免費好書

今天在 momo 看到 "Think Julia" 這本書 :

Think Julia|如何像電腦科學家一樣思考


Source : 博客來


我剛跟 momo 買書卻沒看到, 總價低於 500 需運費, 所以等下回了. 

其實此書作者有將內容放在 GitHub 上, 英文 OK 的人有福了 :

https://benlauwens.github.io/ThinkJulia.jl/latest/book.html

此書也名列 7 本免費 Julia 電子書之首 :

7 Excellent Free Books to Learn Julia

Julia 目前已更新至 1.3.1 版, 參考官網 :

https://julialang.org/downloads/

2019年10月16日 星期三

好書 : Data Science with Julia

今天在天瓏找到一本 Julia 資料科學新書 (2019) :

# Data Science with Julia (Paul D, CRC 出版)


Source : 天瓏


作者 Paul D. McNicholas 是加拿大名校 McMaster 大學數學與統計系教授,
Julia 是我密切關注與追蹤的程式語言之首, 目前已更新至 1.2 版.

2019年3月5日 星期二

常用程式語言的比較 (一) : 註解

會想到整理常用程式語言的比較是因為最近看到幾本 Java 的書, 幾年前接觸 Python 後就把 Java 拋棄了, 主要是因為母公司 Sun 被 Oracle 買去, 而我非常厭惡 Oracle 的老闆 Larry Ellison. 其次是 Java 到第七版之後 (我用不到的) 功能越來越多, 體型也越趨龐大, 比起 Python 可說是龐然大物, 而且程式要經過編譯不似 Python 隨寫隨跑那般輕盈好用.

但這幾天反思, 以前花了那麼多時間學習 Java 如今卻輕易拋棄實在可惜. 隨著學習的語言越來越多, 語言干擾現象無可避免, 不如利用比較語法的方式做個複習整理, 恢復一些 Java 功力. 以前學每個語言是縱深求精, 比較語言差異則是橫斷求廣.

我學過的程式語言有 Javascript, Java, PHP, Python, Lua (淺嚐), 正在學習的有 R, C, Julia, 以及 Go 語言. 程式語言的語法結構其實差異不大, 該有的功能幾乎每家都有, 只是支援的資料型態不同, 寫法與效能不同, 好用度不同而已. 本篇首先來比較各語言的註解方式, 各家的註解語法整理如下表 :

 程式語言 單行註解 多行註解
 Python #這是單行註解 '''
 這是多行註解
 '''
 Javascript //這是單行註解    /*
 這是多行註解
 */
 Java //這是單行註解 /*
 這是多行註解
 */
 PHP //這是單行註解  /*
 這是多行註解
 */
 R //這是單行註解 
 C  //這是單行註解 /*
 這是多行註解
 */
 GO //這是單行註解 /*
 這是多行註解
 */
 Julia  #這是單行註解 
 Lua --這是單行註解 --[[
 這是多行註解
 ]]

可見 R 與 Julia 都沒有多行註解語法, 而 Java/Javascript/PHP/C/GO 等泛 C 族語言的註解語法相同. Python 與 Lua 則獨樹一幟與眾不同.

2019年2月27日 星期三

線上 Julia 編譯器 Juliabox

今天在 "Beginning Julia Programming (Apress)" 這本書裡看到作者介紹了 線上 Julia 編譯器 Juliabox, 這是 Julia 語言三位創辦人 Jeff Bezanson, Stefan Karpinski 與 Viral B. Shah 教授出來開的雲端計算公司-Julia Computing 所提供的計算服務, 對於一般計算有免費方案, 學術研究則有五折優惠, 參見官網下方的 "Subscription Models" :

https://www.juliabox.com/




可見免費客戶享有最多 3 核心 CPU, 2GB 硬碟, 12GB DRAM, 90 分鐘連線時間的運算環境, 對初學者或小型專案應該綽綽有餘. 不足可購買付費方案, 但目前不論哪個方案都尚未提供 GPU 資源 (即將提供).

首先按官網右上方的 Login 按鈕登入系統, 我採用註冊 E-mail 方式 :





輸入 email 按 Register 鈕註冊, 它會發出認證信函到信箱, 點信中的認證超連結會顯示密碼設定頁面, 設定後即完成註冊 :


點 "Log in" 超連結輸入帳密會詢問是否同意隱私權協約, 勾選同意後會出現用戶資訊填寫頁面 (必填), 完成後即登入 Dashboard 頁面 :





按 "Launch" 鈕即進入檔案系統, 在 Tutorials 目錄下有教學文件可參考 :




按右上角的 "New" 按鈕即開啟 Jupyter 介面, 可開始輸入 Julia 指令, 例如輸入 versioninfo() 顯示目前執行環境的版本 :




可見目前版本是 Julia 1.0.3, 跑在 2.3GHz, Linux 64 位元的機器上. 這樣只要能連上 Internet 就可以測試學習 Julia 了, 不需要在本機安裝編譯器與套件.




基本語法測試 OK.



矩陣運算測試 OK.

Julia 語言創建者獲頒 2019 年威爾金森獎

Julia 語言的三位創建者,MIT Julia 實驗室的 Jeff Bezanson, Stefan Karpinski Viral B. Shah 教授共同獲得 2019 年的 Wilkinson 獎 (每四年頒發一次),以表彰他們在科學計算領域的貢獻。

Wilkinson 獎是為了紀念 1986  年辭世的英國數學家 James H. Wilkinson 在數值分析領域的卓越成就而設立。James H. Wilkinson 在二戰時期曾協助圖靈設計計算機,是1970 年馮紐曼獎與圖靈獎得獎人,曾任英國皇家學會院士,獲頒劍橋名譽博士,並曾于史丹佛擔任客座教授。參考 :

Julia language co-creators win James H. Wilkinson Prize for Numerical Software

2019年1月30日 星期三

好站 : 點評 11 種資料科學相關程式語言

科技報橘看到下面這篇 :

想當資料科學家?除了 Python 之外,你還應該要認識這 6 個資料界的超強 coding 語言

此文很有條理地比較了目前資料科學常用語言的優缺點 :
  1. R
  2. Python
  3. SQL
  4. Java
  5. Scala
  6. Julia
  7. MATLAB
  8. C++
  9. Javascript
  10. Perl
  11. Ruby
其中 Python 與 R 是目前市場上的主流, Python 勢頭這兩年更壓過 R 扶搖直上, 其主要缺陷在於動態語言所帶來的型別安全問題, 但只要小心 Coding 其實也還好. R 的問題主要是執行效能; SQL 分析能力有限且各家實作差異性大; Java 缺乏好用的統計函式庫; Scala 太難學; Julia 太年輕資源不足; MATLAB 要錢; C++ 生產力太低; Javascript 的 Node 也是太年輕; Perl 是出了名的火星文; Ruby 也是起步太晚.

總之, 目前學習資料科學還是以 Python 為首選, 行有餘力學學有強大統計奧援的 R 也不錯, 另外則是密切關注 Julia 的發展.

2019年1月11日 星期五

為機器學習量身訂做的 Julia 會讓 Python 白學?

今天看到下面這篇介紹 Julia 語言的文章, 標題似乎聳動了點 :

有人要為ML定製程式語言,你的Python白學了?

此文原文 (簡體) 出處 :

有人要为ML定制编程语言,你的Python白学了?

Python 不是為機器學習而生, 效能確實未臻理想. 但一個程式語言受到歡迎並不只是它很優秀, 簡單易學與生態系的建立才是主要因素, 特別是第三方函式庫所提供的豐富應用具有疊加效應, 使得社群聲量越來越大, 第三方函式庫與社群是程式語言成功的最主要力量. 我覺得 Julia 要能建立這樣的生態系才有可能取代 Python 如今在機器學習的地位.

其次, Python 是一個通用語言, 除了網頁前端 (被 Javascript 獨佔) 外, 幾乎可用在任何領域, Julia 能嗎? 在下面這篇文章中也列舉了 Python 與 Julia 相比之優勢 :

Julia vs. Python: Julia language rises for data science

其中談到 Julia 的陣列索引是 1 起始的, 可能是為了與 Matlab 與 Mathimatica 維持一樣的用法, 但這跟 Python 與 C 的使用者習慣的 0 起始不同, 要吸引廣大的 Python 社群有點障礙. 另外雖然 Julia 社群投入者非常積極, 但與 Python 社群數量比起來還是微乎其微. 所以, Julia 可以持續關注學習, 但 Python 還是機器學習的主力.

參考 :

Julia(1) - Why Julia?

2019年1月8日 星期二

買書 : Julia資料科學應用

今天在露天看到下面這本對岸人民郵電出版的 Julia 簡體書 :

Julia資料科學應用 $329

此書是 Julia for Data Science (Zacharias Voulgaris) 的簡體翻譯版 :




這本原文書很貴, 還不如買翻譯書 :




這本書比五南出的 "Julia 程式設計" 要好, 大部分著墨在資料科學, 五南的主要是基本語法部分, 沒有包括資料科學應用.

2018年12月29日 星期六

Julia 學習筆記 (二) : 樹莓派安裝 Julia

今天在 Win10 上安裝 Julia 並做個簡單測試後, 我在想樹莓派上是否也能安裝最新版的 Julia 1.0.3 呢? 可以的, 作法跟 Windows 上一樣, 就是下載壓縮檔, 然後解壓縮就可以了, 只要用兩個指令即可 :
  1. wget https://julialang-s3.julialang.org/bin/linux/armv7l/1.0/julia-1.0.3-linux-armv7l.tar.gz  (下載)
  2. tar -xvf julia-1.0.3-linux-armv7l.tar.gz  (解壓縮)
參考 :

Try out the Raspberry Pi Model 3 B Plus! - Review

下載網址可在 Julia 官網下載頁的 ARMv7 這個超連結找到, 有 32/64 位元兩種版本, 我下載的是 32 位元版 :




pi@raspberrypi:~ $ wget https://julialang-s3.julialang.org/bin/linux/armv7l/1.0/julia-1.0.3-linux-armv7l.tar.gz
--2018-12-29 22:58:18--  https://julialang-s3.julialang.org/bin/linux/armv7l/1.0/julia-1.0.3-linux-armv7l.tar.gz
Resolving julialang-s3.julialang.org (julialang-s3.julialang.org)... 151.101.54.49, 2a04:4e42:200::561, 2a04:4e42:600::561, ...
Connecting to julialang-s3.julialang.org (julialang-s3.julialang.org)|151.101.54.49|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 78956998 (75M) [application/octet-stream]
Saving to: ‘julia-1.0.3-linux-armv7l.tar.gz’

julia-1.0.3-linux-a 100%[=====================>]  75.30M   615KB/s   in 2m 12s

2018-12-29 23:00:39 (585 KB/s) - ‘julia-1.0.3-linux-armv7l.tar.gz’ saved [78956998/78956998]

pi@raspberrypi:~ $ tar -xvf julia-1.0.3-linux-armv7l.tar.gz   

解壓縮完成後會在目前工作目錄下產生 julia-1.0.3 這個目錄, 執行檔為 /bin/julia, 執行它即可進入 REPL 介面 :

pi@raspberrypi:~ $ julia-1.0.3/bin/julia 
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.0.3 (2018-12-18)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> println("Hello World") 
Hello World

julia> exit()
pi@raspberrypi:~ $

參考 : 
Julia language for Raspberry Pi
Julia available in Raspbian on the Raspberry Pi
Playing with Julia 1.0 on the Raspberry Pi

2019-04-10 補充 :

我在下面這篇看到可用 pip3 安裝 julia :

Julia language for Raspberry Pi


pi@raspberrypi:~ $ sudo apt install julia
正在讀取套件清單... 完成
正在重建相依關係       
正在讀取狀態資料... 完成
下列的額外套件將被安裝:
  curl libamd2 libarpack2 libarpack2-dev libbtf1 libcamd2 libccolamd2
  libcholmod3 libcurl3 libcurl4-openssl-dev libcxsparse3 libdsfmt-11213-1
  libdsfmt-1279-1 libdsfmt-132049-1 libdsfmt-19937-1 libdsfmt-216091-1
  libdsfmt-2203-1 libdsfmt-4253-1 libdsfmt-44497-1 libdsfmt-521-1
  libdsfmt-86243-1 libdsfmt-dev libfftw3-bin libfftw3-dev libgmp-dev
  libgmpxx4ldbl libklu1 libldl2 libmetis5 libmpfr-dev libopenblas-base
  libopenblas-dev libopenlibm2 libopenspecfun-dev libopenspecfun1
  libpcre2-16-0 libpcre2-32-0 libpcre2-8-0 libpcre2-dev libpcre2-posix0
  librbio2 libspqr2 libsuitesparse-dev libumfpack5 patchelf
建議套件:
  libcurl4-doc libcurl3-dbg libidn11-dev libkrb5-dev libldap2-dev librtmp-dev
  libssh2-1-dev libssl1.0-dev | libssl-dev libfftw3-doc gmp-doc libgmp10-doc
  libmpfr-doc
下列【新】套件將會被安裝:
  julia libamd2 libarpack2 libarpack2-dev libbtf1 libcamd2 libccolamd2
  libcholmod3 libcurl4-openssl-dev libcxsparse3 libdsfmt-11213-1
  libdsfmt-1279-1 libdsfmt-132049-1 libdsfmt-19937-1 libdsfmt-216091-1
  libdsfmt-2203-1 libdsfmt-4253-1 libdsfmt-44497-1 libdsfmt-521-1
  libdsfmt-86243-1 libdsfmt-dev libfftw3-bin libfftw3-dev libgmp-dev
  libgmpxx4ldbl libklu1 libldl2 libmetis5 libmpfr-dev libopenblas-base
  libopenblas-dev libopenlibm2 libopenspecfun-dev libopenspecfun1
  libpcre2-16-0 libpcre2-32-0 libpcre2-8-0 libpcre2-dev libpcre2-posix0
  librbio2 libspqr2 libsuitesparse-dev libumfpack5 patchelf
下列套件將會被升級:
  curl libcurl3
升級 2 個,新安裝 44 個,移除 0 個,有 163 個未被升級。
需要下載 19.9 MB/20.4 MB 的套件檔。
此操作完成之後,會多佔用 112 MB 的磁碟空間。
是否繼續進行 [Y/n]? [Y/n] Y
下載:1 http://archive.raspberrypi.org/debian stretch/main armhf julia armhf 0.6.0-2 [11.0 MB]

..... (略)
                                     
讀取改變紀錄(changelogs)... 完成
從套件中提取樣板:100%
(讀取資料庫 ... 目前共安裝了 137724 個檔案和目錄。)

..... (略)

設定 libspqr2:armhf (1:4.5.4-1) ...
設定 libmpfr-dev:armhf (3.1.5-1) ...
設定 libumfpack5:armhf (1:4.5.4-1) ...
設定 libpcre2-dev:armhf (10.22-3) ...
設定 libsuitesparse-dev:armhf (1:4.5.4-1) ...
設定 julia (0.6.0-2) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...

安裝完畢在命令列輸入 julia 即進入 shell : 

pi@raspberrypi:~ $ julia    
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: https://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.6.0 
 _/ |\__'_|_|_|\__'_|  |
|__/                   |  arm-linux-gnueabihf


結果版本很舊, 是 v0.6.0.

# 如何更新Raspbian?
Raspberry Pi 輕鬆學
Playing with Julia 1.0 on the Raspberry Pi


2019-10-16 補充 :

目前最新版為 v1.2.0 版.

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