近幾年很流行斜槓或轉職,人人嚮往著財富自由的那一天,其中很多人為了跟上科技趨勢立志成為工程師而開啟了學寫程式的旅程,雖然想學習寫程式,但部分大學或高中生還很迷惘,不知道要怎麼選擇程式語言、不知道要用自學,報名程式補習班,還是購買線上課程的方式學習,這次會帶著大家了解三個熱門程式語言,比較三種不同的學習方式,也會跟大家分享成功學習程式的三大心法,讓大家學習的方向更清晰!
如何選擇程式語言?
程式語言百百種,在開始前要先決定自己想要學哪種程式語言,但這麼多種該怎麼選擇呢?這次千挑萬選後精選了業界前三名熱門的程式語言,在了解這些程式語言之間的差異及優缺點後相信大家一定可以找到自己命定的第一個程式語言!
C語言
C語言是一個歷史最悠久,也非常通用的程式語言,能夠用很簡易的方式編譯(寫程式)、處理低級存儲器,甚至不需要任何運行環境支持就能運行編成語言(讓程式運作),它編碼方式和邏輯算是C++、C#等大多數程式語言的發展基礎,簡單來說就是一個始祖等級的程式語言,在任何環境都能暢行無阻!接下來一起好好了解學習C語言有那些優點和缺點吧!
學寫C語言的優點
1. 語言簡潔緊湊
C語言總共只有32個關鍵字,9種控制語句,書寫的形式很自由,有區分大小寫。
2. 靈活應用,跨平台也能運作
無論是在Linux、Windows、MacOS等等不同的平台,C語言都能暢行無阻!
3. 表達力強,可以寫各種複雜的數據結構
與其它程式語言相比,C語言本身有低級語言的許多功能,也具備高級語言的功能,可以處理任何簡單到複雜的的程式需求。
4. 可移植性高,無論任何環境
因為C語言86%的代碼都是共用的,所以即使把C語言移植到不同環境也幾乎不需要改動,或只需要稍微調整就可以正常運作,其他程式語言在環境的變換中很難像C語言一樣靈活通用!
學寫C語言的缺點
1. 語言雖然簡潔,但很多縮寫不容易習慣
簡潔緊湊的優點在學習者看來有好有壞,缺點在於縮寫很多,會需要更大量的練習去熟悉不同的縮寫,
2. 指標觀念需要時間理解
C語言畢竟是始祖等級的程式碼,加上通用的特性,在理解指標觀念上很需要時間作觀念上的建立。
3. 不容易處理
當程式有錯誤時不容易除錯(debug),處理字串時也會很麻煩。
學寫C語言可以做什麼工作?
1. 韌體工程師
2. 作業系統開發
C語言很常使用在作業系統的編譯器中,成為硬體和軟體之間的橋樑,如果想成為專業的作業系統開發者,就一定要學C語言!
※程式語言可以運用在許多不同的職業,以上職業僅供參考。
Java
「跨平台」就是Java的設計初衷,也是它最大的特點,擁有跨平台、泛型程式設計、物件導向的特性,被廣泛的應用在企業級Web應用開發和行動應用開發。
學寫Java語言的優點
1. 可以跨平台,相容性高,可移植性高
如同它的設計初衷,在不同平台的相容性高,可以移植到不同環境,只需要稍微改寫就可以運作。
2. 安全性高
編譯過的class檔讓別人無法隨意讀取。
3. 市場需求高
Java在業界很廣泛被應用,Android 作業系統、Facebook、Google 等大型科技公司的物聯網應用程式都是用 Java 開發。所以學會Java程式語言會是很加分的技能之一。
4. 效能好
Java屬於編譯式語言,效能上比直譯式語言快!
學寫Java語言的缺點
1. 編譯過程繁瑣
Java語言的OOP架構設計的非常嚴謹。即便寫個簡單的Hello World,也需要很多手續,不像JS或Python,簡單寫個 print() 就可以輕鬆搞定。
2. 運行速度相對比較慢
Java編譯的時候不像C++直接編譯成本地機器碼,相反的Java會需要從網路上載入類位元組後才能執行,因此運作速度偏慢。
學寫Java語言可以做什麼工作?
1. 開發 Android APP
2. 架設網站
3. Java大資料技術
4. 物聯網應用程式
5. 遊戲程式設計
6. 軟體設計
7. 桌面應用程式
※程式語言可以運用在許多不同的職業,以上職業僅供參考。
Python
Python 是一種直譯式、物件導向、功能強大的程式語言,可以將枯燥乏味的事情自動化、分析數據、AI人工智慧與機器學習也能設計屬於自己的遊戲等等,是一種很全面的程式語言,可以應用在不同領域。
學寫Python語言的優點
1. 很直觀,容易撰寫
Python的程式碼簡潔又很容易閱讀,而且不用經過編譯(compile)就能夠執行程式,很適合入門學習的程式語言。
2. 功能強大,有很多函式庫可以輕鬆使用
Python 具備十分豐富的函式庫,裡面有很多套件都可以使用,Python也很多模組可以運用,由此可知Python有很強大的功能性,應用上比其他程式語言容易而且輕鬆。
3. 應用範圍很廣
Python可以應用於無論網站、應用程式、數據分析、機器學習或爬蟲等等,所以學好Python有很多好處,未來可以應用在不同領域,也能有更多職業選擇。
4. 可以跨平台運用
無論是哪個系統,Python都不需要重新編譯或轉換,可以直接運作。
5. 可以免費下載
Python 是一款自由開發的軟體,提供大家免費下載。
學寫Python語言的缺點
1. 屬於高階語言,執行速度較慢
因為Python的函式庫很豐富,但函式庫一多就讓執行速度變慢,為了功能而犧牲了效能。雖然一般程式使用上是感受不太出來,但當是處理大量數據分析或大量資料檢索的時候,速度上就會有明顯的差異。
2. 注重規則:縮排
在寫Python時一定要用四個空白鍵縮排,如果沒有按照規則就會出現錯誤,這是必須遵守不變的原則。雖然麻煩,但只要養成習慣就不會是問題!
學寫Python語言可以做什麼工作?
1. 數據處理與分析
2. AI人工智慧
3. 網站開發、軟體開發
4. 自動化測試
5. 3d遊戲開發
6. 網路程式設計
7. 科學計算
※程式語言可以運用在許多不同的職業,以上職業僅供參考。
>>延伸閱讀:初學者Python入門指南:搶占未來就業先機!Python自學書籍資源不藏私分享
用哪種方式學寫程式比較好?
自學程式
網路資源
1. YouTube
彭彭的課程(https://www.youtube.com/channel/UCguZS-y7codLSt6vpkVdnKg)
東東程式學(https://www.youtube.com/@user-dq1fx8qs7m)
2. Facebook社團推薦
追蹤Facebook社團的好處是每天滑FB可以看到不同程式資訊,讓自己的生活中也可以充滿程式,在選擇社群時可以注意社團文章規範、貼文內容、問題的互動率和回覆者有沒有尊重彼此的看法,程式丼起來、Taiwan 程式語言讀書會[JAVA,C,C++,C#,VB…等不拘]、Python Taiwan就是幾個不錯的社團。
3. 程式社群平台
無論是前端或後端工程師、Python、PHP等等社群都有不同的特色。例如:Front-End Developers Taiwan主要討論前端網頁技術、網頁設計和使用者介面等等;Backend 台灣 (Backend Tw)有很大量的後端相關內容及技術情報,包括系統分析、工程、資安、維護等等資訊;Python Taiwan有很多實用的資訊,常常會有國內外的資源技術分享、討論;PHP 台灣可以取得PHP開源專案,也可以在社群中分享與交流。不同的程式語言會有各自的的社群平台,可以從平台得到最新資訊。
4. 線上工具
高中生程式解題系統(https://zerojudge.tw/)
這個線上練習平台很適合當練功平台,裡面有各種C、CCP、JAVA、PYTHON試題讓大家可以練習,很適合程式新手的學習平台,寫完試題送出後系統會開始評測,可以從評測結果中了解自己的程度,在平台上,不只可以練習程式,也可以或在討論區互相交流。
可以發現線上學習資源雖然很多,但內容程度參差不齊,會需要花時間蒐集與整理資源,如果想要更有效率的學習可以先搭配線上課程,只要把程式基礎與邏輯建立好,未來在學習上自學也可以很順利。
書籍
建議大家參考學校使用的書籍,或是詢問資深前輩建議的學習書籍,雖然書籍資源豐富,但學習程式重在邏輯的建立,需要有足夠的理解力了解程式的運作邏輯概念,否則容易陷入從頭到尾看不懂的漩渦當中,通常會需要找其他方法理解書籍內容,例如在社群提問或是找YouTube影片了解相關概念等等。然而讀懂程式和會寫程式是無法畫上等號的,一定要在閱讀後不斷練習,把所學應用出來才是真正的會寫程式!
>>相關書籍推薦:學AI真簡單(I)~ (VI)
實體程式課程
在學校上程式課程或是到補習班學習程式語言都可以有系統的學習程式語言,在課堂中可以即時向老師提問,但還是會需要花時間到補習班上課,而且學習的時間會比較侷限,課程中會需要勤做筆記錄重點,比較沒辦法有效率的學習程式語言,建議想要打好基礎的人一定要在課後安排練習的時間。會實體課程推薦給習慣照既定課表學習的學生。
參加營隊或夏令營也是不錯的選擇?
跟一群志同道合的同學一起參加營隊,過程當中互相交流與激盪不但可以吸收到更多課本上學不到的東西,像是培養領導能力、團隊合作溝通、成果發表等等,這些能力都是未來可以運用到的。現在有很多程式夏令營或寒令營可以選擇,推薦大家參加AI4kids每年都會舉辦的AI營隊:AI醫療專題實作營、AI運動專題實作營、AI音樂專題實作營,參加AI營隊不但可以提早接觸AI人工智慧,也能更實際了解程式的應用面與未來趨勢!
線上程式課程
在這個重視效率的時代,很多人選擇買線上程式課程學習,不但可以節省時間與空間的限制,也可以依照自己的程度選擇適合的課程與師資,從基本的Python程式語言基礎入門、Python程式語言資料科學開始學習,一直進階到深度學習-AI實作等等,有很多課程可以選擇,也能更有系統性的學習。線上課程的好處是一次性購買可以在線上無限重複觀看加深學習印象,也會有課後作業,讓大家練習所學。課程結束後可以領完課證書豐富自己的學習歷程!
>>延伸閱讀:三分鐘搞懂AI人工智慧是什麼?發展趨勢、各領域應用及職業
為什麼最推薦用線上課程學習程式?
線上學習不像一般傳統的方式,可以更客製化的選擇及安排自己的課程,不用被實體課程固定的時間給侷限,也不用花費多餘的時間找資源,根據自己需求選擇不同的師資,有很多從基礎入門到進階的系列課程可以選擇,不用擔心老師有沒有空,只需要自己安排好上課的時間,依照自己的節奏紮紮實實的學習與練習,將基礎打好,累積自己的程式實力!
自學 | 實體課程 | 線上課程 | |
---|---|---|---|
資源 | 線上資源、程式書籍 | 依課程而定 | 依課程而定 |
選擇性 |
|
|
|
學習架構 |
|
官方架構 | 架構依講師經驗而定 |
學習時間 | 彈性學習24小時 | 課程時間固定 | 課程時間彈性 |
記憶性 | 個人記憶力 | 較有限,需即時做筆記 | 可重複觀看課程增加記憶性及邏輯建立 |
學習效率 | 不定-依個人學習特性而定 | 依課程數及課程緊湊度而定 | 較不受限-可彈性安排學習進程 |
學習成效 | 想更有成效的學寫程式,除了知識上的學習,實際的操作才是累積實力的開始! |
學程式應具備的心態是什麼?
細心-好好理解程式的運作邏輯;有問題就問!
學習任何一種程式語言重點在理解程式邏輯,只要清楚瞭解程式邏輯,在寫程式時絕對能如魚得水,剛入門時一定會有一段困難期需要建立邏輯,但只要找對學習方法,就可以減輕學習新東西的痛苦期。學習的過程中仔細的理解它,遇到問題時要馬上提問,例如可以在社團上請教程式高手,也能Google搜尋找解答,或是請教身邊寫程式的朋友,在每一次的提問理解中就是在建立自己的程式邏輯!
耐心-先學就對了!大量實作,不斷 try and error
學寫程式時大家一定要拋開過去的學習模式,過去的學習思維都侷限在只要背起來就可以有好成績,相反的學習程式時需要不斷實作與除錯,唯有自己動手寫出程式碼才能檢視自己的程式邏輯,也能養成除錯的技能,因此在學習程式的這條路上耐心扮演著很重要的角色。如果是遇到進階的問題,會需要進階的知識才能解決,這時新手可以搜集、閱讀更多「進階知識」,甚至觀摩前人的做法,先模仿,再理解,這樣能更有機會突破瓶頸,讓自己更上一層樓。所有厲害的工程師都一定是在不斷寫程式及不斷除錯中養成自己的程式競爭力!
信心-面對「絕望沙漠」(學習瓶頸)階段,有毅力地突破它!
在學習程式的這條路上,工程師一定都會經歷這片絕望沙漠-學習瓶頸,在這個階段一定需要培養自己的信心與毅力,每一次突破瓶頸才是程式能力提升的開始!學習像艾倫圖靈一樣將每次的困難與失敗變為成功的資糧,「那不叫失敗,我只是發現那些方法無法讓我正確的除錯。」
總結
了解後的大家一定對學寫程式這條路的方向更明確,不管是自學、實體課程或線上程式課程學習,只要找對方法,培養正確的心態就可以更順利的學習,在不斷學習與實踐的過程中讓自己的程式能力越來越茁壯!