我寫作喜歡附上閱讀指南,因為這樣可以幫助讀者思考要不要得花時間看
。我認為了解作者、內容的背景是閱讀的一個重要的前置作業,一來,不是所有文章都值得花時間看,二來,每個階段都有適合學習的知識
。
舉個例子來說:我覺得對新手最可惡的建議,就是叫他們去學基礎
的東西。網路上,很多新手會問「想學程式怎麼入門」,結果許多人就推薦他們去學C/C++,甚至看計算機概論、演算法與資料結構。我覺得這些建議很過分,因為新手最重要的目標應該是尋找到學習的成就感和興趣,而不是從所謂基礎的東西開始。
那種基礎叫做知識(領域)的基礎,而不是學習(技能)的基礎。新手連「術」的階段都沒有碰過,一下子進入到太深的「道」,他們只會覺得茫然,覺得「我到底學這個做什麼?」「我是不是沒有天份」,最後因此從入門到放棄。
尼采曾說過「人沒有辦法理解他們未曾經歷過的事情」,因此對於一個連程式都沒寫過的人,再怎麼解釋數據結構和演算法的重要性,他可能也無法理解。對於不同階段(外行、新手、入門、高手)都有不同適合的閱讀材料,新手去閱讀高手的文,或是高手去閱讀新手的文我都不適合。學習應該一步一步來,慢慢的進階,才是最有效率的作法。
我是個入門~新手的階段,會寫些小專案,但是沒什麼實戰經驗,然後也沒什麼計算機基礎。因此該系列的內容,都只是初次學習心得,嚴謹性、正確性有待驗證。
離散數學、計算機概論是計算機領域的基礎,也是我現在正在學校修的課程。但老實說這些鬼東西(像是二進位,邏輯、電路)對一個寫網頁的人真的很「沒用」。因此每次上課,其實邊學我就會邊在內心咆哮「所以...我知道這個要幹嘛?」「會二進制可以吃嗎?」但是同時,我內心的一個聲音也告訴我,我會覺得沒用,純粹是因為...我的程度還沒有到能用上這些知識的階段而已
。作為計算機領域的基礎,這些知識(領域)的基礎,當然值得花時間學習。
但是,既然我現階段覺得這些很「無用」,那該怎麼辦呢?——那就寫成文章吧!順便也可以複習課程內容。從另一個角度來說,我覺得這些基礎的學科,我一生可能也只有在學校的時候才會想要認真學,畢業後肯定就比較少耐心和時間去研究如此艱深的知識。相較起來,至於JS、Phython之類的「術」,工作後則有的是時間寫到死,網路上也有許多相關資源。因此算一算,就決定選計算機概論當主題了。
任何從離散數學、計算機概論、程式設計上學到的內容,包括我自己閱讀資料結構、演算法,以及我學程式的心得。基本上跟計算機相關的內容都可以,當作是學習紀錄。
目前的規劃如下
Day2:[心得]一個語言如果不改變你的思考方式,就不值得學?談程式語言的本質
Day3:[心得]心得體悟:學習程式的方法
Day4:[心得]工程師的三個重要能力
Day5:[演算法]如何衡量程式的效率?——論時間複雜度(Time Complexity)
Day6:[演算法]演算法是什麼?讓數學王子高斯教你什麼是演算法
Day7:[演算法]用JS實現冒泡排序
Day8:[計算機概論]十進位和二進位的轉換
下一篇:Day2:[心得]程式語言究竟是什麼?