大一總結
打去年的今天開始,我最常問自己的問題是:「我想要的到底是什麼?」
如今已經從大一登出快兩個月了。
大學的第一年經歷了很多,一直以來都想寫篇長文來沈澱這些過程。剛好今天雙主修確定通過,決定趁這個時機談談作為一個在台大物理待了一年的學生,闖進數學和電腦科學這兩塊領域的一點想法和心得,以及大學至今對於自己的一些反思。
這一年來我的活動不多。沒在跑友會、沒報名之夜、沒帶物理營、沒辦物理週,也沒加入社團。稍微有參與的活動,大概就是系足球隊練球時過過冠霖中洞。我平常也沒在做什麼社交,會接觸的大概就是偶爾一起吃宵看巨人的高中同學和原 130 跟 141 的室友們。原以為躁動如我會耐不住性子,但結果是我跟這種大學局外人的生活十分對頻。
上大學以來的種種決定,上大學前一年半的經歷造成了很大的影響。大概是自高二下確定保送後,我得到五百天的完全自由。這五百天雖然有不少時間在耍廢,但更多時間是在找尋自己在一些未知領域的可能性。
轉眼間來到台大,當很多人開始迫不及待的準備參與各項大學活動時,我腦中只有收心的念頭。當中最大的原因在於,長時間的自由跟探索、與人對話,讓我深切暸解到自己各方面的狹隘與弱小,也決定更誠實的去面對自己。
世界很大,我知道的東西還太少。學問很深,我理解的內容還太淺。
我開始思考,有哪些東西是可以透過內化一直保留在腦中的,又有哪些東西只屬於表層,不該在上面投資太多時間?
我開始思考,我學的一切在學術上的意義是什麼?市場上的價值是什麼?對未來的貢獻又有哪些?
我開始思考,除了物理,我還具備什麼樣的潛能?我的極限在哪裡?我要如何在這世界上留下自己的足跡?
我開始思考,我想要的到底是什麼?
越是深入思考,越是意識到,自己想要做的、需要做的、重要的事情實在太多。時間很珍貴,才一晃眼大學的四分之一就結束了,就好像過去二十年已經回不來一樣,但當中被浪費掉的時間卻數也數不清。我必須更謹慎的去做未來的選擇跟時間安排。
我必須再更深入的暸解自己。
Mathematics
這些反思不斷的反映到後來的許多關鍵決定。例如在開學一週後,我在選課系統退掉了一堆物理系必修,打電話回家說:「我不想用物理系畢業。我要到數學系!」,讓家人當下一個措手不及。
老媽完全沒有任何心理準備。她用難以置信的語氣問:才開學第一週你就在想轉系,會不會決定的太魯莽?
但支撐在決定的背後,是與自己內心無數次的對話。
我所熱愛的物理,具備著數學的抽象結構;我所熱愛的數學,具備著物理的原理意涵。我在物理的世界一直鑽一直鑽,停下來休息時,已經達到一定的深度了,但似乎還缺少點什麼。當開始審思這個問題後,才發現能讓我燃起熱情的,並非物理過多臆測且不嚴謹的部分,而是支撐在它背後那些神秘結構的抽象本質。
要說想認識這些結構本質的原因其實也很單純。一部分是因為它們很酷、很漂亮,常常跳脫普通人的直覺。另一部分則是學會它們能間接的讓我達成強化邏輯、提升內在思考能力的理想。
自開始接觸數學和物理起,我便夢想著有一天面對其引伸出的各種問題時,能自然而然地撥開如同迷霧般模糊的表象,直接看透藏在背後的本質,然後在心中愉悅的告訴自己:Oh, It's trivial。
這樣的理想使得我學習喜歡走極簡風格:只把最基本的觀念弄懂、記熟,變成不用思考便能反應出來的直覺。我想要用最簡單但不變的觀念,以不變來應萬變,將難解化為直觀。
因為不喜歡在表層鑽牛角尖的性格,我國高中時的數學成績並不是很好,也一度以為自己不適合做數學。小學數學重在觀念,中學數學重在技術,大學數學重在理論。中學數學實在太多枝微末節、競賽又仰賴著大量的經驗,能掌握這些技術固然有其價值,對我來說卻缺乏吸收理論的實感。
直到真的踏進大學數學的領域,才發覺一切變得不一樣了。不管是精巧又不失嚴謹的定義,還是將問題抽象化做深層分析的方法,在數學系似乎都可以學到。分析、代數、幾何等前人們所累積的智慧更是令我神心嚮往。
從更深層的角度來看,我所感受的大學的數學不僅是理論,亦是一種精神。每個習武的人,都想要達到無招勝有招的境界,我也希望能在學習各種理論時能達到這般境界。大學數學的訓練會將邏輯思考的能力細細打磨。打磨的好,最終練就的是洞悉問題的能力與思考犀利的程度。
我認為,若能將自己數學的底氣提升到一個境界,效果便會像在《獵人》裡學會念一樣,許多理論和技術的門檻將會瞬間低一大截,視野也會更加寬廣。
但現在的我還不成火候,想要進化,必得經歷這段從根本上的邏輯打磨才算完整。認識美麗的結構和強化自我的邏輯,這是我來到數學系最想獲得的兩項能力,也是決意跨足數學的最大主因。
Computer Science & Programming
呼應一開始對自己的期許,除了本業以外,我也希望能開闢一些其他領域的潛能。於是在數學系打滾的同時,也將一部分精力放到電資領域上。可能因為老哥的工作關係,我在這塊領域對程式設計和電腦科學的相關知識特別有興趣。
Udacity 的 CS101 是我學習程式設計的開端。它不像普通的正規學科用螺旋式的教法堆疊知識,為了強調扎實且涵蓋廣泛,反而容易讓人抓不到學科的重點思想。相反的,這門課的教學是 project 導向,用很淺顯的方式介紹了程式設計的基本邏輯和習慣,再一步步的引導學生用 Python 實作出一個簡單的搜尋引擎。對我這種沒碰過程式碼的人來說,它讓我在程式學習上有了方向,也對於接下來可以深入挖掘的東西感到興奮。
在電腦科學上啟蒙我最大的是 Coursera 的 nand2tetris 這門課。它讓我實作了從最底層的電路邏輯閘一路向上組建出 CPU、記憶體並拼裝成一台電腦的過程,也讓我經歷了在這台電腦上開發組譯器、虛擬機、編譯器、作業系統的原理設計,並在同時學會一些基本的資料結構與演算法和程式開發。
Ric 教授的 Web Programming 專題是讓我能力真正大幅提升的關鍵。我在學習 Web Programming 的過程接觸到很多有趣又強大的開發技術(ReactJs、NodeJs、Express、webpack、Babel、SQL、MongoDB、Git、Redux、Mocha...),也慢慢學會怎麼將多項技術整合並拿來架構比較大的程式專案,以及因應需要去查 document、找第三方工具支援。期末專題用 Github flow 與學長合作開發 Beact 以及後續推產品的過程更是超級有趣,常能在學長身上學到一些自己沒想過的想法和技術。
終於走到今天,對電腦科學已不再陌生。但這個學門還有許多待我去學習的東西,而我也不打算滿足於現況停下腳步。因為作為一個喜歡結構的人,這一連串的探索讓我感到興奮,也讓我覺得電腦科學真的是個很不得了的領域,它的結構美感和物理、數學不太一樣,卻又出奇的相似。
用樂高來比喻的話,物理學教你如何把一個已經蓋好的房子拆到最細,讓你了解到「原來房子是用樂高這樣堆起來的啊」。當你在拆卸房子的過程中,拆得愈細,會愈深入了解了房子的組成,於是你可以用這些經驗去打造自己心中的摩天大樓,也就是所謂的科技。
電腦科學則剛好相反。它教你怎麼用小小塊的樂高推起房子,讓你知道「哦,原來樂高可以用這種方式蓋出房子啊」。你會透過這些蓋房子的經驗,去優化蓋的方式;也會透過改良樂高的材質和樣式,讓你蓋出來的東西更加穩固。哪天你想要做船、做飛機、做太空梭,都可能會用到這些固有的經驗和設計模式。你甚至可以用樂高做一台機器人,叫它幫你蓋其他東西。
至於數學在做的事情是雙向的。它告訴你怎麼拆卸,也告訴你怎麼組合。從程式設計的演算法、到物理理論的分析法,再從最表層的解題技術、到最深層的抽象定義,當中用到的都是數學。
我回頭一看才發現,原來這些知識理論全都是串起來的!
Future
我不想要只懂理論卻不懂技術,也不希望只會實作卻不知道原理。物理讓我感到愉悅、程設讓我感到強大、數學則讓我感到踏實。每個學問都有其精采的地方,以前一直在單一專業向前衝,如今稍微改變速度、到其他領域繞了幾圈,竟然就此大開眼界。
回到最根本上的問題,我到底想要什麼呢?
自從上大學後,很多問題常常會在我腦中盤旋:要怎麼樣才能最大限度的從大學吸收學問?畢業後到底要不要讀研究所?到底要先留台還是出國深造?未來要待學界還是創業?
計畫總是趕不上變化。還記得剛進台大時看到了歷年開課,我興高采烈的在 Excel 排了一個四年的課表計畫。如今那個 Excel 檔已經改到第十個版本,裡面的內容也與當初大相逕庭。
舉例來說,我原本只打算把數學當興趣,沒想到最後會發現對我來說,當一個懂物理的數學家比當一個懂數學的物理學家更加吸引人。我的課表從此多了分析、代數、幾何和一堆數學系的課。
舉例來說,我上大學前壓根沒想到現在會寫這麼多程式。但一路寫了幾千行 code 下來,不知不覺中開始想要在這塊領域變得更加專業。我的課表又多出了DSnP、演算法、Compiler、SP、OS、計結等課程。
一個念頭的改變,就足以造成自我的龐大動盪。作為一個學習胃口極大的學生,之後要是再繞去其他系晃,又難保不會產生什麼新的想法。
不過這也讓我得到了結論。
未來還有三年,既然計畫趕不上變化,那就繼續觀察、等待。我不需要有一個明確的目的,也不需要任何對未來的預設。我只要盡情的的認識並學會我覺得很酷的東西。東西有趣、我有能力,就鑽進去。
這就是現在的我想做的事。