技術記錄

Ruby Object Model

前言:Ruby 中的物件導向

Ruby Object Model 是我覺得 Ruby 算是十分特別也是十分重要的概念。

在一般的物件導向程式語言中,物件是類別的實體,而資料型態是資料型態。一個變數可以儲存一個資料型態,一個變數也可以指向一個物件,但資料型態和物件是兩回事。

但在 Ruby 中,所有的東西都是物件

一次搞懂物件導向程式設計的特性

會寫程式很簡單,寫出好的程式很難。上次寫了一篇 Clean Code 筆記,算是比較進階的,最近剛好複習了比較基本的一些物件導向相關原則與特性,於是就寫出了這篇。

這些物件導向的基本觀念和 Clean Code 一樣,平常可以幫助自己讓 code 寫得更易懂且更好維護,而且 Code Review 時可以拿來嗆同事(X),同時也算是面試的熱門考題之一,因此一次整理成一篇記下來,希望能幫助到自己和其他剛好找到這篇的人。

這邊主要以條列和簡單說明為主,因為我相信原則和定律皆由其簡單的解釋方式,若要更深的討論也是可以分別寫成文章的,但就不是這篇的目的了。

Python 費氏數列解法(五):不同解法的執行時間比較

終於來到最後一篇了,前面幾篇依序寫了各種不同費氏數列的寫法,包含:遞迴、迭代矩陣、從矩陣衍生的Fast doubling、以及最後公式解和補充的精確版公式解

從時間複雜度來看,從矩陣開始都是 $O(\lg n)$(如果我們把公式解內指數運算當作 $O(\lg n)$ 的話),那這三個哪個比較快呢?

這篇文章裡面用 c 比較了 fast doubling 和公式解,發現號稱常數時間複雜度的公式解,反而慢上很多,而且還需要考慮精確度問題。