1.1 我為什么開發(fā)Ruby
1993年開始開發(fā)Ruby
1.1.1 編程語言的重要性
語言體現(xiàn)了人類思考的本質(zhì)兢孝。
語言可以影響說話者的思想涩澡。
程序員由于使用的編程語言不同檬输,他的思考方法和編寫出來的代碼都會受到編程語言的很大影響隙姿。
如果我們選擇了好的編程語言户敬,那么成為好程序員的可能性就會大很多荣茫。
一個程序員想帅,不管他使用什么編程語言,他在一定時間里編寫的程序行數(shù)是一定的啡莉。
程序員根據(jù)所選擇編程語言的不同港准,他的開發(fā)效率會有十倍、百倍甚至上千倍的差別咧欣。
軟件開發(fā)浅缸,要求能夠用更少的成本、更短的時間魄咕,開發(fā)出更多的軟件衩椒。
需要開發(fā)的軟件越來越多,開發(fā)成本卻有限哮兰,所以對于開發(fā)效率的要求就很高毛萌。編程語言就成了解決這個矛盾的重要工具。
1.1.2 Ruby的原則
Ruby編程語言的設(shè)計目標(biāo)是喝滞,讓作為語言設(shè)計者的我能夠輕松編程阁将,進而提高開發(fā)效率。
三個設(shè)計原則:
- 簡潔性
- 擴展性
- 穩(wěn)定性
1.1.3 簡潔性
編程語言在這半個世紀(jì)以來是向著簡潔化的方向發(fā)展的右遭,從程序的簡潔程度就可以看出一門編程語言本身的能力做盅。
隨著編程語言的演進,程序員已經(jīng)可以更簡單窘哈、更抽象地編程了吹榴。
隨著計算機性能的提高,以前在編程語言里實現(xiàn)不了的功能滚婉,現(xiàn)在也可以做到了图筹。
面向?qū)ο蟮乃枷胫皇前褦?shù)據(jù)和方法看做一個整體,當(dāng)做對象來處理满哪,并沒有解決以前解決不了的問題婿斥。
面向?qū)ο蟮姆椒ú]有實現(xiàn)任何新的東西,卻要在運行時判定要調(diào)用的方法哨鸭,傾向于增大程序的運行開銷民宿。
現(xiàn)在,由于計算機性能大大提高像鸡,只要可以提高軟件開發(fā)效率活鹰,浪費一些計算機資源也無所謂了。
變量和表達(dá)式的類型檢查只估,在執(zhí)行時已經(jīng)可以自動檢查志群,而不用在編譯時檢查了。
Ruby不進行明確的數(shù)據(jù)類型定義蛔钙,不必要的聲明都可以省略锌云。
Ruby的目標(biāo)就是成為開發(fā)效率高、“能直接運行的偽碼式編程語言”吁脱。
class Sample {
private static int fib (int n) {
if (n < 2) {
return n;
} else {
return fib(n-2) + fib(n-1);
}
}
public static void main(String[] args) {
System.out.println("fib(6)=" + fib(6));
}
}
def fib(n)
if n < 2
n
else
fib(n - 2) + fib(n - 1)
end
end
print "fib (6) =", fib(6), "\n"
1.1.4 擴展性
編程語言作為軟件開發(fā)工具桑涎,其最大的特征就是對要實現(xiàn)的功能事先沒有限制。
編程語言開發(fā)者實際上并不知道這種編程語言會用來開發(fā)什么兼贡,會在哪些領(lǐng)域中應(yīng)用攻冷。所以,編程語言的擴展性非常重要遍希。
實現(xiàn)擴展性的一個重要方法就是抽象化等曼。抽象化就是把數(shù)據(jù)和要做的處理都封裝起來,就像一個黑盒子凿蒜,我們不知道它的內(nèi)部是怎么實現(xiàn)的禁谦,但是可以用它。
以前的編程語言在抽象化方面是很弱的废封,要做什么處理首先要了解很多編程語言的細(xì)節(jié)枷畏。而很多面向?qū)ο蠡蚝瘮?shù)式的現(xiàn)代編程語言,都在抽象化方面做得很好虱饿。
程序塊——>List高階函數(shù)的特性
已有類的擴展特性
編程語言不是從安全性角度考慮為減少程序員犯錯誤拥诡,而是在程序員自己負(fù)責(zé)的前提下為他提供最大限度發(fā)揮能力的靈活性。
不要因為想當(dāng)然而加入無謂的限制氮发。
從某種角度說渴肉,編程的歷史就是因為想當(dāng)然而失敗的歷史。
Ruby對整數(shù)范圍不做任何限制爽冕,盡最大努力排除“想當(dāng)然”仇祭。
1.1.5 穩(wěn)定性
Ruby沒有宏。
宏可以替換掉原有的程序颈畸,給原有的程序加入新的功能乌奇。如果有了宏没讲,不管是控制結(jié)構(gòu),還是賦值礁苗,都可以隨心所欲地進行擴展爬凑。
Lisp流,其語言核心部分僅僅提供極為有限的特性和構(gòu)造试伙,其余的控制結(jié)構(gòu)都是在編譯時通過用宏來組裝其核心特性來實現(xiàn)的嘁信。
如果在編程語言中引入宏,活用宏的程序就會像是用完全不同的專用編程語言寫出來的一樣疏叨。
寫出來的程序是否具有很高的可讀性非常重要潘靖。從整體來看,程序員讀程序的時間可能比寫程序的時間還長蚤蔓。讀程序包括為理解程序的功能去讀卦溢,或者是為維護程序去讀,或者是為調(diào)試程序去讀秀又。
編程語言的語法是解讀程序的路標(biāo)既绕。
1.1.6 一切皆因興趣
編程語言存在的目的是讓人用它來開發(fā)程序,并且盡量能提高開發(fā)效率涮坐。這樣的話凄贩,才能讓人在開發(fā)中體會到編程的樂趣。
程序開發(fā)本來就是一件很快樂袱讹、很刺激和很有創(chuàng)造性的事情疲扎。