Programming Paradigms — imperative, functional, declarative, object-oriented

Programming Paradigms 常常看文章時看到一些類似這樣的敘述 ref 就很困惑這些到底是什麼意思,今天就來跟大家分享。 💡 我們在用不同的程式語言時,要用該語言的思維方式去使用它。 雖然他們能做的事情都一樣,但是 他們能力不同 舉例來說,C++ 能辦到的事情,想必 Java 也行,SQL 也有機會可以做到。而根據不同能力,有以下分類: Imperative 程序導向 → Procedure,其實就是 Finding algorithm ,也是我們最習慣的用法。 大部分的語言特性,像在寫 leetcode 題一樣,step by steps 依序做出來。 Object-Oriented (OOP) 物件導向,想像這個世界裡的東西都是一個一個物件,你要用這些物件去幫你做事。 例如小畫家:你今天要畫出很不同形狀,首先你要有一個物件 Shape,這個 Shape 可以幫你畫出圓型、矩形、三角形。 目的:常聽到的是複用,但複用的最終目的其實是「幫助程式設機師減少犯錯」。 能減少犯錯是基於以下特性: Abstraction 物件類別 information hiding encapsulation 封裝 💡 像是 SOLID 裡的 O: open-closed open for extension; closed for modification 你只能用 public function,不能修改 private function polymorphism inheritance Functional 整個程式是一個函示,函示裡有子函示 (decomposition) 假設你有一個函示如下: income - saving - investment = outcome 以 functional 的寫法就會是 tmp = findSum(saving, investment) outcome = findDiff(income, tmp) 或是 tmp = findDiff(income, saving) outcome = findDiff(tmp, investment) imperative 就是 tmp = income - saving outcome = tmp - in...