#讀書筆記#松本行弘的程序設計·第一章

本章介紹了Matz創作Ruby的緣由。Matz從高中時候就開始編程。但他自認爲自己是個“怪才”,因爲別的程序猿普遍關注程序可以做什麼,而他卻更關注我們如何有效的和機器進行交流。驅使他完成Ruby創作的動力,完全來自與自己的興趣而不是爲了“這下可以大賺一筆”或者名留青史之類的。很多人問道,你爲什麼開發Ruby,他認爲最合適的回答應該和Linux的開發者Linux Torvalds對"爲什麼開發Linux“的回答一樣

"因爲它給我帶來到了快樂!"

1.1.1編程語言的重要性

  語言是信息傳遞的媒介。因爲語言的出現,使得人與人之間纔可以傳遞知識和交流信息,也正是因爲語言,才造成人和動物的區別。

  Matz認爲,編程語言很大程度回決定使用者的思考方式和編程風格。

  《人月神話》裏有這麼一個觀點:一個程序員,不管他使用什麼樣的語言,他在一定時間內編寫出來的代碼行數是一定的。但如果真的是這樣,一個程序員每天可以寫500行彙編和500行Ruby代碼所能實現的功能還是有天壤之別的。感謝摩爾定律,現在的計算機已經價格更低,性能也更強勁。在程序猿的效率和程序執行效率這個矛盾中,前者已經成爲了主要矛盾。如何用更少的成本和更高的效率開發出軟件,是目前我們主要關注的問題。

1.1.2 Ruby的原則

  如果一種語言不假思索的吸收其他語言的特點,那麼最後這麼語言只會成爲其他語言的翻版,從而失去它作爲一種新的語言存在的價值。

  Ruby編程語言的設計目標是:高效開發,輕鬆工作。所以Ruby的一切語言特性都是圍繞着這個原則來的。

  ·簡潔性

  對比下同樣是Fibonacci數列的實現,不難發現,Ruby省去了很多變量定義的代碼,雖然這可能回造成一些代碼安全性的問題,但可以讓程序猿更加專注於實際算法的實現。想想讀過的數據結構和算法書上不都是用僞代碼來定義數據結構和算法麼?不就是爲了去掉非實質代碼,讓讀者更加專注與算法本身。所以,Ruby做到了

  ·擴展性

  每種編程語言其實都有自己特定的應用領域,比如php適合後臺網頁開發,C適合底層的嵌入式開發。Ruby因爲照顧到程序猿的效率,所以難免會犧牲程序執行上的性能。Matz在1999年寫的《面向對象腳本語言Ruby》中就明確了Ruby不太適合“以數值計算爲主的程序”和“數萬行的大型程序”。但事實證明,Ruby的易用性還是造出了規模在萬行,甚至幾十萬行的軟件,甚至氣象數據分析和物理領域也用到了Ruby。

  Ruby天生的面向對象特性,爲後期拓展提供了便利。比如Ruby以“塊”這種明白易懂的形式爲程序員提供了相當於Lisp高階函數的特性。

  關於擴展性,要特別注意不要“想當然的加入無謂的限制“。比如,剛開始開發Unicode的時候,作者認爲16位即65535個字符可以表示世界上的所有文字了;同樣,Y2K(千年蟲)問題也是想當然的認爲用2位數表示日期足夠才導致的

  ·穩定性

  Ruby在創作的過程中,Matz拒絕了加入Lisp的宏特性,因爲他認爲這會是的語言變得過於靈活,使程序缺少統一的編程風格,給程序員閱讀代碼帶來麻煩。比較對於每個程序員來說,讀代碼的時間要遠遠多於寫代碼的時間。

1.1.6一切皆因興趣

  Matz開發Ruby,因爲興趣。而我學習Ruby也是因爲興趣。

  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章