2014年5月10日 星期六

動態語言裡設計函式介面越要彈性簡單好用,就需要實作 Runtime 的 type checking,執行時期會增加更多的計算成本。

程式語言如 C++, Haskell 可以透過 Parametric polymorphism 多型的方式提高介面易用度,編譯時期就可以確定要呼叫哪個符合類型的函式。

很不幸的,動態語言如 PHP, JavaScript, Ruby 不支援多型,就只能用 instanceof, typeof, is_a? 等方式來檢查型別,這時候 trade off 就來了,你希望函式要 "Less is more" 還是要 "說清楚吃雞豬牛或鴨" ?

前者好用但計算成本高,後者麻煩但計算成本低。這就是 jQuery 為什麼慢,而有些人堅持用 document.getElementById 的原因。