Ruby 程式語言入門 - 安裝運行環境
之所以開始著手寫這個系列是因為想學Ruby on Rails,但是在學Ruby on Rails之前必須先了解Ruby,那就邊學習邊作筆記順便寫成文章,若學習過程中遇到的任何困難處也可以分享出來給更多的初學者,以避開一些坑,那麼今天要教的是Ruby的環境安裝,保證無論是否有程式基礎的人都可以輕鬆學會(只要你有過使用電腦的經驗...),那麼廢話不多說直接開始吧。
何謂Ruby?
•開放源碼、物件導向的動態直譯式(interpreted)程式語⾔
•簡單哲學、⾼生產力
•精巧、⾃然的語法
•創造者 Yukihiro Matsumoto, a.k.a. Matz
•靈感來來⾃自 Lisp, Perl, 和 Smalltalk
Ruby 是動態強分型語⾔:
•動態 Dynamic v.s. 靜態 Static typing
•Ruby/Perl/Python/PHP v.s. Java/C/C++
•強 Strong v.s. 弱 Weak typing
•Ruby/Perl/Python/Java v.s. PHP/C/C++
錯誤
"test" + 1
原因:整數跟字串無法加在一起
正確
1 + 2
"test" + "demo"
什麼是直譯式語言(interpretive)?
是一種程式語言類型。這種類型的程式語言,會將程式碼一句一句直接執行,不需要像編譯語言(Compiled language)一樣,經過編譯器先行編譯為機器碼,之後再執行。這種程式語言需要利用直譯器,在執行期,動態將程式碼逐句直譯(interpret)為機器碼,或是已經預先編譯為機器碼的的子程式,之後再執行。
直譯語言列表:
BASIC、LISP、Perl、Python、Ruby、JavaScript、PHP、R...
Ruby安裝
- 下載Ruby直譯器
由於我是Windows10 x64,故之後所有的文章都是以Win10作為示範,若你是Linux或macOS系統可以使用第三方工具rbenv或RVM安裝。
目前最新的穩定版本是2.6.5。
這邊提醒一下,建議下載Ruby+Devkit版本,原因如下:
Ruby 2.4.0及更高版本使用MSYS2工具鏈作為開發套件。它作為可選組件捆綁到Ruby + Devkit安裝程序版本中,因此不需要其他下載/安裝。使用不帶Devkit版本的Ruby時,可以通過運行單獨安裝MSYS2 Devkit ridk install。
MSYS2是構建Ruby的本機C / C ++擴展所必需的,而Ruby on Rails則是必需的。而且,它允許下載和使用Ruby gems可以依賴的數百個開源庫。
安裝好之後進行安裝,傻瓜式安裝步驟不做演示,記得勾選把Ruby執行檔的位置加到系統的環境變數中。
安裝Finish之後會自動幫你安裝MSYS2,安裝過程全程ENTER即可。
全部安裝完畢之後打開命令提示字元(cmd)輸入ruby -v
測試一下安裝結果。
至此為止,Ruby執行環境已經成功安裝。
PS.不知道什麼是cmd的話可以參考這篇文章命令提示字元 01:基本常識
如何執行Ruby程式?
執行Ruby的方式可以參考下圖(圖片來源Joey Chen)
注:終端機是Linux系統的叫法,和Windows系統的命令提示字元是一樣的東西。
Ruby 的程式很多是在非圖形介面下執行,大多是終端機環境,常見有幾種方式:
1.單行程式
可以直接在終端機輸入
ruby -e "puts 'Hello World'"
2.存成檔案
程式碼通常不會只有一行,於是把程式碼存成一個檔案,副檔名為.rb
#hello.rb
puts "Hello World"
3.IRB
Ruby內建的Interactive Ruby互動介面可以讓你輸入即見效果
$ irb
>> puts "Hello World"
Hello World
=> nil
nil 代表「本次執行結果的回傳值」,會出現 nil 是因為 puts 方法本身並沒有回傳值。
像這樣的環境我們又稱之 REPL(Read-Eval-Print Loop)。
撰寫及執行第一支Ruby程式
打開編輯器,或是最基本的記事本,輸入指令puts "Hello World"
並存成.rb副檔,打開cmd指向rb檔的位置,並輸入ruby 檔名.rb
執行剛剛的程式。
Interactive Ruby是什麼?
在本地搜索Ruby可以搜索到Interactive Ruby,這是Ruby的指令互動環境,初學者只要知道這是可以讓你即時看到執行 Ruby 敘述的結果的程式就行。
輸入puts "Hello World"
輸出Hello World。
puts 是 Ruby 的基本輸出指令。
=> nil代表本次執行結果的回傳值。
puts 總是回傳 nil,nil 在 Ruby 中表示一個絕對的空值,因為 puts 方法本身並沒有回傳值。
關於irb與ruby可以參考這篇文章:https://openhome.cc/Gossip/Ruby/IrbRubyUtility.html
推薦Ruby學習網站
- 笨方法學Ruby:http://lrthw.github.io/intro/
- 線上編輯器學習Ruby:https://ruby.github.io/TryRuby/
- 二十分鐘 Ruby 體驗:https://www.ruby-lang.org/zh_tw/documentation/quickstart/
- Ruby使用手冊(繁體中文):https://guides.ruby.tw/ruby/
- 全英文Ruby學習教材:https://launchschool.com/books/ruby/read/introduction#briefhistory
- Ruby筆記(全中文):https://gradyli.wordpress.com/ruby%e6%95%99%e5%ad%b8/