iT邦幫忙

2021 iThome 鐵人賽

DAY 1
1
Software Development

0基礎也看得懂的程式設計-30天學會C語言系列 第 1

30天學會C語言: Day 0-第一篇不免俗的要來些基礎知識

所以我說...程式是蝦餃?

程式是可以直接在電腦上執行,以完成某個目的任務一連串指令

換句話說,程式就像是一本說明書,裡面詳細紀錄了完成某個任務的每一個步驟以及順序;或者你也可以想成我們要電腦做的任務是完成一道料理,那程式就是這道菜的食譜

電腦裡面的所有訊息都是由代表 0 和 1 (二進位)的電流訊號組成的,為了讓電腦可以直接看懂程式的內容,所以程式也是由一大堆的 0 和 1組成的
這個可以用 0 和 1 表示指令的規則就叫做機器語言

機器語言

機器語言不需要經過轉換就可以直接被電腦解讀,執行速度應該是最快的,但缺點也很多
除了規則非常複雜,不好學習和閱讀,不同廠牌、甚至是不同型號的電腦,使用的機器語言不一定相同,所以一樣的軟體在不同的電腦上都要重新寫一次,使軟體開發變成一件相當困難的任務

程式語言

為了讓軟體開發更加容易,以前的工程師想到用人類較擅長的文字與符號代替原本是數字的機器語言

這類可以用文字符號編寫程式的規則就是程式語言,用程式語言編寫的就叫程式碼

隨著時代演進和更多不同的需求出現,越來越多更容易學習、功能更強大,或是專門解決特定問題的程式語言相繼出現

我們可以把程式碼當成是寫食譜,食譜把一道料理分成好幾步,只要照著食譜一個步驟接著一個步驟做就可以完成食譜上的料理

程式也是,程式會照著程式碼一行接著一行的執行,所以編寫程式時我們要把一個任務分成幾個步驟,再把這些步驟轉換成程式語言一行一行的打出來

學寫程式和學外語一樣,先學會單字和語法,再慢慢嘗試將腦中的想法轉換成實際的文字

轉換

所以程式語言其實是給人看而不是給機器看的,為了讓電腦看得懂我們寫的東西,程式碼必須轉換成機器語言

轉換的方式有編譯和直譯兩種,同一種語言通常只使用其中一種方式,所以使用編譯的程式語言又叫編譯語言,使用直譯的叫直譯語言

編譯和直譯都是由軟體進行,執行編譯的就叫編譯器,執行直譯的叫直譯器,每個語言都會有自己的編譯/直譯器

這個系列要介紹的C語言就是使用編譯

編譯

程式碼會儲存在文字類型(類似.txt)的程式碼檔案,執行前必須先進行編譯
編譯時會把整個檔案的程式碼都轉換成機器語言,再把轉換後的內容儲存在可執行檔案(例如Windows的.exe)

我們可以把寫程式的人想成臺灣廚師,電腦是日本廚師

台灣廚師用繁體中文寫好一份食譜,日本書商的譯者將整份食譜都翻譯成日文,於是所有的日本廚師就都能看懂這份食譜

這邊的台灣廚師就是人,繁中食譜是程式碼,譯者是編譯器,日本廚師是電腦,日文食譜就是編譯好的程式

  • 編譯的優點:
    • 相同平台上,同樣的程式碼只要編譯一次就可以重複使用
      就像前面講的食譜一樣,只要翻譯一次就可以給所有日本廚師看
      程式碼則是只要編譯過一次就可以一直執行,除非程式碼有更動才需要再次編譯(這樣程式碼和程式內容相同)
    • 通常執行速度比直譯快
  • 編譯的缺點:
    • 同樣的程式碼要在不同的平台執行時需要用新平台的編譯器重新編譯(所以軟體會有Mac版和Windows版)
    • 靈活性較直譯差,如果有語法錯誤要整份程式碼都修改好才能執行

直譯

關於直譯可以到這篇康康


下一篇
30天學會C語言: Day 1-C語言起手式
系列文
0基礎也看得懂的程式設計-30天學會C語言30

尚未有邦友留言

立即登入留言