Julia 是一種科學計算語言,具有以下特性:
- 免費且開源 (MIT licensed)
- 使用者可定義types的方式,增加效率
- 不須為了增加效能而特別編譯程式碼,直接寫效能就已經很快
- 適用於平行運算及分布試運算
- 輕量綠色版
- 強大的types系統
- 可以優雅的對數字和其他類型進行轉換和拓展
- 支援Unicode(當然包含UTF8)
- 可以直接呼叫C的functions(不須額外加載或特定API)
- 強大的類shell功能,用於管理其他進程
- Lisp-like macros and other metaprogramming facilities
以下是學習過程的一些紀錄:
###安裝 前往官網下載安裝檔
我使用的是windows 10環境,下載Windows Self-Extracting Archive (.exe) 64-bit
下載後直接點擊安裝
接著完成後,檔案會位在 C:\Users<Username>\AppData\Local\Julia-0.5.0 檔案列表如下:
###設定windows環境變數
在windows環境變數PATH 加入 Julia路徑: C:\Users<username>\AppData\Local\Julia-0.5.0\bin
如果用JULIA_HOME,有可能會發生 ERROR: system image file “C:\Users[login]\AppData\Local\Julia-0.4.5\bin\lib\julia\sys.dll” not found` 的錯誤
加完之後,開啟cmd介面,輸入julia,應該就會看到以下畫面
_
_ _ _(_)_ | A fresh approach to technical computing
(_) | (_) (_) | Documentation: http://docs.julialang.org
_ _ _| |_ __ _ | Type "?help" for help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 0.5.0 (2016-09-19 18:14 UTC)
_/ |\__'_|_|_|\__'_| | Official http://julialang.org/ release
|__/ | x86_64-win64-mingw32
julia>
接著,試著做一些簡單運算
julia> 1+2
3
julia>ans
3
ans會重複執行最後一個算式
結束 julia cli
^代表ctrl,按 ^D 就可以跳出julia cli
###基礎應用
建立檔案並引用
建立檔案 file.jl 並且寫入計算式
####執行簡單運算 file.jl
1+2+3+4+5
在julia cli介面輸入include(“file.jl”)
julia>include("file.jl")
15
####列印出字串 使用println 列印出結果
julia>println("Greetings! 你好! 안녕하세요?")
Greetings! 你好! 안녕하세요?
####自動處理長數字串 小數點五位數以上的字串,會自動用科學計數表示
julia>0.00001
1.0e-5
####pi 直接輸入pi,就可以應用在運算中
julia> pi
π = 3.1415926535897...
julia>3*pi
9.42477796076938
sqrt 開平方
sqrt(
julia>sqrt(100)
10.0
typeof 檢查型別
typeof()可以用來檢查型別 檢查數字,輸出結果會因為電腦系統位元而有所差異 例如typeof(1)在system 32-bit 跟64-bit的輸出結果,分別為 Int32, Int64 底下是在system 64-bit執行的結果
julia>typeof(1)
Int64
數字型態
這裡要特別提到Uint 及 Int 差異 Uint表示非負的數值 Int則包含負值
Type | Signed? | Number of bits | Smallest value | Largest value |
---|---|---|---|---|
Int8 | ✓ | 8 | -2^7 | 2^7 - 1 |
UInt8 | 8 | 0 | 2^8 - 1 | |
Int16 | ✓ | 16 | -2^15 | 2^15 - 1 |
UInt16 | 16 | 0 | 2^16 - 1 | |
Int32 | ✓ | 32 | -2^31 | 2^31 - 1 |
UInt32 | 32 | 0 | 2^32 - 1 | |
Int64 | ✓ | 64 | -2^63 | 2^63 - 1 |
UInt64 | 64 | 0 | 2^64 - 1 | |
Int128 | ✓ | 128 | -2^127 | 2^127 - 1 |
UInt128 | 128 | 0 | 2^128 - 1 | |
Bool | N/A | 8 | false (0) | true (1) |
####浮點數型態
Type | Precision | Number of bits |
---|---|---|
Float16 | half | 16 |
Float32 | single | 32 |
Float64 | double | 64 |
####取得最大typemax()及最小 typemin()範圍
julia>typemax(Int64)
9223372036854775807
julia>typemin(Int64)
-9223372036854775808
更進一步應用,可以參考官網integers-and-floating-point-numbers
運算邏輯則與一般語言類似,有遇到需要查詢時,再到官網查詢即可 mathematical-operations
邏輯串接
julia其中最大的特色就是邏輯串接(Chaining comparisons)功能 可以由左至右依序進行邏輯判斷 例如,
julia> 1 < 2 <= 2 < 3 == 3 > 2 >= 1 == 1 < 3 != 5
true
###複數(complex number) im
複數(complex number)可以表成a+bi
a和b都是真實的數字,i則是一個虛設的單位
並且,其i的平方 = −1
julia提供一個global 常數im,用來扮演複數中的i 例如 1+2+1m+3m+4 得到結果為 7 + 3m
通常複數會被應用在象限運算或圖形演算 更進階的一些範例可以參考官網complex-and-rational-numbers
其他
Juila language 應用篇 (編寫中)
Debug Note
ERROR: LoadError: UndefVarError: showln not defined
發生 ERROR: LoadError: UndefVarError: showln not defined 錯誤訊息時,請改用 @show
ERROR: LoadError: UndefVarError: readtable not defined
在julia終端機介面輸入下指令即可安裝
Pkg.add("DataFrames")
並且載入 DataFrames
using DataFrames