那天回到老家,不經意地經過了一個舊書櫃,就這麼瀏覽了起來。「過去都看些什麼書呢?」在書櫃中,找到了十年多前買的《Computer Graphics, C Version》第二版,略略翻閱一下內容,赫然發現,這些日子以來,為了解題而發想的許多思路與解法,竟然都老早印在書本上,那麼這些日子以來花費的時間,又算是什麼呢?

別人已經做過?

聽說撰寫論文時,最困難的是尋找一個適當的題目,而最可怕的是在做完相關研究之後,才突然發現別人早就做過相同的題目(而且做的更好)。在翻開十幾年前買的這本電腦圖學時,一瞬間給我的就是這種感覺,無論是折線的設計、座標的轉換、貝茲曲線與曲面的設計與應用等,每個不都是之前自己花了大把時間在研究的主題嗎?

看過一些如何寫論文的文章,其中多半會強調文獻探討的重要性,也就是在設定的主題範圍內,先大量調查、分類、摘要,甚或是結論諸多文獻,以便瞭解這題目有誰做過、用什麼方法做過(以及思考有沒有可能做得更好)。十幾年來,早就忘了曾經買過這本書了,一時心想著,早知道有這本書的話,先花點時間研究一下內容,或許可以少走許多冤枉路吧!

帶著這樣的想法持續翻閱著書本的內容,「等一下,我真的是這麼想的嗎?」如果早就知道有這本書,真的會先去研究它的內容,然後再來實作相關的建模題目嗎?答案應該是「否」,依照我的個性,不可能先啃完整本書,再來做相關的題目,如果真這麼做,我根本不會知道那些知識要用在什麼地方,大概啃到一半就覺得索然無味,而將書本束之高閣。

看著看著反而有了另一個想法,在持續挑戰各種題目的道路上,我建立了一套系統,或者說是知識體系,它與書上談到的系統既然有吻合之處,這表示某些程度上解題的方向是正確的,這著實是令人開心的一件事,然而,自己的這套知識體系是活的,如果未曾建立起這套系統,就算看懂了書上的一切,對我來說,也不過就是死的知識,不就是為此,才讓自己走在解題的道路上嗎?

先知道還是先動手?

基礎很重要,也許現在不知道學這個有什麼用,然而,日後必要的時候,就會發揮作用。

無論套用在哪個學科上,前面的說法基本上都是對的,身為程式人,這邊的基礎也許就是資料結構、演算法、作業系統、數值方法、集合論、狀態機、圖論等學科吧!日後必要的時候一定會發揮作用,因此,在寫下第一行程式碼之前,還是先把這些基礎學好!

不少人反對這種想法,前陣子很流行使用「學用落差」這個名詞,反映了這種想法下可能的結果之一,為了解決學用落差,將業界使用的技術趨勢帶入校園,這類活動在程式界曾經熱了好一陣子;反對基礎學科的另一個理由就是,在沒有實際用來解決任何問題的情況下,不知為何而學的念頭會越來越強烈,最後,迷失方向,或倒向極端的無用論那一方。

近年來先動手再說的一派居於上風,特別是在程式教育、自造者教育的風潮下,程式、自造者就像是解決教育問題的萬靈丹,越來越簡易上手的技術與工具,加上特意安排的題目,可以讓人在不接觸到基礎難題的情況下,輕易地完成一個作品,這種方式無論是對哪個年齡層,學習之後的回饋都是立即而強烈的,令人著迷到不少教育訓練業者,更毫無顧忌、誇大地,打出了三或四個月可抵大學四年的口號。

感覺基礎學派是岌岌可危了,只是等一下!從大數據這名詞開始興起,到最近的資料科學、機器學習、人工智慧成為顯學,熱到演講或寫作題目若不沾上一點邊,好像就落伍了一樣,現在到處都需要AI、ML的相關人才,只是這些東西背後需要的基礎,可不是想學就馬上學得起來的啊!談到學用落差,既然業界這類主題很夯,好像應該也要將這個趨勢帶入校園不是嗎?這感覺不太對,現在看來,這波風潮讓基礎學派又佔了上風了。

先知道?還是先動手?看來選哪邊都不對!或者反過來說,選哪邊都對!

建立自己的解題邏輯

第一次感覺到自己基礎的薄弱,是在兩年前玩機器人組裝的時候,無論是機器人的動態平衡,或者是機器手臂的繪圖定位,都需要基礎的數學能力,為此花了好一段時間重新複習微積分,也許有人會說,這是因為我動手做了,才會知道哪邊不足,先動手做還是比較重要的,是這樣嗎?那我怎麼會知道要複習微積分呢?當然,在以前那段不知為何而用的日子,我還是學過微積分的。

就算是後來使用程式建模,我也不是在毫無基礎的情況下開始。

十年前寫下的〈電腦圖學入門〉在一開始發揮效用,當你決定走上解題的道路時,就算早已遺忘,然而基礎仍然提供出發的方向,就像在〈站在「數學無用論」的另一側〉(https://goo.gl/sFg50i)中,作者自嘲買了把螺絲起子花上不少時間組裝,不過,至少他一開始還知道要買螺絲起子。

重點在於,在解題的過程中,發掘出自身哪邊能力不足。

如果需要的仍是基礎知識,那就去重拾或者是增加深度,然後試著再動手解決問題,有時會因此遇上一時之間找不到相關方向的難題,那就要試著觀察、釐清問題的本質,從中想辦法創造出通往解答的方向,然後動手實驗印證想法,如此一來,在解題道路上應該有的思路邏輯,就會是自己的,不會因為做法早有人提出,而失去了價值。

這套思路邏輯,還包括了觀察出問題的能力。在學習解決問題的過程中,一開始多半是從別人設定好的問題開始解決,就像練習基本的程式演算題目,或者是簡易專案那樣,然而,不應該滿足於這類被特意設計好的題目,完成這類題目充其量只是在仿作,而不是真正去解決了一個問題。

在踏上解題的道路後,不會有特意設計好的題目,許多問題也不是顯而易見的,觀察、定義問題,會是解題邏輯中極為重要的一部份。同樣地,一旦有能力定義出問題了,就算那問題早就被定義過,也不會因此而失去價值。

忘光之後剩下的東西

據說愛因斯坦曾經說過:「教育,就是當一個人把在學校所學都忘光之後,剩下的東西。透過這股力量培養出能夠獨立思考、行動的人,並解決社會面臨的各種問題。」如果你能走上解題的道路,那要學習到的也是同樣的東西。

有基礎當然很好,這表示遇上問題時,可以很快地找到解題的方向,因為,若沒有基礎,遇上難題時,光是要釐清問題本質與方向,可能都得花上大把的時間。

然而,這也不是壞事(如果問題本質中不包含時間急迫性的話),畢竟,從古至今、各個領域,早就累積了無數的基礎知識,你不可能全部具備,這時需要的就是「忘光之後,剩下的東西」,用它來將已知與後來習得的東西加以組織運用,以找出解決的方式。

還有,別忘了,就算是堅持中間路線,已經有基礎、也有動手的經驗,也別忘了,持續思考有無更好的可能性。就像教人寫論文的文件中也會提到:題目別人已經先做了,自己做的有沒有不一樣,或能更好呢?

因此,走在解題的道路上,有了這種想法,重新翻閱十多年前的舊書,也是個不錯的體驗呢!

專欄作者

熱門新聞

Advertisement