如何從零開始自學程式

閱讀時間約 7 分鐘
在科技快速發展的現代,每個人都滿口大數據、人工智慧,儘管他們根本不知道自己在說什麼。而大學的資工系也變得越來越熱門,導致每個科系都有人想轉進去,學習程式也逐漸成為許多人考慮的事情。
而我在升大學的暑假開始自學python和C++,並在進到電機系以後一邊上計概學C++,一邊學習全端JavaScript,目前已經自學一年了。
在這篇文章,我會分享如何從零基礎開始學程式,給讀者開始的方向、避免你走冤枉路。

寫程式到底是什麼?


電腦透過解讀機器碼(0和1)接收指令,並執行動作。但是人類不擅長讀寫機器碼,所以發明了程式語言,用更容易理解的語法和文字表達指令。而不同的程式語言有不同的語法和常用的領域。
所謂寫程式,就是用程式語言寫出明確的指示,對電腦下指令
例如:要求電腦顯示Hello World(以python為例),我們就會寫:
print("Hello World")
學習程式語言就像是學人類的語言一樣,你會需要背單字(但很少)、語法,最後將他們組合起來,表達自己的意思給電腦。
此外,程式語言間的差別主要在於語法,實際能表達的東西都差不多,就像是中英文都有「你、我、他」一樣,只是長得不同而已。所以,不用擔心學新的程式語言需要從頭來過,你只需要熟悉它的語法就好

準備


動機

在開始之前,你要先弄懂自己的動機,才能知道自己該學什麼
而學程式常見的幾個動機分別是:
  • 學校成績
  • 找工作
  • 興趣
  • 炫耀、放履歷
動機會決定自己要學習的領域、程式語言,以及自己的目標,而目標可以是完成某個作品,或是看完某個教學

程式語言

程式語言有非常多種。舉例而言,比較熱門的幾種分別有:Python, Java, C++, JavaScript等,每種都有自己擅長的領域。
常用的領域大致如下:
  • Python:機器學習、數據分析
  • C++:作業系統、程式語言
  • Java:Android應用程式
  • Swift:iOS應用程式
  • JavaScript:網頁
  • C#:遊戲開發
當然,還有很多程式語言我沒有講到,而且上述的列表僅供參考,做某件事不一定要用特定的語言,這只是我根據自己的認識整理的清單,所以歡迎讀者留言指正、補充。
我認為大致可以這樣根據動機決定要學什麼:
  • 如果是要準備大學電機、資工系課程:可以先學C++(大多會教C++)
  • 找工作可以看職缺上的要求,再自己決定
  • 如果只是為了興趣就找自己喜歡的
  • 如果要做東西放在履歷上,可以嘗試網頁開發或應用程式

開發環境

在知道了自己要學什麼以後,就該準備寫程式的工具,也就是IDE
IDE是讓寫程式更有效率的工具,就像是寫報告用的Word、算財務的Excel一樣。主要的功能有凸顯關鍵字、方便測試程式等。
其中,比較常見的IDE有Visual Studio Code, Visual Studio, Vim等,可以根據學習的程式語言與需求選擇適合的IDE。
所以,在尋找程式語言的教學前,可以先找看看安裝IDE的教學,加快寫程式的速度。

教學資源

自學意味著沒有老師的幫助,只能依靠教學資源,而常見的教學資源有:
  • 文章
  • 影片
  • 書本
我認為上述的資源都能有很好的效果,只不過挑選書本的時候要注意:
某些書並不適合當作入門教學
我曾經想透過讀《C++ Primer》加強C++,只不過我發現書中提到的東西對我來說不是太難懂就是用不到。後來我只讀了一半就放棄了。
仔細思考後,我得出一個結論:
某些書是寫給想深入研究的人看的,不是給想學程式的新手。
所以,如果要透過書本開始學習程式的話,我建議不要挑「經典」、「磚頭書」來讀,而是要選擇簡單的書,最好是寫給國中生、高中生程度的書。
至於要怎麼找到教學,答案很簡單:Google搜尋就找得到了。免費的教學到處都是,你只需要用對的關鍵字,就能找到你想要的教學

推薦教學

我主要看過的兩個教學:
  • Learn C++
    這個網站很詳細的介紹C++語言的語法、背後的運作原理,並比較版本之間的差異。內容非常豐富,可能會有點難讀,但是會有很多收穫。
  • The Odin Project
    由一群網頁工程師架設的網頁教學網站,有各種程度的教學,從最基本的HTML、CSS到後端的Node JS都有,適合各種程度的人學習網頁開發。

行動


安排進度

最理想的狀況是,每天花一些時間看教學、寫程式,而不是集中在周末然後連續學幾個小時。如果很久才寫一次,就很可能會忘記自己以前學過的東西。
此外,自己規畫學習的進度也很重要,最好訂下截止期限,避免自己在簡單的事情上拖太久。

從做中學

如果只是看過教學,而沒有實際打程式,是不會記得東西的
舉例來說:在C++要輸出Hello World
#include <iostream>
int main(){
  std::cout<<"Hello World"<<'\n';
  return 0;
}
如果讀者只是看過去,而沒有實際把這串字打出來過,那可能幾分鐘後就忘記了。所以親自把程式打出來很重要。
此外,在不知道該怎麼做的時候尋找答案,也是很有效的學習方法,自己提問題、Google搜尋找到的答案,會讓自己更有印象。
所以,如何提問也是學程式很重要的一個能力,所以我接下來會介紹如何提問。

提問題

假設你遇到了一個問題,像是:
num=1
if num=='1':
  print('equal')
else:
  print('not equal')
結果輸出了not equal,然後你不知道為什麼一不等於一。
這時候,你就會需要提問題,但是在問其他人之前,永遠要先Google搜尋,這是因為你遇到的問題,很可能其他人已經遇過了。尤其是很容易找到答案的問題,更應該先自己搜尋,以免浪費其他人時間。
如果你已經搜尋過了,卻還是找不到答案,那就可以向他人求助。問問題最好的格式如下:
我想做{目標},然後我試了{自己的方法}(附上程式碼)
結果{輸出和想的不一樣}(附上結果)
我查到了{相關資訊},但是沒有效果
請問我該怎麼做
提供所有有用的資訊可以幫助別人更快的解決你的問題。
在自己搜尋解答的時候,可以優先參考可信的網站,例如Stack Overflow、或是與問題相關的教學網站。

面對挫折

我學程式最挫折的時刻是C++寫不出Hello World的時候(原因是我把單引號和雙引號搞混,這件事現在看起來非常可笑),那時候我確實很懷疑自己。
不過我後來發現失敗其實沒那麼可怕,因為程式會一直有bug,遇到挫折是常態,一次就成功才是例外。
所以在遇到bug時,不需要太過擔心,也不用懷疑自己的能力,只要試著解決問題就好。每次遇到問題時,都是進步的機會

建議


下列是我自己的和其他人的一些建議:
寫程式,不用在意還有什麼沒學,而是要在意把需要的東西學起來就好。
不必有什麼知識焦慮症,覺得這個沒學、那個沒學。
— 機械系的同學
一開始的一些用語解釋可以講得更簡單明瞭一點會比較好理解,
不然一開始我看那些什麼printf、 include、 int main ()什麼的完全不明所以,
用更具體的方式去譬喻、表達應該會對新手友善一點。
— 土木系的同學
  • 我並不推薦去外面花錢上程式課,如果只是要學基本語法,我相信網路上都有足夠的資源。不過如果你比較偏好有人教學或是要學習比較困難的領域,我覺得還是可以考慮。
  • 我覺得並不是每個人都需要學程式,因為有些人的生活就是用不到,不過我覺得這件事還是值得嘗試。

如果有任何建議或是想分享自己學習的經歷,都歡迎在文章下方留言。
為什麼會看到廣告
收錄所有讀書心得,書的主題可能是行銷、生產力、心理學、科學,也可能是小說。讀書心得會大致介紹書中的概念,並提出我學到的東西,或是可以運用在生活中的方法。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
感恩日記,你可能聽過某些人談過,你也可能看過其他人寫,但你可能不知道具體該怎麼開始,以及它的功能是什麼。 我將在這篇文章介紹這個讓人更快樂的工具,並回答一些常見的問題。
感恩日記,你可能聽過某些人談過,你也可能看過其他人寫,但你可能不知道具體該怎麼開始,以及它的功能是什麼。 我將在這篇文章介紹這個讓人更快樂的工具,並回答一些常見的問題。
你可能也想看
Google News 追蹤
Thumbnail
從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
Thumbnail
暑假剛過一半,自主學習準備工作也可以提早開跑囉!本文提供構思主題、蒐集資料、計畫擬定三個步驟,讓你在暑假期間就為下個學期自主學習的做好準備。
Thumbnail
Python擁有便攜性和通用性,適用於多種場景,同時具有全球通用性。Python在科技製造業、資料分析、人工智慧等領域有廣泛應用,對於理工科背景者而言有獨特的優勢。透過在線課程、自學書籍、實作專案,以及參與社群和開源專案,理工背景者可以達成從轉職進入Python程式領域的目標。
Thumbnail
我其實不算程式出身。 我在香港中學畢業(亦則高中畢業)後,飛到台灣讀多媒體,大二才接觸程式。 如果是程式老手,可能可以直接用C++、Python這些程式語言來做遊戲。但新手如(當時的)我,需要一個遊戲引擎。 事實上,程式老手也會需要遊戲引擎。畢竟直接使用程式碼大概就和鑽木取火差不多,而遊戲引擎
在一次五天的年假中,我決定開始學習Python編程。雖然最初進展順利,但後來發現自己在解題和邏輯方面遇到了困難。經過思考後,我決定轉而學習C/C++,並且制定了一個計畫,希望成為一名後端工程師。這將需要挑戰我的時間管理能力。
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
初入IT產業的人士在學習Python語言後,IT證照如ITS Python認證是否值得考取?本文以ITS證照特點、實施建議和IT認證考試資訊為主,詳述證照的好處和準備時間。
Thumbnail
這個系列是專門寫給 0 程式設計經驗的初學者的 C++ 教學, 無需架設環境,直接開始無痛入手 C++ ~
Thumbnail
從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
Thumbnail
暑假剛過一半,自主學習準備工作也可以提早開跑囉!本文提供構思主題、蒐集資料、計畫擬定三個步驟,讓你在暑假期間就為下個學期自主學習的做好準備。
Thumbnail
Python擁有便攜性和通用性,適用於多種場景,同時具有全球通用性。Python在科技製造業、資料分析、人工智慧等領域有廣泛應用,對於理工科背景者而言有獨特的優勢。透過在線課程、自學書籍、實作專案,以及參與社群和開源專案,理工背景者可以達成從轉職進入Python程式領域的目標。
Thumbnail
我其實不算程式出身。 我在香港中學畢業(亦則高中畢業)後,飛到台灣讀多媒體,大二才接觸程式。 如果是程式老手,可能可以直接用C++、Python這些程式語言來做遊戲。但新手如(當時的)我,需要一個遊戲引擎。 事實上,程式老手也會需要遊戲引擎。畢竟直接使用程式碼大概就和鑽木取火差不多,而遊戲引擎
在一次五天的年假中,我決定開始學習Python編程。雖然最初進展順利,但後來發現自己在解題和邏輯方面遇到了困難。經過思考後,我決定轉而學習C/C++,並且制定了一個計畫,希望成為一名後端工程師。這將需要挑戰我的時間管理能力。
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
初入IT產業的人士在學習Python語言後,IT證照如ITS Python認證是否值得考取?本文以ITS證照特點、實施建議和IT認證考試資訊為主,詳述證照的好處和準備時間。
Thumbnail
這個系列是專門寫給 0 程式設計經驗的初學者的 C++ 教學, 無需架設環境,直接開始無痛入手 C++ ~