cover_photo

程式學習如何開始?

從程式苦手到工程師的經驗分享

前言

最近身邊常常有一些美術的朋友詢問我:『如果想要學程式應該如何開始呢?』這個問題其實我自己也是摸索了很久,為了減少大家困惑的時間分享一下這一年自學的心得以及經驗,也分享給所有想學習卻沒有方向的大家,希望這篇心得文可以幫到你們(`・ω・´)。

從轉系開始算起,我自學程式其實只有將近1年多的資歷(恩對我知道很菜XD),由於不是本科系出身的,在這段時間裡我花了很多時間找尋網路上的教學網站,也買過各式各樣的參考書、教材,但後來發現其整理的不一定比網路上的教材要來得好。

網路上的程式語言千千百百種,如何選擇適合自己的語言,如何讓學習的程式幫助你原本的專業、完成你自己想做的專案?我的論點可能會跟網路上的大大們有點不盡相同,我的答案是”目的與功能”(正文會提到)

我在這一年多的時間曾經學習過Python、Java、JavaScript、C#,比較常接觸Arduino、Processing、Unity3D,並且最後暫時定居在Unity(也就是C#語言),不是因為C#特別厲害或特別炫砲,而是因為我後來發現在體驗過這麼多的程式語言後,我比較喜歡寫一些立刻就能看到視覺回饋的程式(像是以下)

正文

在開始學習程式語言以前,請先在心中問問自己“

你學習coding的目標?目的是什麼? 你希望用程式語言達到什麼樣的成果? 想要解決怎麼樣的問題?”

以我為例子的話,我學習Coding的目標是希望可以做出很酷炫的遊戲場景,而努力的方向也始終朝目標走向,我沒有堅定不移的逼自己Coding而是讓學習程式本身變成自己的興趣,想努力栽培的技能,也因此在學習上我並沒有感受到以前國高中念書時的痛苦, 如果聽完我的分享依舊沒有方向的可以看看下面舉的例子~

想要做出好看的網頁的可以搜尋國外一些互動網站

threejs Openprocessing

想學區塊鏈的人可以參考以下大大們的Medium

Medium部落格: Tina: https://medium.com/@tina26919742 Jeff: https://medium.com/@jj1385jeff850527 葛如鈞(寶博士): https://medium.com/@daaab

想學Unity3D(遊戲引擎)可以參考以下臉書社團

Unity讀書會 北科互動 :不定期分享相關資訊,以及舉辦讀書會 Unity應用領域:很多大神們會在裡面及時解答 UWA開源庫:可以提供很多靈感,幫助你省下不少時間

以及不管你是什麼領域,一定會用得到的

Github:很多工程師都會在上面分享自己撰寫的專案

“程式語言不過是一種工具,不要漫無目的地學習”,沒有熱誠和動力的學習很容易半途而廢,找到學習的目標會為你的學習增加很大的成效

找到目標後下一個步驟就是“確認方向”,多看看這個領域的工作環境、做出來的成果,甚至是需要有哪些背景知識,最好的方法是上網google、多體驗、多嘗試,多看看一些別人的作品,確認這是否符合心中的預期,如果落差很大的話就是你轉換方向的機會了,走對方向遠比走的快還要來的重要。

如果你已經達成了以上步驟,並且非常肯定這就是自己要的,那麼恭喜你,你在學習的動力上一定不會輸給其他人,接下來可以嘗試看看下面推薦的教學網站

菜鳥教程

提供了各個領域的學習藍圖,以及大部分的程式教學 更重要的是裡面有提供編譯模擬器,在你學習完之後可以親自嘗試看看

慕課網

有各式語言教學(影片、做中學….e.t.c) 更有付費課程跟免費課程可以依自己需求選擇

英文好的可以嘗試看看以下網站哦

cousera

有各個大學教授的教學影片(有些有中文,不過大部分是英文的), 而且教學的範圍很廣泛,從藝術人文到物理科學都有

codecademy

主要以前端網頁、手機平台為主 整個網頁以做中學learn by doing為主軸 使用者必須回答正確才能往下一個章節前進

udemy

在這裡你可以找到各式電腦軟體的教學, 一樣有付費課程跟免費課程

同場加映:我的Unity 讀書清單 入門: 1.Cousera 相關課程 中文教學 需要註冊,但是內容比較是一步一腳印,想要從基礎開始學習的同學可以試試看這個教學喔

2.unity c# tutorial 這篇教學印象中是荷蘭一位Unity工程師撰寫的,內容比較偏向程式設計 從基本的物件池到比較高階的Mesh、shader、Perlin noise運用… 比較適合有一些程式基礎(C#、Unity)的人食用

圖形學 理論: 這部分就比較沒什麼好說的了,算是Unity遊戲開發裡比較硬的知識,想要精做出各種酷炫的遊戲特效、進階功能,除了參考網路上的範例以外就只能好好學習基本知識囉

數學基礎 — — 3D數學基礎 : 圖形與遊戲開發 線性代數:YouTube 教學(有繁體中文)

  1. Real time rendering

Shader學習 : shader具體而言到底可以做哪些事呢,剛接出Unity的時候,可能甚至連聽都沒聽過,但其實shader在Unity 中可是無處不在,所有材質的炫染過程都會經過shader,宛如遊戲世界中的畫筆(詳細介紹請參考這篇文章)

1.shader — unity shader 入門精要​

2.CG — GPU programing and cg language primer

遊戲AI : 相信平常有在玩遊戲的各位對遊戲AI一定不陌生吧,NPC(Non-Player Character)指的是在遊戲中不受玩家控制的角色可能在RPG裡扮演你的隊友、敵人,甚至連最近爆紅的Alpha Go也是 遊戲AI的一環

Unity 人工智能編程精萃 前陣子在網路上爬了很久的文,翻過無數篇教學,覺得還是這本書有最低的門檻

希望以上到心得文可以幫助沒有方向或者不曉得如何開始的朋友,也非常歡迎大家如果有任何問題都可以在文章底下留言,或者分享你學習上的心得(^u^)