當前位置: 華文問答 > 數碼

編程真的能改變人的思維方式嗎?

2016-12-12數碼

程式設計師有個著名的笑話,這麽說的:

「老公,晚上回來買一個西瓜,如果看到西紅柿,就買兩個。」晚上,老公買了兩個西瓜回來,老婆問為什麽,老公說,「因為看到了西紅柿。」

程式設計師看到了一定會心一笑,甚至認真的人還會辯解說完全沒有什麽問題,認為這是對於語言嚴謹的追求。不管兩個西瓜吃不吃的完,沒了西紅柿怎麽炒雞蛋, 至少我們可以看到,深入編程到了一定的程度,思維確實會發生不小的變化。

(圖片來源於網絡)

這種差異的本質來自於何處呢?來自於交流物件的變化。編程,本質上就是與機器交流。交流程度越深,思維方式就越會向交流物件靠近。 就像跟東北人混熟了性格感覺也更豪爽一些,跟台灣同胞話說多了也變得更加萌萌的那樣。

21世紀與其說是生物的世紀,不如說是機器的世紀。機器與演算法已經占據了我們生活的方方面面。我們資訊換獲取來源不再來自於人工編輯的報紙,而是來自於搜尋和推薦系統。我們購物的渠道也從線下的人工商店轉換成了線上的自助服務。當人類社會積累的知識和行為都變成數據,慢慢地積累在一台台伺服器上,能夠與機器熟練交流的人,就是掌握先進生產力的人,就是能夠引領時代潮流的人。而與機器交流的語言,就是編程,就是寫程式碼。

(圖片來源於網絡)

機器與人類是有極大的不同的。首先一條,就是精確,無歧義。 電腦都低到上都是有明確而簡單的規則組成的,比如現代電腦的馮諾依曼體系,其背後就是圖靈機。圖靈機的原理並不復雜,但是表達能力卻極強。因為精確,所以與機器交流的語言,也容不得半點的錯誤。所有與機器的語言表達,都是直面上的意思,也沒有意會一說。說清楚了,才會得到想要的結果,而如果得到的結果不如預期,那一定是沒有說清楚,程式碼寫錯了。

所以程式設計師也往往有這些特質,比如溝通的時候特別註重語言本身的意思,而會淡化情緒、表達方式、上下文情景等這些超出文本本身的內容。 比如小姑娘在大熱天逛了一下午街,雖然買買買很開心,但大汗淋漓,有些疲乏又有些勞累,於是撒嬌似地說了一句「逛街好累啊」,期待著他能元氣滿滿地接一句「那我們去吃好吃的吧!」然後兩人滿血復活,還能看個電影什麽的。在他的心中可能就只聽到了一種抱怨「逛街好累啊」,然後自然而然地提出「那就別逛了,我們回家吧」。這樣有些掃興,但又無可奈何的建議。這些小情緒一旦超出了文本本身,可能就不會被註意到的。

還有一種特質,就是程式設計師喜歡自省。程式本身是精確的,如果得到的結果不是預期,那一定是自己寫錯了。 寫程式的一半時間都在 debug,而 debug 的時候內心滿滿的都是 「我哪裏又錯了」,「臥槽,這麽SB的錯誤我都沒註意到。」 這種長時間自我反思的狀態,也會影響到生活,改變工作以外的思維方式。

人類的思維模式可能比較神秘,但機器的思維模式是清晰的,比如常見語言結構包括變量、迴圈、函數等等,與人類完全不同。因此,與機器對話,需要把人類的需求,轉換成機器可以理解的這些結構,中間的轉換很多時候並不容易。 人類話語中的小小的變動,都會導致最後編程實作的巨大不同。 所以跟程式設計師說話的時候,很多時候他們眉頭緊鎖,一言不發,死死地盯著你,你不要緊張,他們可能只是神情專註地思考,語言背後的每一點意思,反復權衡不同的實作方式,來確保這些需求可以實作。甚至還有有些神經質地追問微小的細節,比如經常是什麽頻率,馬上究竟是要多快,很大的流量到底是多大。 需求表達的越精確,就越有助於編程實作。

因為這些思維上的差異,不少人都覺得編程很難學。這個我也同意,思考方式的改變往往是最難的改變,甚至需要多年的培養。 我從初中開始參加 NOIP 這樣的競賽,經過高中,大學,研究生,甚至工作了幾年,才慢慢感覺自己進入了大門。現在的小朋友們想要入門就幸福的多,有大量課程與培訓可以引導。但是,我認為,雖然培養興趣重要,但競賽的存在也功不可沒。因為競賽,有了明確的解決問題的目標,而且一步一步越來越難,循序漸進,能在積累知識的過程中獲得超越別人與自己的成就感,讓自己真正進入領域。像優必選這樣的機器人創造企業,也會推出【鐵甲小雄心】這樣的機器人綜藝,也會發起全球青少年機器人挑戰賽,這超過了一般教育機構,提供寓教於樂和寓教以賽的方式,透過提供統一的競技平台,更能讓小朋友們通團體競技和趣味賽事等形式激發科技創新精神, 檢驗創意搭建、邏輯編程、運動控制、團隊協作等方面的學習成效,收獲技能和心理的成長。

21世紀機器的世紀。編程就是與機器溝通的方式,是獲取知識的必備技能。小朋友們早日探索,就能早日接受這種不同的思維方式,離未來也就更近一些。