陳坤裕

串珠者

抽象化雙面刃


所謂抽象化,根據 Joel Spolsky 定義,即把複雜許多的東西隱藏起來的一種簡化動作。電腦其實就是層層抽象化觀念的堆疊,從 nand2tetris 這堂課其實就可清楚看到這件事。

抽象化,可簡化複雜,並收斂為簡單易懂之概念。以此為基礎,我們便可以在複雜度降低的情況下,找出更多概念交互作用的可能性。例如:樂高積木的組合。每一塊樂高積木皆是由更基本的原料所組成,然而我們不必去管要如何使用這些原料,製作成一塊塊樂高積木。我們要做的,就是在已經製造好 (收斂完) 的積木上,找出各種組合的可能性。結果就是我們幾乎可以用樂高創造出世界上任何一種形體。

抽象化的好處,就是可省去對原形複雜度的處理,更專注且有效率的利用簡化的結果組成解決方案。

然而,簡化帶給我們便利。也為我們帶來問題。有時我們為了讓事情單純一點,會選擇刻意忽略某些細節。接收抽象化概念的人,便開始利用抽象化結果拼湊解決方案。然後大家用得很開心。殊不知,漏洞就是這樣誕生的。

可怕的是,若我們只學習抽象化後的概念。便像是在別人制訂好的且有缺陷的規則下做事,永遠被綁住,永遠被蒙蔽了雙眼。甚至遇到問題,也無從解決起,因為證據都在抽象化過程中被抹掉了。

要解決這個問題,或許我們可以將每件事都再往下拆解一層,直接拆解至最基本的元素。再往上組合,如此,不僅可以填補因抽象化被忽略的概念,我們也可從其他視角檢視問題。

發佈評論

看不過癮?

一鍵登入,即可加入全球最優質中文創作社區