【每天推薦一篇文章】一個語言如果不改變你的思考方式,就不值得學?
在前一篇轉貼時,我分享了「知識點應該也有大綱到細節等等,不同抽象程度的顆粒度」的想法。
這個念頭是來自於幾年前閱讀到的一篇鐵人賽文章,今天我想順著把這篇文章介紹給大家:
Day2:[心得]一個語言如果不改變你的思考方式,就不值得學?談程式語言的本質 - Nissen
我曾經想過為什麼程式語言不能只留下一種,大家就學同一種就好,為什麼還要分強型別弱型別、物件導向函數導向等等……
直到看見這篇文章,我才有一些關於知識點和程式語言等等,這些資訊被「抽象化」的輪廓。
這篇文章用原始人看見「真正的牛」之後,畫出「牛的符號」作為例子,解決了我當時的疑惑,因為它說明了每種程式語言所做的「抽象化」:
抽象化是什麼?抽象化就是一種「選擇」 比如說,當原始人把牛畫下來的時候,他就已經做出了選擇。
咦!?有嗎?什麼時候?他做了什麼選擇什麼?
他在繪畫的時候,選擇了要保留or刪除什麼資訊。
當原始人在畫畫的時候:
牛身上的有「多少毛」、牛的「顏色」、牛的「重量」….這些資訊,重要嗎?不重要
牛的「輪廓」、牛的「線條」,這重要嗎?重要
這個原始人其實是從一個完整的牛身上刪除了大量資訊(重量、顏色、毛),抽象出了他留下最重要的資訊,也就是線條與輪廓。
每種語言看待世界的方式並不一樣,思考方式也就不一樣。因此,當它們把這些資訊抽象化成程式語言的符號時,選擇保留下來的資訊也就不一樣。
每一種語言,或是說每一種特性和設計方式,其實就代表了一種資訊的選擇、一種看待世界的方式。
因此才有開頭的那個問題,以及這篇文章所引用的這句話:
A language that doesn’t affect the way you think about programming, is not worth knowing. – Alan Peris
因為我太喜歡作者畫的這張牛了(?),所以希望把這篇分享給和我一樣菜、有過同樣疑問的朋友們。
那麼,今天的轉貼就先到這邊。明天見 ><
其他文章
哈囉,如果你也有 LikeCoin,也覺得我的文章有幫上忙的話,還請不吝給我拍拍手呦,謝謝~ ;)