Image

在前一篇轉貼時,我分享了「知識點應該也有大綱到細節等等,不同抽象程度的顆粒度」的想法。

這個念頭是來自於幾年前閱讀到的一篇鐵人賽文章,今天我想順著把這篇文章介紹給大家:
Day2:[心得]一個語言如果不改變你的思考方式,就不值得學?談程式語言的本質 - Nissen

我曾經想過為什麼程式語言不能只留下一種,大家就學同一種就好,為什麼還要分強型別弱型別、物件導向函數導向等等……

直到看見這篇文章,我才有一些關於知識點和程式語言等等,這些資訊被「抽象化」的輪廓。

這篇文章用原始人看見「真正的牛」之後,畫出「牛的符號」作為例子,解決了我當時的疑惑,因為它說明了每種程式語言所做的「抽象化」:

抽象化是什麼?抽象化就是一種「選擇」 比如說,當原始人把牛畫下來的時候,他就已經做出了選擇。

咦!?有嗎?什麼時候?他做了什麼選擇什麼?

他在繪畫的時候,選擇了要保留or刪除什麼資訊。

當原始人在畫畫的時候:

牛身上的有「多少毛」、牛的「顏色」、牛的「重量」….這些資訊,重要嗎?不重要

牛的「輪廓」、牛的「線條」,這重要嗎?重要

這個原始人其實是從一個完整的牛身上刪除了大量資訊(重量、顏色、毛),抽象出了他留下最重要的資訊,也就是線條與輪廓。

每種語言看待世界的方式並不一樣,思考方式也就不一樣。因此,當它們把這些資訊抽象化成程式語言的符號時,選擇保留下來的資訊也就不一樣。

每一種語言,或是說每一種特性和設計方式,其實就代表了一種資訊的選擇、一種看待世界的方式。

因此才有開頭的那個問題,以及這篇文章所引用的這句話:

A language that doesn’t affect the way you think about programming, is not worth knowing. – Alan Peris

因為我太喜歡作者畫的這張牛了(?),所以希望把這篇分享給和我一樣菜、有過同樣疑問的朋友們。

那麼,今天的轉貼就先到這邊。明天見 ><