今天北大青鳥就給大家簡單介紹壹種比python編程語言更有優勢的編程語言。
Julia中的數學運算壹般來說,Julia中的數學運算看起來與其他腳本語言中的數學運算相同。
它們的數字都是“實數”,例如,Float64是壹個64位浮點數或類似於C語言中的“double”。
Vector{Float64}具有與C語言雙數組相同的內存布局,並且可以輕松地與C語言進行互操作(實際上,從某種意義上來說,“Julia是構建在C語言上的壹個層”),從而帶來更高的性能。
類型穩定性和代碼自省類型穩定性意味著壹個方法只能輸出壹種可能的類型。
例如:* (::Float64,:Float64)輸出類型為float 64。
無論妳給它什麽參數,它都會返回壹個Float64。
這裏使用了多重分派:操作符“*”根據它看到的類型調用不同的方法。
例如,當它看到壹個浮點數時,它將返回壹個浮點數。
Julia提供了壹個代碼自省宏來查看代碼被編譯成什麽樣。
因此,Julia不僅是壹種普通的腳本語言,而且是壹種允許您處理匯編的腳本語言!與許多其他語言壹樣,Julia被編譯成LLVM(LLVM是壹種可移植的匯編格式)。
多重分派允許語言將函數調用分派給穩定類型的函數。
這是朱麗亞的核心思想。現在讓我們花點時間來了解壹下。
如果函數是類型穩定的(即函數中的任何函數調用也是類型穩定的),那麽編譯器將知道每壹步的變量類型,並且它可以在編譯時充分優化函數,從而獲得的代碼與C語言或Fortran基本相同。
多重分派在這裏可以發揮作用,這意味著“*”可以是壹個穩定類型的函數:它對不同的輸入有不同的含義。
但是,如果編譯器在調用“*”之前可以知道A和B的類型,那麽它就知道使用哪個“*”方法,因此它知道c=a*b的輸出類型是什麽。
這樣,它可以壹路傳遞類型信息,從而實現全面優化。