如何從零開始自學程式

更新於 發佈於 閱讀時間約 8 分鐘

在科技快速發展的現代,每個人都滿口大數據、人工智慧,儘管他們根本不知道自己在說什麼。而大學的資工系也變得越來越熱門,導致每個科系都有人想轉進去,學習程式也逐漸成為許多人考慮的事情。

而我在升大學的暑假開始自學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 ()什麼的完全不明所以,
用更具體的方式去譬喻、表達應該會對新手友善一點。
— 土木系的同學
  • 我並不推薦去外面花錢上程式課,如果只是要學基本語法,我相信網路上都有足夠的資源。不過如果你比較偏好有人教學或是要學習比較困難的領域,我覺得還是可以考慮。
  • 我覺得並不是每個人都需要學程式,因為有些人的生活就是用不到,不過我覺得這件事還是值得嘗試。

如果有任何建議或是想分享自己學習的經歷,都歡迎在文章下方留言。

留言
avatar-img
留言分享你的想法!
kiriya chuya-avatar-img
2023/12/08
想跟你教我寫程式
avatar-img
星期Leo的讀書會的沙龍
45會員
20內容數
收錄所有讀書心得,書的主題可能是行銷、生產力、心理學、科學,也可能是小說。讀書心得會大致介紹書中的概念,並提出我學到的東西,或是可以運用在生活中的方法。
2022/11/06
  我剛剛看完一個關於自滿的影片,裡面講到我有可能因為自己有了一些進步就變得自滿。而我認為最近的我確實是如此。   回顧這一周,我工作的時間變少、開始好幾天不學習、練習、寫作,偏離了日常生活的軌道。所以寫了這一篇文章整理想法
Thumbnail
2022/11/06
  我剛剛看完一個關於自滿的影片,裡面講到我有可能因為自己有了一些進步就變得自滿。而我認為最近的我確實是如此。   回顧這一周,我工作的時間變少、開始好幾天不學習、練習、寫作,偏離了日常生活的軌道。所以寫了這一篇文章整理想法
Thumbnail
2022/11/02
我對於自己寫作、表達的反省,從生活中幾個事情看出自己的問題,並試著做得更好。
Thumbnail
2022/11/02
我對於自己寫作、表達的反省,從生活中幾個事情看出自己的問題,並試著做得更好。
Thumbnail
2022/05/31
感恩日記,你可能聽過某些人談過,你也可能看過其他人寫,但你可能不知道具體該怎麼開始,以及它的功能是什麼。 我將在這篇文章介紹這個讓人更快樂的工具,並回答一些常見的問題。
Thumbnail
2022/05/31
感恩日記,你可能聽過某些人談過,你也可能看過其他人寫,但你可能不知道具體該怎麼開始,以及它的功能是什麼。 我將在這篇文章介紹這個讓人更快樂的工具,並回答一些常見的問題。
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
  這一個月如果你仔細注意目前科技趨勢,你就會發現ChatGPT已經占據了大多篇幅,幾乎將整個科技資訊帶向了人工AI智能的新境界,從前覺得遙不可及的,現在是一蹴可幾、垂手可得的地步.甚至決定了,你是否站在這次的浪頭上,讓財富流進.   
Thumbnail
  這一個月如果你仔細注意目前科技趨勢,你就會發現ChatGPT已經占據了大多篇幅,幾乎將整個科技資訊帶向了人工AI智能的新境界,從前覺得遙不可及的,現在是一蹴可幾、垂手可得的地步.甚至決定了,你是否站在這次的浪頭上,讓財富流進.   
Thumbnail
這篇文章專門寫給「非」資訊相關科系畢業的人,說明怎麼樣開始學寫程式,還有到什麼程度才能轉到資訊相關產業。 我大學跟研究所都是念土木系,因為對寫程式蠻有興趣,所以除了系上的課之外,還有去資工系還有電機系修一些相關課程,因為不是資訊相關科系,所以有走了一些冤枉路,但是研究所的時候我已經可以開發套裝軟體了
Thumbnail
這篇文章專門寫給「非」資訊相關科系畢業的人,說明怎麼樣開始學寫程式,還有到什麼程度才能轉到資訊相關產業。 我大學跟研究所都是念土木系,因為對寫程式蠻有興趣,所以除了系上的課之外,還有去資工系還有電機系修一些相關課程,因為不是資訊相關科系,所以有走了一些冤枉路,但是研究所的時候我已經可以開發套裝軟體了
Thumbnail
無論年紀多大多小,只要「願意」付出行動 時間、地點都不是問題 現在都有兒童程式課程 小朋友學的是利用積木組合而成的程式 大朋友就可以直接拿鍵盤來劈哩啪啦開始寫程式碼囉~
Thumbnail
無論年紀多大多小,只要「願意」付出行動 時間、地點都不是問題 現在都有兒童程式課程 小朋友學的是利用積木組合而成的程式 大朋友就可以直接拿鍵盤來劈哩啪啦開始寫程式碼囉~
Thumbnail
在決定踏上程式之旅後,身為程式初學者,你要面臨的第一個關卡,絕對是: 我該學習哪種程式語言?
Thumbnail
在決定踏上程式之旅後,身為程式初學者,你要面臨的第一個關卡,絕對是: 我該學習哪種程式語言?
Thumbnail
在科技快速發展的現代,每個人都滿口大數據、人工智慧,。而大學的資工系也變得越來越熱門,學習程式也逐漸成為許多人考慮的事情。 在這篇文章,我會分享如何從零基礎開始學程式,給讀者開始的方向、避免你走冤枉路。
Thumbnail
在科技快速發展的現代,每個人都滿口大數據、人工智慧,。而大學的資工系也變得越來越熱門,學習程式也逐漸成為許多人考慮的事情。 在這篇文章,我會分享如何從零基礎開始學程式,給讀者開始的方向、避免你走冤枉路。
Thumbnail
我會在這篇文章裡面跟大家分享在這二十年來我是透過哪些方法一步步成為一位程式設計師的
Thumbnail
我會在這篇文章裡面跟大家分享在這二十年來我是透過哪些方法一步步成為一位程式設計師的
Thumbnail
很多文章都說未來是人工智慧的時代,程式語言是必備能力,靠著一時腦熱蒐集了許多資訊,我想說學習不用很厲害才開始,只要有興趣就開始吧,就算用不到也沒關係!
Thumbnail
很多文章都說未來是人工智慧的時代,程式語言是必備能力,靠著一時腦熱蒐集了許多資訊,我想說學習不用很厲害才開始,只要有興趣就開始吧,就算用不到也沒關係!
Thumbnail
常見入門款Python、統計分析用R、轉職培訓JAVA、C#、IOS用Swift、前端萬用JavaScript、學校基礎C語言、進階C++、甚至是新潮的語言go,程式語言那麼多種到底該從哪個入門好?難道從Scratch開始?
Thumbnail
常見入門款Python、統計分析用R、轉職培訓JAVA、C#、IOS用Swift、前端萬用JavaScript、學校基礎C語言、進階C++、甚至是新潮的語言go,程式語言那麼多種到底該從哪個入門好?難道從Scratch開始?
Thumbnail
資訊時代下,學習程式蔚為風潮。許多行業需要跨領域人才,結合程式與專業知識做應用。 如果是初次想學程式,但是不確定興趣領域,又不知道要如何選擇,既期待又害怕受傷害的情形下,我會建議新手從「容易看得見成果」的方向去嘗試,往後是否能保持熱忱與興趣,其實很大的原因是由「成就感」所支撐的。
Thumbnail
資訊時代下,學習程式蔚為風潮。許多行業需要跨領域人才,結合程式與專業知識做應用。 如果是初次想學程式,但是不確定興趣領域,又不知道要如何選擇,既期待又害怕受傷害的情形下,我會建議新手從「容易看得見成果」的方向去嘗試,往後是否能保持熱忱與興趣,其實很大的原因是由「成就感」所支撐的。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News