2018年11月23日 星期五

關於語法的兩個新體悟

學了一個月的 JavaScript,可能因為有 Python 的底子,整體而言還算能上手。彭彭老師在教課時提到兩件事,我漸漸可以體會。

第一件事,程式語言要能上手,就是要學著用簡單的方式想事情。人腦很聰明、直覺的運作很快,但電腦的做法是把事情拆解成小塊小塊,再用土法煉鋼但飛快的速度組裝起來。

以某次課堂的作業為例:「給定一個正整數,求出最接近其平方根的整數。」以 23 這個正整數為例,直接用大腦想的話,答案轉瞬就跑出來了。但電腦就是要求你一步一步地將腦中瞬間浮現答案的過程好好寫下來,個人覺得非常接近建構式數學的邏輯。所以程式語言的解法就是,先從 1 開始做平方,逐步檢視哪 2 個數字的平方數值剛好把 23 夾住,再計算出 23 跟這 2 個數字平方哪一邊的差距較小,答案就是那個數字(以這題為例,23 會落在 4 的平方 16和 5 的平方 25 之間,而 23 較接近 25,因此答案就是 5 )

不知道為甚麼,我自己很欣賞這種樸實的推論過程,用簡單清楚的邏輯想事情,這樣很好。附上解題的程式語言如下:


第二件事情是,寫程式語言到後來,其實比較像寫作文。

這件事聽起來有點詭異,我最初在刷題庫時覺得程式語言就是不斷計算各種數學題目,但後來真的開始寫自己的個人網站,寫到第 500 行以後,才發現任何修改和增刪都宛如大海撈針,命名、順序、架構的重要從此浮現出來。在各種功能函式已經臻於成熟的今天,一般工程師最需具備的並非頂尖演算法邏輯,而是「讓別人甚至是明天的自己看懂現在寫的 code」。

養成良好的 coding 習慣,就從今天開始,尤其是命名。

(下方是幾個這次寫個人網站的 class 範例,我總共開了 26 個 class,無法想像專業商用網站的數量有多驚人)





沒有留言:

張貼留言