---
# System prepended metadata

title: 抽象化(abstraction)的思考邏輯

---

# 抽象化(abstraction)的思考邏輯


「抽象化」的概念非常簡單，對於一件事物，它的運作原理可能十分複雜，例如一台汽車，但我們駕駛人在開車的時候不需要去管引擎的運作原理、車內冷卻水的循環、輪胎差速器的運作 … 我們只要把精力放在油門、剎車和方向盤的控制就好了。這種只關注一個事物的某些部份，而把其他部分當作一個整體，或者說是「黑盒子」的作法，就是抽象化。

數學或程式的函數（function）就是抽象化的典型例子。例如，我們只要知道一個函數需要餵給它什麼input，然後它就會吐出什麼output就可以了，即使根本不知道這個函數的演算法到底是怎麼寫的，我們還是可以拿它來完成工作。

也就是說，我們不必是開發這個函數或演算法的專業科學家或工程師，透過「抽象化」的觀念，我們只要知道怎麼去使用它就可以了。而如果我們想要去深究這個函數的詳細內容，只要開發者允許並授權給我們，就可以了。或者，我們也可以自己開發函數，抽象化（撰寫函數的使用說明，例如告知別人如何給input，以及會得到什麼output）之後發布給別人使用。

尤其在科學領域，知識是大量堆疊累積起來的，要求一個人「究天人之際，通古今之變」是不切實際的，所以科學家們大量運用抽象的精神，在很多時候只關注一個複雜模型或理論的某些特性和應用方式，而不去管它的詳細內容。當我們想要了解詳細的內容時，再去把這個「黑盒子」拆開詳細研究就可以了，這樣可以幫助我們把精力聚焦，放在不同時間、不同場合真正應該關注的事情上。

所以也有人把abstraction翻譯為「萃取」、「摘要」或是「歸納」，意思是將某個事物的重點萃取或歸納出來，只關注我們在這時候需要關注的部分。例如我們只是使用者，就可以不用去管機器的運作原理，只要會使用就好了；但如果我們是開發者，就要把精力放在機器的內部結構、製造成本，以及如何讓機器運作得更快更好，更方便使用上。

抽象化的概念其實根本不必多說，是人類出生就自然而然會的天賦，對任何人來說這都再自然不過。利用抽象化的概念，人類才可以很好的分工合作，讓人類建構起了複雜的社會和城市，電腦科學領域只是把這件大家習以為常的事情，用科學和邏輯的語言再度表達出來而已。

我們能夠編寫電腦軟體，而不必傷腦筋先去學習電晶體、邏輯閘、正反器 … 的運作原理，都是因為我們極大量的使用了抽象化的思考模式。


