想學寫程式該如何入門?初學者怎麼選擇程式語言?完全沒有 ...
文章推薦指數: 80 %
想做UI 或平面設計
Skiptocontent
LastUpdatedon2021-12-11byJeslyn
在這個資訊科技爆炸性發展的時代,人們生活已離不開網路與各種電子產品,尤其手機幾乎像是身體的一部分器官,每天「不滑不行」。
這些電子產品背後是由一個個軟體程式串連運作,使得「學寫程式」越來越夯,許多國家紛紛將程式設計納入學校必備課程。
而身為軟體工程師的我,身邊不乏有一些無資訊或電腦科學相關背景的朋友陸陸續續發問:
「沒有基礎但想學程式,不知道該從哪裡開始?」、「怎麼選擇適合自己的程式語言來學習?什麼適合初學者?寫code會很難嗎?」…
你也有類似的煩惱嗎?如果答案是”Yes”,那一定要好好看完這篇文章!
對新手來說,要先找到「為什麼想學」,再思考「什麼適合自己」,選擇恰當的學習方式與工具,並建立正確的心態,才能保持學寫程式的熱情與動力。
本文章之快速連結
學寫程式的目的是什麼?無特別目標,純粹想學有特定目標,想做出一個成品想做App想做UI或平面設計想架設網站如何選擇適合自己學習的程式語言?找到合適的教材與工具找到資源幫助解決難題前5熱門程式語言比較C語言JavaPythonC++C#程式語言的基礎邏輯相通學程式應具備的心態是什麼?一定要好好理解程式運作邏輯大量實作,不斷tryanderror面對學程式的「絕望沙漠」要有毅力與正確的方向結語
學寫程式的目的是什麼?
很多人想學寫程式的動機其實很單純,也許「只是想了解寫程式是怎麼一回事」、「想做個自動化的小工具」或「想幫助自己的工作更有效率」…。
你為什麼想學寫程式?只是單純想學但沒有特定目標,還是想做出一個東西(比如App、網站…)呢?
無特別目標,純粹想學
如果你只是純粹想學,覺得以後可能會用到,先學起來鍛鍊一下腦袋、培養邏輯思考,也許可以從使用較廣泛的幾個程式語言下手。
如下圖,C、Java從2002年以來穩居前2名,隨後是C++,而Python近兩年竄升,普及程度逐漸追過C++。
截自 TIOBE–Top10程式語言趨勢圖
有特定目標,想做出一個成品
如果設定好目標,網路上有許多免費資源可以幫助學習,想學得有系統或深入一點,也有許多付費課程可以去上。
針對不同目標,簡介如下:
想做App
你要先決定選Android還是iOS,這二者大不相同,Android主要是寫Java來開發,而iOS大多是寫Swift語言,且只能在Apple自己的裝置運行,所以還需要一台Mac才能進行。
想做UI或平面設計
若你要走網頁平面設計,學習脈絡大概會是HTML=>CSS=>JavaScript,先嘗試把圖層轉成HTML,設計CSS將格式與功能分開,再寫JavaScript讓網頁增加互動性。
如果接下來要走前端(Front-end),就把JavaScript學到底、用到底。
想架設網站
若不需要有太複雜的客製化,那你不一定要會寫程式,有許多功能強大又好操作的軟體可以利用,比如WordPress、Wix、Weekbly…。
尤其WordPress的用戶量很大,所以有非常多功能完整的擴充外掛工具分享,可以方便快速地安裝使用,不必自己開發,只要學會用這些工具就行了。
但想扎實的從底層學習則另當別論,同樣舉WordPress為例,就是由PHP語言開發的,搭配網頁設計一定要用到的HTML、CSS、JavaScript等,這些程式語言都是網站前端開發的基本元素。
如果再加上後端(Back-end)開發,就還有資料庫和WebServer要考慮與學習。
點我到Hahow學程式
點我到六角學院學程式設計
如何選擇適合自己學習的程式語言?
多數新手學習程式最常問要從哪個程式語言學起,不過「怎麼找到合適的教材與工具」以及「遇到難題時,怎麼找到資源幫助解決」才是最首要考慮的,而非「如何挑選第一個程式語言」。
找到合適的教材與工具
有的人喜歡從文字學習、有的人喜歡從影片,有的人喜歡理論式學習、有的人則喜歡實務操作,每個人的學習喜好不同,適合的學習方式也不同。
你一定要找到自己喜歡、恰當的方法,以及能幫助你有效學習的教材與工具,這樣比較容易繼續學下去。
找到資源幫助解決難題
每個人擁有的資源不同,如果你的身邊有工程師好友,跟他學同樣的程式語言是最方便快速的,遇到卡關想放棄的時候,拜託他稍微指點,你也許一下子就能茅塞頓開,突破瓶頸。
尤其,對新手來說,剛開始最容易遇到環境安裝問題,如果一直解不了,真的會超級崩潰想放棄,但這對工程師朋友來說可能只是apieceofcake,因為這種小事就放棄學習程式不大值得。
此外,大部分第一手的資料都是英文,所以看懂英文也很重要,若是你的英文能力不錯,可以找到非常多很棒的國外網站或線上課程,享用更豐富詳盡的資源。
而如何準確下關鍵字讓Google搜尋到真正有幫助的資料,是你值得琢磨的能力之一。
前5熱門程式語言比較
如果你做了一些功課,仍決定不了要選哪個程式語言開始學習,絕大多數人會從熱門且普及度高的前幾名中挑選,這些程式的學習需求量大,相對地資源也較多、較完整,你可以參考。
截自TIOBE–2021年程式語言流行度排名前5名
從上圖中可看到,相較於去年,前5名的程式語言不變,只有前3名的程式語言互相交換排名而已。
以下簡單介紹與比較前5名熱門的程式語言,希望幫助程式新手能快速、大致地了解,並做出選擇:
C語言
C是一個歷史悠久且非常通用的程式語言,能用很簡單的方式編譯,所以速度快、容量小、移植方便,大多在硬體上使用。
C語言把很多底層操作交給使用者處理,不像Java或Python會處理好很多底層的東西,所以初學者會需要學習多一些底層相關知識,也需要撰寫多一些程式碼,不過換個角度,它也因此較彈性、靈活、高效。
所以,非常適合想要學到更多有關電腦軟硬體底層相關知識和技術的人。
★C的優點
靈活方便、簡潔緊湊數據類型豐富、表達力強、可移植性高允許直接訪問物理地址對硬體進行操作能夠跨平台使用
★C的缺點
官方無大型函式庫,都要親手寫或下載別人寫的code當程式有誤時不容易debug(除錯)處理字串很麻煩
※推薦書籍:(適合剛入門、還沒有基礎的初學者)(1)C語言入門精要(2)入門首選C語言程式設計附範例檔※如果你的英文程度還不錯,推薦C語言入門的線上課程:(1)CProgrammingMadeeasyforBeginners-StepbyStepApproach(2)CProgrammingForBeginnersps.不管是書還是線上課程,選一個自己能看得下去的,然後認真地讀完書/上完課+仔細地跟著裡面的實作練習,都可以大大增加功力!
Java
Java的設計初衷就是跨平台,而這也是它最大的特點,其結構與風格十分接近C++,採用C++物件導向的特性,但改善許多C++的缺點,所以熟悉C++的人,學起來會特別輕鬆。
Java的靈活性和多功能性,讓應用程式得以「一次編寫,隨處運行」,解決跨平台、跨裝置的麻煩,使其應用廣泛,可以說無所不在,舉例如下:
用戶超過20億的Android作業系統主要就是用Java開發。
許多金融業在處理程式交易、撰寫相關文件、資料處理專案也用Java來設計系統前台和後台,如電子交易系統、ATM等。
Facebook、Google等大型科技公司逐漸朝物聯網佈局,絕大多數物聯網應用程式以Java撰寫。
有名的大數據平台 Hadoop 以Java為框架編程。
(ps.雖然Hadoop是著名的大數據平台,但目前大數據處理的主流是用Python,不過只要Hadoop 猶存,Java依然不可取代。
)
Java程式設計是現今市場上需求最大的,工作機會很多,若未來有意朝專業的軟體工程師邁進可以考慮。
★Java的優點
跨平台、相容性高應用廣泛安全性高
★Java的缺點
執行速度緩慢(為了改善C++且更具便利性所導致)編譯過程繁瑣停止更新免費版本
※推薦書籍:(適合剛入門、還沒有基礎的初學者)(1)深入淺出Java程式設計(2)從零開始!Java程式設計入門(3)圖說演算法:使用Java/電子書※推薦線上課程:(1)【Java程式語言】從0到1(2)從零開始學JAVA程式設計(3)Java編程語言從入門到精通ps.不管是書還是線上課程,選一個自己能看得下去的,然後認真地讀完書/上完課+仔細地跟著裡面的實作練習,都可以大大增加功力!
Python
Python是一種直譯式、物件導向、功能強大的程式語言,其設計宗旨力求程式的結構清晰、明瞭,所以特別強調程式碼的可讀性與簡潔的語法,相比於C或Java,Python讓開發者能以更少的代碼表達想法。
由於AI和BigData相關概念與技術日益盛行,使得Python從2018年慢慢崛起,是近期熱門程度上升幅度最高的語言。
如果你只是想先嘗試寫程式、體驗寫程式的感覺,Python是我最推薦給什麼都還不懂也不會的入門初學者,因為:
程式碼簡潔又容易閱讀,不用經過編譯(compile)就可以執行程式,對初學者較友善。
簡單易學但又功能強大,不僅能編寫網站、桌面應用程式、開發遊戲等,還是機器學習&深度學習等資料科學應用的重要程式語言。
★Python的優點
容易撰寫,非常直觀功能強大,有許多函式庫可以輕鬆使用跨平台應用範圍廣,ex.網站、應用程式、機器學習、數據分析、爬蟲等
★Python的缺點
高階語言,執行速度比其他語言慢,同樣地,程式碼也比其他語言少好幾倍底層的處理沒辦法自己改注重縮排,一定要用4個空白鍵縮排,沒照此規則會出現錯誤
※推薦書籍:(適合剛入門、還沒有基礎的初學者)(1)深入淺出Python(2)Python零基礎學程式設計與運算思維:王者歸來(3)精通Python:運用簡單的套件進行現代運算※推薦線上課程:(1)Python–輕鬆學會寫程式(2)Python入門特訓–基礎實作到證照攻略(3)Python資料分析–入門實戰(4)Python基礎課程和網路爬蟲入門實戰ps.不管是書還是線上課程,選一個自己能看得下去的,然後認真地讀完書/上完課+仔細地跟著裡面的實作練習,都可以大大增加功力!
延伸文章1:Python是什麼?Python可以做什麼?新手必看Python入門初心者懶人包延伸文章2:Selenium是什麼?用PythonSelenium自動爬網頁抓報表,初學者必看的簡單教學
C++
從C++這個命名應該不難理解它是C語言的加強版,最初設計主要目的就是將C語言實現物件導向,隨後也不斷增加新特性,融合新技術與原有技術,成為使用非常廣泛的電腦程式設計語言之一。
C的程式基本上都可以在C++直接使用。
初學者如果想從C++入門,需要很大的信心,因為C++複雜且不是那麼好學,學習過程中容易因卡關又一直找不到error或解法而感到失落。
ps.這是我在大學基礎必修課一開始學C++時的感悟XD。
★C++的優點
可以比C處理更多類型結構嚴謹,功能強大安全性高不需要複雜的程式設計環境
★C++的缺點
非常複雜,是當今主流程式語言中最複雜之一當程式有誤時不容易除錯
C#
C#(Csharp)繼承C和C++的強大功能但去掉了一些它們的複雜特性,是微軟以物件導向、.NETFramework為根基推出的高階程式語言,此種設計讓開發者可以快速進行專案開發,且效能佳。
★C#的優點
因微軟支援,周邊服務強大可移植性高,尤其對已熟悉C和C++的程式設計師語法體系更進階,可以更快速進行程式開發
★C#的缺點
語法不精簡,沒有考慮程式碼量屬於一個產品,只求穩定,不求先進
程式語言的基礎邏輯相通
不過,回歸程式語言的本質,其實基礎邏輯幾乎都是相通的,比如變數、迴圈、物件導向、繼承等。
寫程式與其說像在解數學問題,更像在使用一個非母語的語言跟電腦溝通,就像是不同人種之間需要不同語言溝通。
只不過程式語言沒有人類語言那麼複雜,中文、英文、日文、德文…各有各種不同的文法和語構,還有一大堆例外情形。
除了極少數程式語言特有的設計以外,絕大部份比較常見的程式語言(如排行榜裡的程式)要學習的概念近乎相似,所以認認真真學會其中一種,再轉換到另一種不需費力太多,甚至完全不費吹灰之力。
學程式應具備的心態是什麼?
學寫程式並不難,可是需要大量的練習與實作,不斷嘗試並從錯誤中修正、增加知識與經驗。
在學習之前,建議初學者先培養好以下3個正確的觀念與心態:
一定要好好理解程式運作邏輯
無論學習什麼技能,都從「模仿」開始,就像小朋友學說話會先模仿聲調用詞、學寫字會先臨摹字帖等,學寫程式也一樣,要先參考別人怎麼寫、怎麼設計邏輯。
寫程式有點像在「破關」,起初不知道該怎麼辦,只能各種嘗試,常覺得很挫折、很「卡」,需要不厭其煩Google搜尋「秘笈」並模擬破關過程,從錯誤中學習,做過幾次後就會變得熟練,能快速反應。
不過,很多人寫程式只是簡單的把自己找到的答案(code)複製/貼上,並沒有好好思考為什麼要這麼寫,非常可惜又白白浪費一次練習機會。
此外,同樣的產出可能有許多不同的寫法,如果沒有融會貫通,往後只要遇到一點點變形或客製化,就很容易束手無措,所以理解整個程式碼的邏輯架構與運作非常重要!
ps.關於這個觀念更深入的探討,你可以參考這篇文章:當我們在學程式時,要學的到底是什麼?
大量實作,不斷tryanderror
有些人在學習的過程中會越來越喜歡寫程式,有些人則覺得越來越無趣,反思自己是不是根本不適合。
為什麼會有這樣的差異呢?可能是因為「實作太少」。
什麼是實作?一個簡單的App、一個能連接資料庫的動態網站、一個網路爬蟲工具等,都可以是實作。
想起我大學時剛開始學寫程式,課堂作業或參考書裡的範例很多都生硬無趣,比如用累加1~10、輸出九九乘法表、星號(*)畫聖誕樹等,這類型題目雖然能幫助練習一些基礎,可是寫多了、寫久了真的超級無聊!
而人是視覺感官的動物,需要有互動才有動力與熱忱,所以不妨找一些進階一點的實作,模擬上戰場的感覺,比如開發一個簡單的「開心農場」遊戲等。
如果你已經會寫基本的程式,卻無法從中找到樂趣,也許應該再多做一些實作,從不斷tryanderror的過程中慢慢「打通任督二脈」,享受「挑戰成功」的喜悅,日益精進實力。
當你發現自己可以做出一個能幫助別人、也能讓別人用得開心的成品,你會瞬間獲得巨大的成就感,覺得自己向上提升一個level,這股成就感會化成動力,讓你繼續學習更多、挑戰更多,並感到無比開心!
面對學程式的「絕望沙漠」要有毅力與正確的方向
剛接觸程式,通常會感覺超級無敵困難,簡短的一行、小小的功能都要花好幾個小時才寫出來。
當你持續不斷地寫著寫著,克服一個接一個難關,信心也一步又一步地增加。
一段時間後,你會突然抓到寫程式的手感,發現好像沒有什麼難得倒自己,因為你正處於”Hand-HoldingHoneymoon“,基本上已經可以稱得上developer(開發者)了。
(如下圖)
截自WhyLearningtoCodeisSoDamnHard–TheHand-HoldingHoneymoon
隨著你的野心越來越大,想做的功能越來越複雜,就會面臨”desertofdespair”(絕望沙漠)。
在這個階段,你會感覺自己好像學了很多新知,卻怎麼努力都無法更進一步,一股無力感油然而生,不禁開始懷疑自己:「我是不是學不會?」、「我已經到極限了?」、「我是不是沒天份?」…
當知識越深、技術越難,能挖掘到的資源本來就會變少,此時在搜尋引擎中「下關鍵字下得更精確」就顯得額外重要,鍛鍊資料蒐集的能力也是成為優秀開發者的必備條件之一。
截自WhyLearningtoCodeisSoDamnHard–TheLearn-to-CodeJourney
如果你仍深陷「沙漠」之中,或許要想到自己是不是以往太習慣依賴方便的「套件」,讓你「不知道背後發生什麼事情」,阻礙你思考整個流程。
呼應前面提到,模仿code時一定要好好理解其中的運作邏輯,你也該好好摸透所使用的這些「套件」,如同蓋房子需要打底、建模、工法編造…,程式設計也需要熟悉不同面向的技能。
要是你完全不做客製化、每次的流程都雷同,那寫程式其實無比簡單。
不過,「不客製化」是不可能的,你總會想要有一些特別或更彈性的功能,在基礎不紮實的前提下,很難繼續走下去。
另外,你也可以請有經驗的前輩指點,有時候當局者迷,不見得能找到自己目前的弱點、最缺乏什麼技能,或真正卡關的問題點,這時候前輩就能給你最有效的建議,加以導正,幫助你縮短學習時間。
而參加社群或同好會是不錯的選擇,有更多機會認識「活生生」的前輩,請教厲害的「神人」。
你必須不停調整自己,讓自己在沙漠中不迷失,朝著正確的方向,以足夠的毅力反覆實作與磨礪,絕對能夠征服這段黑暗又漫長的「絕望沙漠」!
結語
在這個資訊開放的時代,善用資源是每個人都須具備的,尤其網路世界的學習資源真的太豐富,有超多品質好、價格又低的學習寶藏值得我們深掘。
你能想像8歲小朋友就透過youtube影片自學寫code開發程式,這樣的案例越來越多嗎?
所以千萬不要懷疑,你一定也做得到,套一句我很喜歡的一位Podcaster–佐依Zoey常說的話:「你不需要很厲害才開始,而是開始了才會變很厲害」。
最後再次強調,一定要「實作」、「實作」、「再實作」,因為太重要了所以要說3次,從「做中學」是最有效且進步最快的!
如果覺得這篇文章有幫助,請幫我拍手5下鼓勵我、支持我,讓我繼續有創作的動力!
如果有任何問題或想分享的資訊,歡迎在下方留言!
文章導覽
←Previous文章Next文章→
6thoughtson“想學寫程式該如何入門?初學者怎麼選擇程式語言?完全沒有技術背景也可以學嗎?”
Thanks🙏🏼
Reply
非常不錯的內容解說詳細
給想學程式語言的人非常有幫助
Reply
謝謝你🙂
如果有什麼想交流的想法或疑問,歡迎留言!
Reply
謝謝你的文章,我目前看YT自學(python)。
但遇到很多瓶頸,所以正在考慮要不要花錢學習。
(最大的concern就是學了之後會好找工作嗎?)自學好像也很難評估自己程度到哪。
也不知道如何準備面試。
所以想去報名補習班。
想請問你的意見。
Reply
如果要花錢學習,我建議要找老師或助教可以及時回覆、詳細解答學生問題的課程。
有些時候陷入瓶頸走不出來,只是因為當局者迷,這時候老師或助教的及時幫助就相當重要,也許輕輕提示一下你就豁然開朗!
如果希望能幫助以後找工作,(雖然不曉得你想要找什麼職業,但以軟體工程師來說)你可以做一些sideproject(ps.就像念服裝設計系需要準備作品集的概念一樣),讓面試你的主管能更快瞭解你,也許他會從中跟你討論一些idea。
不過,sideproject是加分條件,而非必要條件,許多公司除了面試還有筆試(通常是對非資深、實務經驗少的工程師),測試你的基本程式設計、資料結構(包含資料庫)等觀念,這些基礎一定要好好把握。
ps.網路上有些資源可以幫助練習筆試ex.LeetCode…
如果要報名補習班,可以針對這些方面去考量,若單純只學程式的理論與技術,其實很多線上課程都能達到這個效果,時間還比較彈性!
Reply
謝謝你的即時回覆。
真的很受用。
Reply
LeaveaCommentCancelReply發佈留言必須填寫的電子郵件地址不會公開。
必填欄位標示為*Typehere..Name*
Email*
Website
在瀏覽器中儲存顯示名稱、電子郵件地址及個人網站網址,以供下次發佈留言時使用。
Δ
搜尋關鍵字:
寫文章也能增加收入線上課程學習
機票比價找優惠
近期留言「Min」於〈想學寫程式該如何入門?初學者怎麼選擇程式語言?完全沒有技術背景也可以學嗎?〉發佈留言「Jeslyn」於〈想學寫程式該如何入門?初學者怎麼選擇程式語言?完全沒有技術背景也可以學嗎?〉發佈留言「Min」於〈想學寫程式該如何入門?初學者怎麼選擇程式語言?完全沒有技術背景也可以學嗎?〉發佈留言「Jeslyn」於〈想學寫程式該如何入門?初學者怎麼選擇程式語言?完全沒有技術背景也可以學嗎?〉發佈留言分類
旅遊分享(18)
印尼旅遊(6)
英國旅遊(11)
高雄旅遊(1)
理財投資(16)
ETF投資(4)
法拍投資(10)
理財觀念(2)
程式開發(7)
Python開發(4)
初學寫程式(1)
軟體應用(2)
聯盟行銷(1)
遠距工作(2)
延伸文章資訊
- 1程式設計入門—用對方法的學習指南 - Neutrino's Blog
程式設計入門—用對方法的學習指南. ... 線上教學平台,找「XX 程式語言入門」的課程比較有名的我挑幾個介紹。台大、清大、交大的開放式課程網站都有很 ...
- 2C++程式設計入門(第二版) - 博客來
書名:C++程式設計入門(第二版),語言:繁體中文,ISBN:9789865020545,頁數:368,出版社:碁峰,作者:黃建庭,出版日期:2019/03/18,類別:電腦資訊.
- 3程式入門- Hahow 好學校
線上程式入門課程,從零到一學習網站開發與熟悉程式語言,無論你想學前端或後端, ... 學會Python 程式設計與資料科學應用,能夠讓我們成為擅長寫程式處理數據、挖掘 ...
- 4我想學程式,但到底該從哪個語言入門? - Medium
此時,身為一個程式麻瓜只能暗地裡崩潰,感嘆為何學C++ 非得要用這種怪腔怪調。 註* Cout 唸作c out,不是唸作庫特。 好偷懶:. Python 的語法設計讓電腦 ...
- 5[入門教學] 我想學程式語言,但這麼多該從什麼開始學起呢?
可以先嘗試用photoshop 或是Sketch產出的圖檔可以直接變成HTML去修改。JavaScript在最初初階的網頁設計主要是讓網站看起來比較有互動性,不見得再最一開始 ...