創作內容

198 GP

[達人專欄] 跟著豬腳 C 起來:學寫程式前,你要知道的事

作者:解凍豬腳│2018-08-23 20:53:43│巴幣:473│人氣:9314
 
  大家好,我是豬腳。最近雖然心裡盤算著要分享一些數學的相關概念,但整理小屋文章的時候,才驚覺原來我都沒發表過任何一篇「帶領零基礎的程式設計初學者入門」的文。後來想想,若以綜合因素來考量,講解程式設計的入門觀念總是比較輕鬆——畢竟數學得要拿出一堆例題來逐步解釋。既然如此,最近還是先來發表一些程式設計相關的好了。

  對於一個現代人來說,我們每天都會需要用到 3C 產品——舉凡電腦、手機,甚至是你手邊的冷氣遙控器,都需要經過邏輯的設計來運作,同時運用儲存裝置來儲存重要的資訊。例如目前遙控器上顯示的溫度、要準備拿來計算的資料,甚至是待會要顯示在螢幕上的文字,這些都會被儲存在記憶體當中,然後讓 3C 產品裡透過本來就已經設計好的步驟(程式)來自動操作它們。

  沒錯!以上都是幹話。我想在這之前,來談談我當初怎麼學寫程式的吧。以前小學三年級的時候,我在網路上無意間接觸到了 RPG Maker 這系列的軟體。這系列的軟體,本身內建了許多類型的素材,同時也提供了很多基本的設定,讓玩家可以依照這些素材,畫出自己想要的地圖、設計自己想要的對話內容,單靠一個這樣的軟體,設計出一款 RPG,其中著名的「九龍魔法陣」、「巴哈姆特(RPG)」、「暗閻神族」都是利用 RPG Maker 系列軟體製作出來的。



▲ RPG Maker MV 官方宣傳圖。(圖片來源


▲ 九龍魔法陣。(註:九龍魔法陣遊戲內素材大多是由該團隊自製,而非 RPG Maker 內建)

  小弟不才,這軟體我接觸了好幾年,時常把精力耗費在一些細節上,但從來沒有真正做出一款能玩的遊戲,反而我利用這個軟體,累積了一些基礎的程式設計知識——沒有錯,當你使用這系列的軟體來設計「遊戲流程」的時候,就相當於在寫程式了,只不過過程簡單一些而已。坊間亦有另一套概念相似的軟體叫做 Scratch,有興趣的話可以去 Google 看看。

  因此透過以上的介紹,你要知道的是,「寫程式」這件事情就是在設計一個流程,預先替電腦做好一份企劃書,讓電腦能夠依照這份企劃書去做「你想要命令電腦去做的事情」——畢竟電腦本身不是 AI,它只是一個聽令行事的工具嘛,不是嗎?

  當然,RPG Maker 和 Scratch 都是一個「專門被設計用來製作遊戲的程式」,當我們要實際撰寫程式的時候,可不像這兩者一樣有那麼輕鬆的圖形界面可以操作,而我們也常常聽人說,電腦的內部就是裝著一堆 1 和 0 所組成的資料——所以難道我們真的得要用 1 和 0 來寫程式嗎?當然不是!

  為了方便開發程式,工程師設計了「程式語言」。程式語言是一種設計好的規範,方便大家開發程式。


▲ C 語言。

  然而,程式語言並不是完全統一的。在這世界上不同的國家、地區,都有不同的語言和文化,每個語言都各有優缺點,電腦的程式也是。也因此各家的工程師設計出來的語言,語法都不完全相同。其中,我們可以聽得到別人談及 C、C++、C#、VB、Ruby、Python、PHP、Perl、Java、JavaScript ……上面舉例的這些,都是當今熱門的程式語言的名稱。(注意:我們在網頁上看到的 HTML、CSS 語法並不是程式語言!)

  當然,既然電腦裡面只有兩態之差(1 與 0),那麼就算你已經按照程式語言的規範寫出了那堆英文、數字、符號組成的程式碼,電腦仍然是看不懂它們的,因為對電腦來說這仍然太複雜了。因此,電腦會需要先透過媒介來翻譯這些程式碼:粗略來講可以分成編譯(compile)或是直譯(interprete)——這裡我就不另外介紹組譯(assemble)了,因為一般入門的程式設計師還不需要接觸這些細節。

  其實編譯跟直譯的概念很簡單,不要想得太複雜——真的,我沒騙你啦。

  編譯器(compiler)的作用,就是可以把你寫好的程式碼全部翻譯成電腦可以看得懂的命令(也就是我們在 Windows 系統上所看見各式各樣的 exe 執行檔),翻譯好以後,我們就可以直接把這份 exe 檔案拿來叫電腦執行它。

  直譯的概念,則是將程式碼丟到直譯器(interpreter)上面,每當直譯器把一行程式碼翻譯完,就把它拿去執行,所以不需要把整個程式翻譯成執行檔,就可以直接運作了。我們在瀏覽網頁的時候常用的 JavaScript、PHP 就是很典型的例子,能把寫好的腳本隨時拿來執行,當然是很方便。但壞處就是處理資料過程的速度相對比較慢(因為執行過程必須一直依賴直譯器來運作)。

  也有些程式語言(如 Java)是一半編譯、一半直譯。這類程式語言比較複雜的細節面,我也就不多談了,有興趣的人也可以自己 Google 一下原理。

  所以,世界上沒有「最好的程式語言」,只有「適不適合的程式語言」。試想,要是我們在瀏覽網頁的時候,使用的是需要編譯成 exe 檔的程式語言,每次瀏覽網頁豈不就要花費很多時間來等待程式編譯完成嗎?

  沒有錯,有了以上的觀念,你已經踏入墳……咳咳,我是說你已經成功踏出了成為程式設計師的第一步了!

  因為這是序言,內容看來難免有點貧乏且枯燥無味。看看標題我想大家也猜到了,接下來我會依照洪維恩所著的《C 語言教學手冊第四版》(旗標出版)作為參考架構,帶領大家一起踏入墳……咳咳,我是說帶領大家走向科技新貴、人生勝利組的道路!如果你想要現在開始學寫程式的話,敬請期待。
 
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4104904
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:第一次踏入墳場就上手|從入門到入墳|從入門到放棄|C語言|程式設計|C|C++|寫程式|程式|回收業者

留言共 41 篇留言

永恆的春天
救命,不會遞迴跟指標

08-23 21:00

反社會AI
哥請問一下不從Arduino開始嗎

08-23 21:05

解凍豬腳
我對 Arduino 不熟,手邊也沒有相關的素材可以玩,打算從人人都可以學、最普遍的 C 語言講基礎觀念(畢竟只要會了一個語言,其他的就都已經會一半了)08-23 21:07
摘喵喵
從入門到入墳
https://repl.it/repls/FlakyWorriedDisplaymanager

08-23 21:08

淀治脊髓劍‘-ωก̀
學C的時候覺得指標是最難的

08-23 21:18

佚名
工程師心得,沒天分就放棄學程式,不然會很痛苦。

08-23 21:30

吃魚-消夜模式❤
從入門到放棄.jpg

08-23 21:44

one day
晤...我小時候也是玩RM玩的很凶!
也和大大一樣,因為太著重細節而沒有任何完成品。

不過那時的我(國中)可是用03成功設計出了自認不輸人的零卡頓ARPG和對應的AI呢!

而現在的我已經走向完全不同的道路了...

想問大大,從RM到C有多遙遠呢?
利用工作剩餘的時間自學的話,需要跨越的障礙會有多少呢?

其實我心底還是抱著一顆遊戲製作的夢想QQ

08-23 21:47

解凍豬腳
你只要事件可以弄得很上手,那要入門程式就不會是一件困難的事,當然開始寫程式以後要注意的東西還有很多,例如怎麼樣可以把程式寫得漂亮、簡潔08-23 21:50
解凍豬腳
但是如果你要用 C 製作遊戲……算了吧,那不如學 C# 去碰 Unity08-23 21:50
シッコク
拜託不要叫入門新手去學C = =
python好一點

08-23 21:49

解凍豬腳
對於「基礎」我覺得用 C 會比較好,畢竟手邊也有書,不容易漏掉入門注意事項,直接講 Python 雖然也有好處,但很多東西實在太散,不好從頭講起08-23 21:52
咲夜-吃魚模式❤
豬腳優質文 C起來><

08-23 21:50

one day
C↔C#...不是只差一個#號嗎,哈!
那請問大大,從RM到C#會很遙遠嗎?

08-23 22:01

解凍豬腳
差一個 # 號可差多了呢

其實你真有興趣的話,現在就可以開始。雖然程式語言各有不同,但只要能夠有基本概念、會一個語言,其他語言你就都會了,上述的語言除了 PHP、JavaScript 以外,其他你都可以試著 Google 找到相關資料,靠自己摸索08-23 22:04
舒潔艾拉
紫色大磚塊
你我的噩夢回憶QAQ

08-23 22:02

解凍豬腳
對我來說其實不至於惡夢啦 XD,因為修課以前就已經有好幾年的經驗,所以過得蠻輕鬆的

我的是第四版,是紅色的大磚塊 [e16]08-23 22:06
one day
感謝大大鼓勵!

08-23 22:08

麻美學姊掉頭就走
推一個,寫程式真的很吃天分

08-23 22:10

月太げつたい⚓
為什麼要除了 PHP、JavaScript 以外XD

08-23 22:12

解凍豬腳
因為 PHP 要用 xampp 之類的東西架伺服器,而且又不好 debug
JS 則是環境不適合初學者直接碰(畢竟很多時候都是拿來做插件)
兩者看來都很容易牽涉到網頁相關的東西
想想入門還是用其他語言好些08-23 22:16
金寶叔叔或成最大贏家
喔喔喔,終於有程式的教學了

08-23 22:40

NWO☣蛇瀆洨湯☣
已經入墳了...C++學了好幾年還是普普
頂多改改別人的程式添加自己要的功能,真正要自己開發軟體便一竅不通
新手真的不適合學C/C++,介紹初學者玩C語言是推入火坑吧
現在發現python才是最簡單的語言,也比較能引起人的興趣
舉凡line bot聊天機器人跟網路爬蟲很多都是用python寫的
爬蟲又能爬美女圖又能資料分析,本來對程式不感興趣的人也因為如此紛紛加入行列

08-23 22:55

解凍豬腳
我會從 C 開始也有我的考量,因為講解 Python 的話,真的就是因為語法太簡單,所以就會變成很多時間都花在講解 lib 上面,而各個 Python 版本都不同,再加上功能相似、版本不同、名稱不同的 lib,那樣真的不容易寫出一些有架構的教學08-23 23:47
NWO☣蛇瀆洨湯☣
其實什麼語言都不是重點。
知道什麼是正則表達式嗎,精通了它,什麼程式語言都通了

08-23 23:00

忘記惹
推推><

08-23 23:44

似夜
JAVA從入門到女裝

08-24 00:35

夏洛克‧福爾摩斯
C很不好上手,可是很好用

08-24 00:42

M@B
推!
幫大大說ㄍ話,對一個完全新手而言要學的東西超級多,很多觀念需要花時間建立。
C語言的確可以很難,但是不去深入研究而作為程式語言的入門會是個不錯的選擇。

08-24 00:43

燃燒吧!狩魂!
教你從入門到放棄XD

08-24 02:43

R.J 龍哥
### 分享我的想法
國外的學校,現在應該都是從python當作新手教材
python的優點同時也是缺點->強大的lib庫
- 對於C來說,因為什麼都沒有,都要自己寫
- 對於python來說,Import 什麼都解決了

如果你想在programer走的夠遠,你一定要懂得底層原理

學C的用意是為了了解較為底層的原理和運作
因為C幾乎是最嚴謹的高階程式語言(python的弱型別是好處也是壞處,當系統做大,壞處就會很明顯)
而且現在流行的程式語言幾乎也都是由C寫出來的
不可否認從C入手,門檻會很高
一旦你懂了,其他語言基本上也懂了60%
各種程式語言的概念其實很相像,都是從同一基礎延伸出去

結論:
- 如果寫程式只是玩玩而已,想要短時間寫出酷炫的成品 => python/node... 有一堆人提供lib的程式語言
- 如果你想要走得遠,走的深 => 不管從什麼程式語言入門,請還是要學學C
不是要你用C寫個大作品,而是要了解C語言的結構知識
linklist, pointer, call by value/reference, 參數有加 & 是什麼意思...等等
學會了,你會發現所有的程式語言長得有87%像

使用的程式語言容易變換,你就可以依需求選擇程式語言。
沒有爛程式語言,只有不適合的程式語言

08-24 03:04

播磨拳兒
哈哈,看到標題就看了兩三航就留言了,其實我的小屋也有教學文,只是因為最近忙於工作再加上懶,所以更新很慢,有興趣請至我的小屋看看,我的目標是教Java,慢慢教到寫Android App,當然也不排除教IOS(看情況)

08-24 07:36

❤トンパ •̀ ω •́
暗閻神族是神作阿,可惜後面的下半部沒出[e36]

08-24 08:14

雪之王女‧F‧巧可奈
完全外行的領域只能純給推>///<

08-24 08:47

單身狗英雄
我大學程式學的不好,現在早忘光了

08-24 08:56

jntk
流程跟Logic gate可以寫得十分順暢,但是寫object我就直接吃土了

08-24 11:02

破天
學完C後再學其他語言其實大同小異,只是習慣跟用法需重新適應。

08-24 11:15

雞塊
先學簡單的吧 有興趣再補C 不然幾篇文章你小屋就人氣空了

08-24 11:46

嘟嘟好臘腸的size
新手學c=放棄

08-24 12:34

臭臭泥甕
其實我有兩個小疑問,如果有款遊戲真的只用HTML跟CSS來寫(完全沒使用到JAVA),這種情況下依舊不算程式語言嗎?另一個問題則是HTML5算不算程式語言?有這兩個疑問是因為學程式或者從事相關工作的工程師朋友們都認為不是,但是業餘或者部落客等則認為是0_0"

08-24 12:43

解凍豬腳
不算,其實有個稱呼叫做「電腦語言」,意思是「用來跟電腦溝通的標準」,程式語言就是電腦語言的其中一種。

HTML 只是一種「標示語言」,它確實屬於電腦語言的一種,但不是電腦語言之中的程式語言,它用來描述網頁的結構,而後由瀏覽器去解析它們,才會變成你在網頁上面看到的樣子;CSS 也是一種電腦語言。

我們通常在網頁上面會用到三大元素:HTML、CSS、JavaScript,只有 JavaScript 能有處理資料、邏輯判斷的能力,所以這三者之中 JavaScript 是程式語言。08-24 19:51
玄雲
單純想回樓上的問題
html和css不算程式語言,頂多算是程式邏輯吧?
好比有人可以使用EXCEL來畫圖,那你可以認為EXCEL是繪圖軟體嗎?
這個跟HTML跟CSS 對照 程式語言 應該是一種舉例吧XD

08-24 13:06

Tid
聽說C語言摸透後 會摸不到C罩杯

08-24 17:53

菇菇
會java但不會C的路過,先給個GP坐等大大教學~~

08-24 21:01

臭臭泥甕
感謝回覆,解答了我多年的疑惑。

08-24 21:17

叔叔
html和css其實是繪圖程式<就跟PS MAYA 3DMAX一樣 對吧.....

08-24 22:28

UCC USA
高一學這個會不會太晚?

08-25 16:28

解凍豬腳
如果你不是以專業為目標,那麼世界上所有的技能永遠都不嫌晚08-25 16:30
解凍豬腳
當然以你的情況來說,你如果是想要讀資工的話,其實說真的高一也不算晚,重點在你有沒有真的養成平常寫程式的習慣08-25 16:31
Shark
關於初學程式學C好不好,我是先學Java後學C和組合語言的。我覺得C語言簡單很多(我指純C而不是C++),因為任何東西都可看成CPU和記憶體裡byte的流動,很單純,指標也只是一個整數而已。
Java看不到底層資料的流動,比較不直覺,而且多了字串、abstract class、interface、reference等難懂的東西。
C#在公司有用過,覺得它有更多不是電腦原有的,而是人為加上去的東西,所以更複雜難懂。

Python也是包了太多層皮所以沒那麼好懂,入門是很快,但碰到一些問題時不熟悉底層就會卡住,例如unicode字串為何不能跨平台,還有value type和reference type的差異。

不過如果想唸資訊相關科系那C和組合語言是必學,以了解電腦運作的原理,像暫存器、stack和heap、calling convention這些東西,因為這些就是資訊科系該學的專業。

08-25 17:59

超猛禿頭佬
C 語言:從入門到放棄

08-26 02:23

無名小子
說到這
以前大學時雖有C++ 不過老師超混一學期只上一次課(後來被我們班投訴罷免了) 換了一位新來的人雖好但感覺不太會教..... 我又是轉系的因此我學的零零落落......
頂多JAVA是選修我自學一點但在for迴圈我就陣亡了 到現在也是.....

08-28 15:00

我要留言提醒:您尚未登入,請先登入再留言

198喜歡★johnny860726 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:最近很容易肚子餓... 後一篇:[達人專欄] 跟著豬腳 ...

追蹤私訊切換新版閱覽

作品資料夾

------------------ (0)

豬腳生活 (1)
日常雜談、巴哈大小事 (193)
煞氣a國中生 (7)
高中生活日誌 (55)
大學生活日誌 (34)
冬令營回憶錄 (19)
也許藏有一些小祕密吧? (3)
各式各樣的開箱文 (11)
貓科動物時間 (15)

------------------ (0)

繪圖創作 (1)
電繪插圖、草稿 (199)
短篇漫畫、單幅標語 (61)
上課太無聊的手繪塗鴉 (8)
不知道該怎麼分類的綜合作品 (18)

文字創作 (1)
草莓兵的國軍紀實 (14)
我與らい的點點滴滴 (12)
那些榮耀的時刻與心跳加速的瞬間 (60)
有感而發的隨筆之作、無法分類的短文 (17)

------------------ (0)

語言學習 (1)
日語:天気がいいから (5)
粵語:唔好再淨係識講粗口喇 (6)
英語:Hey, you! (1)

程式設計及電腦網路 (1)
系列文:跟著豬腳 C 起來 (10)
系列文:論壇網站運作原理 (3)
Go(Golang) (11)
Ruby / RGSS (7)
Visual Basic (13)
JavaScript (1)
各種原理 (17)

思想:多思考一下,世界會更不一樣 (1)
網路經驗、社會觀察 (23)
檸檬庫 (21)

數學:我來拯救你的期中考了 (1)
各類基礎觀念 (5)
國中生也能懂的微積分 (9)
微分方程 (0)

小說:用筆鋒劃出新世界的入口 (1)

繪圖:我也想畫出私巴拉西的美圖 (10)

------------------ (0)

施工中 (22)

不堪回首的痕跡、雜物堆放 (31)

------------------ (0)

未分類 (1)

d88931122所有巴友
歡迎諸君來參觀老僧的小屋,內含Steam與Google Play遊戲、3D角色模組、Line貼圖看更多我要大聲說昨天15:14


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】