人類是很喜愛比喻/譬喻的。戰國時代的莊子愛用譬喻,常和莊子抬槓的惠施也愛譬喻,《說苑‧善說》甚至記載著這麼一段故事:

客謂梁王曰:「惠子之言事也,善譬。王使無譬則不能言矣。」王曰:「諾。」

明日見, 謂惠子曰:「願先生言事則直言耳,無譬也。」惠子曰:「今有人於此而不知彈者,曰:『彈之狀何若?』應曰:『彈之狀如彈。』則諭乎?」王曰:「未諭也。」 「於是更應曰:『彈之狀如弓,而竹為弦』,則知乎?」王曰:「可知矣。」

惠子曰:「夫說者固以其所知,喻其所不知,而使人知之。今王曰無譬,則不可矣。」 王曰:「善。」

用譬喻反擊「無譬也」的要求,真是高招!

比喻/譬喻不只是修辭法,甚至是人類根深蒂固的認知媒介。認知語言學大師 George Lakoff 在 Metaphors We Live By 書中,如此闡述它的地位:

Metaphor is not just a matter of language of mere words. We shall argue that, on the contrary, human thought processes are largely metaphorical.

所以,每次看到有趣的隱喻,我都會特別留意,細細品味背後的巧思。

電腦界也很愛用隱喻,甚至還會帶出成群的隱喻。

Java 之名,取材自咖啡。JavaScript 雖然並非嫡傳血脈,但由它衍生出來的其他技術,有些就刻意以「咖啡」為隱喻。像美化 JavaScript 語法的 CoffeeScript、供 JavaScript 使用的測試框架 Mocha,甚至連咖啡的對手:Chai 都搬出來了。

組態管理的四大工具,也是愛用隱喻的。

Ansible 主要的隱喻是演戲。所以,在 Ansible 劇場中,策劃好的動作及姿勢叫做 play,集合起來就是 playbook(劇本)。人生就是戲,演不完的戲;在舞台上,每一台主機扮演一個或多個 role(角色),甚至還有天外飛來一筆的空降角色 —— 來自 galaxy(銀河系)。

Chef 主要的隱喻是廚師。所以,在 Chef 世界中,珍藏厚厚的 cookbook(食譜),根據裡面記載的 recipe(料理步驟),用 knife(菜刀)做菜,也有一個 kitchen(廚房)可以實驗料理。

Puppet 主要的隱喻是傀儡偶戲。可惜的是,在 Puppet 舞台上出現的概念:manifest、resource、module、master、agent,似乎都沒有善用最初的隱喻。

Salt 主要的隱喻是⋯⋯。可惜的是,在 Salt 世界中出現的概念:salt state、formula、master、minion,似乎都沒有善用最初的隱喻。嗯,“formula” 字眼,勉強算有沾到邊。

呃,我要修正前面那一句話:「組態管理的四大工具當中,Ansible 和 Chef 也是愛用隱喻的。」

或許這也是我對 Ansible 及 Chef 比較有好感的原因吧。

最後,如果你想對這四大工具有個快速的概念,可參考 Roland Wolters 製作的單頁掛圖:Tools for Configuration Management

Tools for Configuration Management

Tools for Configuration Management