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