Julia 入门学习教程
有一門語言,它看起來像 Python ,感覺起來像 Lisp ,運行起來又像 C 一樣快速,他就是Julia。
近年來,Julia 語言已然成為編程界的新寵,尤其在科學(xué)計算和人工智能領(lǐng)域炙手可熱。
據(jù) Julia Computing 的宣傳,在七項基礎(chǔ)算法的測試中,Julia 比 Python 快 20 倍,比 R 快 100 倍,比 Matlab 快 93 倍。
為什么 Julia 能做到這些,看一下它的開發(fā)者的初衷:
“我們想要的是一種自由開源的語言,它同時擁有 C 的速度和 Ruby 的動態(tài)性;我們想要一個可以像 Python 一樣作為通用編程語言的工具, 像 R 那樣適用于統(tǒng)計分析,像 Perl 那樣自然地處理字符串,像 MATLAB 那樣給力地處理矩陣運算,它還要能像 Shell 一樣作為膠水將各種程序粘合在一起……”
Julia 在開發(fā)之初就將這些理念納入其中,才有了今天的成績。
實驗樓上線了一門免費的 Julia 入門課程 ---《Julia簡明教程》,包含 6 個實驗和一個挑戰(zhàn)。你將學(xué)習(xí)到 Julia 的基礎(chǔ)語法,并親手用 Julia 開發(fā)出一個小項目。
建議點擊課程鏈接,直接使用實驗樓的在線虛擬機學(xué)習(xí)這門課,效果會更好。
以下為課程第一節(jié)內(nèi)容:
一、實驗簡介
本課程作為 Julia 這門編程語言的入門教程,旨在介紹其基礎(chǔ)語法,希望大家能夠通過本課程的學(xué)習(xí),熟練掌握 Julia 的語法風(fēng)格和編程習(xí)慣。
二、知識點
Julia 簡介
在實驗環(huán)境中安裝 Julia
Julia REPL 用法
三、Julia 簡介
根據(jù)維基百科中的描述,大約在 2009 年,一群擁有各種語言豐富編程經(jīng)驗的 Matlab 高級用戶,對現(xiàn)有的科學(xué)計算編程工具感到不滿 —— 這些軟件對自己專長的領(lǐng)域表現(xiàn)得非常棒,但在其它領(lǐng)域卻非常糟糕。
他們想要的是一個開源的軟件,它要像 C 語言一般快速而又擁有如同 Ruby 的動態(tài)性;要具有 Lisp 般真正的同向性而又有 Matlab 般熟悉的數(shù)學(xué)記號;要像 Python 般通用、像 R 一般在統(tǒng)計分析上得心應(yīng)手、像 Perl 般自然地處理字符串、像 Matlab 般具有強大的線性代數(shù)運算能力、像 shell 一般擁有膠水語言的能力,易于學(xué)習(xí)而又不讓真正的黑客感到無聊;還有,它應(yīng)該是交互式的,同時又是編譯型的。
最后 Julia 出現(xiàn)之后,大家評價它看起來像 Python ,感覺起來像 Lisp ,運行起來像 C 。
以下描述來自官方文檔:
Julia 與傳統(tǒng)動態(tài)語言最大的區(qū)別是:
1. 核心語言很小;標(biāo)準(zhǔn)庫是用 Julia 本身寫的,如整數(shù)運算在內(nèi)的基礎(chǔ)運算
2. 完善的類型,方便構(gòu)造對象和做類型聲明
3. 基于參數(shù)類型進(jìn)行函數(shù) 重載
4. 參數(shù)類型不同,自動生成高效、專用的代碼
5. 高性能,接近靜態(tài)編譯語言,如 C 語言
Julia 想要變成一個前所未有的集易用、強大、高效于一體的語言。除此之外,Julia 的優(yōu)勢還在于:
1. 免費開源( MIT 協(xié)議 )
2. 自定義類型與內(nèi)置類型同樣高效、緊湊
3. 不需要把代碼向量化;非向量化的代碼跑得也很快
4. 為并行和分布式計算而設(shè)計
5. 輕量級 “綠色” 線程( 協(xié)程 )
6. 低調(diào)又牛逼的類型系統(tǒng)
7. 優(yōu)雅、可擴展的類型轉(zhuǎn)換
8. 高效支持 Unicode, 包括且不只 UTF-8
9. 直接調(diào)用 C 函數(shù)(不需封裝或 API)
10. 像 Shell 一樣強大的管理其他進(jìn)程的能力
11. 像 Lisp 一樣的宏和其他元編程工具
四、安裝 Julia
打開實驗環(huán)境,我們要安裝目前最新的 Julia1.3 版本(截止 2020 年 1 月)。
首先,在終端執(zhí)行 wget-c https://julialang-s3.julialang.org/bin/linux/x64/1.3/julia-1.3.1-linux-x86_64.tar.gz 命令下載安裝包,這是官方提供的下載地址。因為此安裝包比較大,90 多 M ,所以建議大家執(zhí)行如下命令下載它:
wget https://labfile.oss.aliyuncs.com/courses/1485/julia-1.3.1-linux-x86_64.tar.gz
首先在終端命令行執(zhí)行 cd 命令切換到用戶家目錄 /home/shiyanlou ,然后再執(zhí)行上述命令:
下載完成之后,會在當(dāng)前目錄下出現(xiàn) Julia 的安裝包 julia-1.3.1-linux-x86_64.tar.gz ;執(zhí)行 tar xzvf julia-1.3.1-linux-x86_64.tar.gz 命令,即可完成解包;然后將 Julia 的可執(zhí)行文件創(chuàng)建一個軟連接到 /usr/bin 目錄下即可完成全部安裝工作:
cd /usr/bin
sudo ln -s ~/julia-1.3.1/bin/julia julia
cd
julia
如上圖所示,終端執(zhí)行 julia 命令即可進(jìn)入命令行交互解釋器,也叫 REPL 。這個是不是有些熟悉呢?各個數(shù)據(jù)庫以及 Python 都有這個交互工具。輸入 exit() 或按下快捷鍵 Ctrl + D 即可退出,終端執(zhí)行 julia-version 命令可以查看版本:
啟動 Julia 命令行交互解釋器的時候,會打印一張橫幅,如上圖所示。我們可以創(chuàng)建一個文件,使其在打印橫幅之前,打印一些別的:
mkdir .julia/config
echo 'println("Hello Shiyanlou")' > .julia/config/startup.jl
julia
如上圖所示,在啟動 REPL 時,先打印了一行字:Hello Shiyanlou 。熟悉 Python 的同學(xué)都知道打印信息到屏幕上使用的是 print 方法,在 Julia 中是 println 方法,而且需要切記的是,在 Julia 中單引號和雙引號不可混用,只有雙引號才能描述字符串。
五、Julia REPL 的四種模式
進(jìn)入 REPL 之后,會有 julia> 字樣的提示符,這是常規(guī)模式,我們可以在其中執(zhí)行一些代碼:
julia> println("hello kitty")
hello kitty
julia> 2 + 3
5
julia> ans
5
julia> x = 5
5
julia> x -= 1
4
julia> x
4
julia> x *= 2
8
julia> x
8
julia>
如上所示,ans 這個變量會保存上一次命令的執(zhí)行結(jié)果,它僅在命令行交互解釋器中適用,不可寫到 jl 文件里,Julia 的文件后綴為 jl ,如同 Python 文件的后綴為 py 。
除了常規(guī)模式,REPL 還有 help 模式、shell 模式和 package 模式。
六、help 模式
在常規(guī)模式下輸入問號即可進(jìn)入 help 模式,此模式的提示符是 help?> ,輸入一個方法,即可顯示此方法的幫助信息,然后自動回到常規(guī)模式:
這等同于在常規(guī)模式下使用 @doc 這個宏來查看幫助信息:
七、shell 模式
在常規(guī)模式下輸入分號 ; 進(jìn)入 shell 模式,提示符為 shell> ,這等同于環(huán)境終端,可以執(zhí)行 zsh 命令,同樣是執(zhí)行完一個命令后自動退回到常規(guī)模式:
八、package 模式
常規(guī)模式下輸入中括號 ] 進(jìn)入 pkg 模式,提示符為 (v1.3)pgk> ,括號里面是版本號,這是包管理模式。
該模式下輸入 status 命令可以查看包狀態(tài), add 命令添加工具包, rm 命令刪除工具包:
安裝這個包需要較長時間,執(zhí)行 rm 命令刪除它:
按退格鍵 Backspace 回到常規(guī)模式。
九、總結(jié)
本節(jié)實驗主要介紹了 Julia 語言的來源,它與很多其它語言很像,這是因為作者是集各家之長創(chuàng)造的 Julia 。在實驗環(huán)境中的安裝方法十分簡單,下載安裝包,解包,設(shè)置軟連接。
此外還介紹了命令行交互解釋器的四種模式,在后面的課程中,我們會用到它們。
下一節(jié)實驗將會學(xué)習(xí) Julia 的變量。
想要學(xué)習(xí)下面的內(nèi)容,大家可以點擊《Julia簡明教程》,免費在線學(xué)習(xí)全部章節(jié)內(nèi)容。
總結(jié)
以上是生活随笔為你收集整理的Julia 入门学习教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转载】视频CDN技术原理与流程说明
- 下一篇: 怎么创建具有真实纹理的CG场景岩石?