# 抽象化(abstraction)的思考邏輯 「抽象化」的概念非常簡單,對於一件事物,它的運作原理可能十分複雜,例如一台汽車,但我們駕駛人在開車的時候不需要去管引擎的運作原理、車內冷卻水的循環、輪胎差速器的運作 … 我們只要把精力放在油門、剎車和方向盤的控制就好了。這種只關注一個事物的某些部份,而把其他部分當作一個整體,或者說是「黑盒子」的作法,就是抽象化。 數學或程式的函數(function)就是抽象化的典型例子。例如,我們只要知道一個函數需要餵給它什麼input,然後它就會吐出什麼output就可以了,即使根本不知道這個函數的演算法到底是怎麼寫的,我們還是可以拿它來完成工作。 也就是說,我們不必是開發這個函數或演算法的專業科學家或工程師,透過「抽象化」的觀念,我們只要知道怎麼去使用它就可以了。而如果我們想要去深究這個函數的詳細內容,只要開發者允許並授權給我們,就可以了。或者,我們也可以自己開發函數,抽象化(撰寫函數的使用說明,例如告知別人如何給input,以及會得到什麼output)之後發布給別人使用。 尤其在科學領域,知識是大量堆疊累積起來的,要求一個人「究天人之際,通古今之變」是不切實際的,所以科學家們大量運用抽象的精神,在很多時候只關注一個複雜模型或理論的某些特性和應用方式,而不去管它的詳細內容。當我們想要了解詳細的內容時,再去把這個「黑盒子」拆開詳細研究就可以了,這樣可以幫助我們把精力聚焦,放在不同時間、不同場合真正應該關注的事情上。 所以也有人把abstraction翻譯為「萃取」、「摘要」或是「歸納」,意思是將某個事物的重點萃取或歸納出來,只關注我們在這時候需要關注的部分。例如我們只是使用者,就可以不用去管機器的運作原理,只要會使用就好了;但如果我們是開發者,就要把精力放在機器的內部結構、製造成本,以及如何讓機器運作得更快更好,更方便使用上。 抽象化的概念其實根本不必多說,是人類出生就自然而然會的天賦,對任何人來說這都再自然不過。利用抽象化的概念,人類才可以很好的分工合作,讓人類建構起了複雜的社會和城市,電腦科學領域只是把這件大家習以為常的事情,用科學和邏輯的語言再度表達出來而已。 我們能夠編寫電腦軟體,而不必傷腦筋先去學習電晶體、邏輯閘、正反器 … 的運作原理,都是因為我們極大量的使用了抽象化的思考模式。