小屋創作

日誌2018-08-23 20:53

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

作者:解凍豬腳

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

  對於一個現代人來說,我們每天都會需要用到 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 語言教學手冊第四版》(旗標出版)作為參考架構,帶領大家一起踏入墳……咳咳,我是說帶領大家走向科技新貴、人生勝利組的道路!如果你想要現在開始學寫程式的話,敬請期待。
 

198

41

LINE 分享

相關創作

[達人專欄] [ OpenGL 入門到入土 # 2] Compute shader、GPU Instance、DrawIndirect與實作Frustum culling

[量子位]沒有顯卡的年代,這群程式員用4行代碼優化遊戲

promise.all 有一個失敗就不會往下做其他promise了,如何無痛讓promise做事 - promise.all的陷阱

留言

開啟 APP

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

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