想學寫程式該如何入門?初學者怎麼選擇程式語言?完全沒有 ...

文章推薦指數: 80 %
投票人數:10人

想做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)



請為這篇文章評分?