關於如何學習寫程式這件事情,我思考了很久,我覺得以自身的經驗來說,目前可以分成三個階段。當然因為我目前只工作了一年左右,還很菜,還算是菜鳥工程師階段,學習的狀況之後可能還會改變,再來分享。

第一階段,有興趣想學,不知道從何學起

第二階段,到英國念研究所

第三階段,開始工作以後

這一篇主要是寫,從一開始我開始對寫程式有興趣,開始想學習的歷程。這個階段老實說,我並沒有很認真學習,只是有點像沾醬油,因為當時動機不明,學習動機真的是很重要。很多時候,可能因為產業趨勢,或者因為朋友家長說說就想去學一點寫程式,可能到頭來也沒有真的學到什麼。當時我也是有點,算是,有學到就學到,沒學會就算了的態度,有點不可取。

第一次開始接觸寫程式是在大二的時候,當時因為跟朋友打賭,去修了基礎程式設計跟數位邏輯設計這兩門課。這兩門課都是我們學校資工系必修課程,基礎程式設計是資工系大一的課,數位邏輯設計則是大二的課。

先講結果,我程設被當了,邏設低空飛過。

程設上的內容是C++  用的書是How To Program 
這本書裡面有很多練習題,可是當時我並沒有好好學,書上的題目也都沒有好好認真做,如果有好好學好好做題目,應該可以進步很快。書中涵蓋了大部分的基本概念,主要就是一些基本的迴圈、印星星那些練習題,進階一點還有寫小烏龜的題目。

至於程設的課程在上什麼,就是從一開始,程設語言,介紹C++,一些歷史,然後進階一些定意,關鍵字,然後基礎型別,int, char 那些,然後講到array, 講到Class這些概念。除了上課以外,還有實驗課,就是到電腦教室,助教跟老師會在那邊看大家練習,有問題可以問他們。考試通常也是上機考,就是課本裡面的那些練習題的類型,然後通常可能有個五題,像是找出1到100中的質數這類的。不過我只有上了程式設計一,程式設計二我沒有上,二的話應該會難一點。



數位邏輯設計,又是什麼呢?這個就是有點偏韌體的部分,IC Design 的部分。其實我當時是比較喜歡數位邏輯設計,但是書我已經忘了是哪一本。這個課學的比較多是像,計算機概論的東西,像是數位邏輯閘,And, Or Xor 之類的,還有不同IC裡面不同的邏輯閘,利用那些東西來設計出,像時鐘之類的,可是實驗課是分成下學期的課,一整學期都在實驗室裏面接電線麵包版,寫實驗結果報告,但是到後期有寫Verilog 把code寫到板子裡面,用七段顯示器可以看到你設計出來的時鐘。期末考試的話則是用模擬程式,可以用拖曳的方式,把IC、電線跟七段顯示器拉一拉變成一個時鐘這樣。

不過整體來說,我在上課的時候,其實沒有好好學,所以也沒有學到很多東西,當時都只是覺得沾個醬油,試個水溫,作業也沒有好好寫。整體狀況慘烈,而且一開始去上課就是一頭霧水,覺得啥都聽不懂,講中文我都聽不懂,覺得無奈。

一直到畢業以後,想要出國念書,申請上了Durham後,覺得不行這樣下去,也擔心自己來Durham念一念被當,就趕快跑去報名了台大資訊系統訓練班。那個是由台大資工系開的課,提供各種課程,我上了Java 跟PHP 老師都是宋浩,當時他是台大博士班的學生,不知到現在還有沒有在教。

總之,我覺得在台大資訊系統訓練班,才真的有開始好好學一點東西,但也真的是才開始。他們的課程有晚上跟假日的課程,提供給一些在職的人去上,上的東西都是很實用又基礎的課程。給想成為程式設計師的入門的人去上的。我覺得在那邊學到了很多,尤其PHP的部分真的幫助很大,後來到了英國也是仰賴當時的投影片。

但是台大資訊系統訓練班偏向實務,所以並沒有太深入在寫程式的觀念,像是物件導向的觀念,雖然有提到,但很短暫,這些還是要靠自己上網學習。網路上有很多資源,像是Codecademy, W3School  都很好用,所以建議也可以多上這些網站練習。主要是,學習動機還是很重要,畢竟初學者,最重要的還是大量的練習,還有把一些觀念釐清,熟悉那個語言。建議一開始可以挑一個語言先好好專攻,再來學習其它的語言。此外,當時PHP我們是用Apache Web Server來host網站,如果未來想要朝Web Developer方面走,平常也可以多看點相關的東西。像是了解,HTML, CSS  這些東西真的都要自己看,即使去上一些UI的課程,主要還是自己要了解,像是HTML5跟HTML4差在哪,CSS3增加了什麼東西。另外,版本控制也很重要,可以學著使用Git,去GitHub註冊免費帳號,開始自己練習,即使自己一個人也可以自己Create Feature Branch 然後試著

git add
git commit -m "Add new file"
git push

等一些基本的東西都熟悉,可以再來看點進階的。

初學者也很推薦看Harvard CS50的影片,裡面有很多有趣的概念。 其實網路上真的有很多資源,如果想學的話,真的可以好好Google 其實我來英國以後也滿後悔當初沒有好好學,當然動機也是一個,當初我並不想成為工程師,只是想學點皮毛當個PM,所以沒很認真。所以可以好好思考,自己想要往哪部分走,往前端的話,就要把HTML, CSS, JS這部分弄好,還有很多像是Bootstrap, Angular Material 那些可以看,之後還有像是框架的部分,像是Angular, React, etc.。而後端的話根據不同的語言,像是寫C#.NET, 或是Python Django, 也有人走PHP Lavaval ,當然使用到框架已經是很深的東西,一開始初學者只是有興趣,可以先學習基本概念,學著解決問題,培養對於寫程式的興趣,還有培養像是命名,縮排之類的好習慣。

至於,身為一個文科生,數學又不行,怎麼入行,其實我覺得開始寫程式以後,文科生好像也不是重點,像是做題目,除了要知道什麼是質數以外,其它好像也沒什麼真的用到數學。或許理工科的很多在高中就是電研社、計算機研究社之類的,對於這些東西比較熟悉,而且他們平常又很常去想一些數學題、解決問題,多少有幫助,可是實際上在學的過程中,大量的練習以及訓練自己邏輯思考才是重點。(我自己覺得啦!) 尤其是在Web Developer 這條路,其實真正用到的數學沒有像是做硬體、韌體那類的多,所以目前我也沒有因為我數學爛而遇到太大問題。希望對大家有幫助!

文章標籤
全站熱搜
創作者介紹
創作者 小吃貨 的頭像
小吃貨

小吃貨的吊絲人生

小吃貨 發表在 痞客邦 留言(2) 人氣(5,222)