基本概念
hello, world
基礎型別
四則運算
以特定指令使電腦運行想要的動作
可以以程式語言編寫
用電腦可以解讀的語言命令之
利用標準化的指令定義電腦的行動
但是比電腦更早被發明出來
自動織布機、自動演奏鋼琴
底下是x86格式的機械語言和組合語言
8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi
8b 54 24 28 mov 0x28(%esp),%edx
89 44 24 04 mov %eax,0x4(%esp)
8b 44 24 20 mov 0x20(%esp),%eax
89 54 24 08 mov %edx,0x8(%esp)
89 04 24 mov %eax,(%esp)
e8 38 06 00 00 call 6b902250 <___mingw_TLScallback>
b8 01 00 00 00 mov $0x1,%eax
83 c4 1c add $0x1c,%esp
c2 0c 00 ret $0xc
這堂課不會教這個想學另洽
直譯式語言
編譯式語言
位元碼直譯
即時編譯
邊解讀文字邊執行
人類可以直接閱讀可執行的程式
效能一般較差
寫好文字檔後轉換成原生機械碼
電腦能直接執行但人類不容易看
效能一般較佳
先將文字檔轉換成特殊的位元碼
再用程式直譯該編碼
先編譯後直譯
效能介於兩者之間
JIT
可以用位元碼產生原生的機械碼
融合了各種特點
在1.9以前是完全直譯
在1.9開始使用VM執行位元碼
不過還是歸類為直譯
未來會引入JIT技術
由日本人所開發
哲學是條條道路通羅馬
開發的目的就是要快樂地寫程式
信徒會和Python對嗆
為了執行Ruby的程式我們需要直譯器
Windows: RubyInstaller
Mac:$ brew install ruby
Linux:各家安裝ruby套件即可
推薦使用2.0以上的版本
有一定的了解再使用x64版本
就用Ruby2.2.5吧
為防止有個萬一還是說明安裝流程
其實就是Enter大法
只有英文和日文可以選
就選英文吧
Ruby為自由軟體就安心同意吧
第一個可以不用
但是PATH和檔案關聯建議打開
接下來就可以使用了
Start Command Prompt with Ruby
Interactive Ruby
要對電腦路徑稍微熟悉
基本的CMD/TTY操作要會
先不要用這個
使用irb為工具
輸入程式後就會產生結果
可以專心在語言的熟悉上
先進入irb後輸入以下指令
print "hello, world"
就得到一行輸出結果
hello, world=> nil
上面就是一個簡單的程式了
就是叫直譯器印出hello, world這幾個字
至於nil我們之後會再討論
Ruby是基於物件導向的語言
在此先不管物件導向
只要知道物件有其屬於的類別
Ruby提供了基本的類別讓使用者使用
使用這些類別就能做到很多事
Object類別
沒有寫出來但是提供很多基本功能
所有類別都是其子類別
不會知道其存在
數字有整數和浮點數
Interger
Float
其實還有實數和複數誰用得到呢?
Integer
在Ruby2.4整合了Fixnum和Bignum
可以處理非常大的數字
有很多種方法表達整數
十進位: 5566,22_000
八進位: 0755,0422
二進位: 0b11001101
十六進位: 0xC8763,0xdeadface
到底0xC8763在10進位下是多少
0b100,0100,100,0x100
16進位大小寫有沒有關係呢?
大家可能對這個詞比較不熟悉
電腦一般儲存數字大小是有限制的
能夠不具大小限制的處理就稱為大數
2147483647.class
9999略9999.class
不要把「略」打上去啊...
Float
浮點數可以近似表達小數
整數和浮點數運算會變浮點數
浮點數也有很多表達方法
科學記號: 8722.78e6,9.109E-31
小數點: -0.3010,866.6
特殊的NaN,Infinity,-Infinity
看看以下結果
1.0/0.0
-1.0/0.0
0.0/0.0
true,false,nil可以表達真假值
其中false和nil永遠代表為假
其他的數值就算不是true也為真
用來進行條件判斷
true,TRUE
false,FALSE
nil,NIL
以上都小寫或都大寫
String
可以放入各種文字
Ruby原生支援UTF-8編碼畢竟要支援日文
之後會有更詳細的介紹
Array
可以依照索引放入任何東西
裏面也可以裝陣列
今天還用不到
Hash
有時候希望用不同的索引存取資料
可以建立鍵值的配對
也是很好用的類別
當然沒有
其實Ruby提供的類別不只這些
要介紹恐怕介紹不完
常用的至少要先學會歐
以下就來介紹各種運算
"+"號
浮點數和整數可以混合運算
10000000.0+20000000+0.00000001
10000000.0+0.00000001+20000000
"-"號
一樣可以混合運算
0x1000-0b100-10-0b1
"*"號
注意不是使用英文子母"x"
0x0
你看結果明明就是0啊
0x16
欸欸欸欸欸欸欸欸欸
"/"號
注意"\"不是除法
整數除以整數恆為整數
100/0
1.0/0
0.0/0
"%"號
雖然號稱四則運算實則不只
也要小心整數對0取餘數
-5 % 3
5 % -3
6.3 % 6
6.3 % 2.1
777 % 0
"**" 2個"*"號
最刺激的運算
可以開根號或求倒數
9999**9999
2**-1+3**-1
2**0.5
2**-0.5