close

接下來,我要向大家介紹C語言的特性,以及它一般的應用領域。

這麼做的原因很簡單,因為已經有太多的人(通常都不是我的學生)問我們說: 老師老師,我在學校學了一年的C/C++語言,但感覺上這些東西除了做乘法表、印聖誕樹以外還有別的功用嗎? 或者問:老師老師,學了老半天,C/C++只能做出在黑黑的文字模式下執行的程式嗎?沒有辦法做出有圖案、有按鈕,可以用滑鼠操作的程式嗎? 老師老師,我可以用C/C++寫出遊戲嗎?

面對這麼多的問題,我當然不希望我的學生在花了大半時間精力後才發現C語言原來不是他所想要的東西! 因此我想在一切開始前先介紹程式語言是什麼東西,現在流行的程式語言有哪些,其各自的特色或優劣之所在又為何等。 但先聲明在前,我並不是萬事通,因此對於其他語言的介紹可能沒有那麼恰到好處; 甚至有些我根本就不會、或不知道的語言自然也沒辦法做說明。

什麼是程式語言

首先,我們知道電腦就是一臺大機器,可是這個機器很笨,我們要下達指令給他他才會知道要做什麼工作; 而下給電腦讓他做我們要的工作的這一群指令我們就稱之為「程式」(Program)。 大家可能都聽說過電腦裡面就是一堆的零和一在跑,是的,電腦內部所有的資料都是只有「零」和「一」組成的東西, 因此這些程式自然也是一堆的零和一。 如果有人可以直接輸入這些零和一的東西叫電腦工作的話,我想這個人一定是超人,因為這太難了。 於是,有人發明了一種翻譯器,可以把人看得懂的語言翻譯成電腦看得懂的一堆零和一; 而這個翻譯器我們一般就叫它做「編譯器」(Compiler)。

理想上完美的編譯器可以把我們說的話,不管是中文、英文、還是其他語言(我們稱做「自然語言」) 通通都可以翻譯成電腦看得懂的一堆零和一(我們稱做「機器碼」)。 但是,編譯器不是神做出來的,而是人做出來的,要翻譯複雜的自然語言實在是太困難了,至今沒有人做得出來。 退而求其次,科學家自己發明了一種語言,讓編譯器不用去翻譯自然語言,只要去翻譯這種科學家自己發明的語言就可以了。 這種科學家發明的語言,對電腦工程師來說這編譯器比較好做;對下指令的人來說雖然不像他的母語一樣容易,卻也比機器碼好學的太多了! 而這種由科學家或其他電腦工程師所自己發明的語言,我們就稱為「程式語言」(Program Language)。

既然程式語言是由人自己憑空發明出來的,那不一樣的人不就會發明出不一樣的語言? 是的,因此從古至今出現過的電腦語言不知有沒有破百種,甚至你自己也可以再發明一種。 只不過不是每一種程式語言都很好用,很多語言沒有人用,後來就消失了! 現今仍然通用、甚至流行的幾種程式語言則各有特色,適合使用在各種不同的用途上。 而C語言便是這眾多程式語言當中的一個,是由Dennis Ritchie大約在1972年所發明的。

因此,學會程式語言,你就可以透過編譯器做出各種你想要的程式,叫電腦做出你想要它做的事情。

C語言可以做什麼?

C語言可以做什麼?通常我遇到會問這個問題的人,都是在學校學了至少一學期程式語言的學生。 在寫了一整個學期的作業後發現,他們都在做排序、比大小、印乘法表、印聖誕樹等看似沒什麼用的東西, 加上其寫作成果都是在指令列模式下執行的程式,與大家想像那種有圖、有聲音、甚至有3D立體影像的酷炫程式相差太遠。 回頭看看自己學的程式設計和所做出來的成果,不禁會懷疑學這東西到底真的有用嗎?C語言難道就只有這點能耐嗎?

其實C語言可以做出很多種程式,包括有圖像介面有按鈕等可以按的、聲光兼具的軟體,也包括很多的遊戲。 C語言能不能做出這些東西是毋庸置疑的,真正的問題應該是探討C語言做這些事容不容易或擅長不擅長,對於這點我會在下一篇文章討論。

我知道很多人憧憬的是做出自己想要的遊戲,然而我們的系列教學文章仍然會以在指令列模式下工作為主。 指令列就是偶爾可能看過,在純文字介面下鍵入指令,而電腦的所有訊息回覆也都是以文字呈現的那個模式。 這麼做的原因很簡單,因為指令列比較單純、簡單。 我知道很多人這時會發出一聲「蛤」!但請相信我,對於寫程式的人而言,指令列真的是既單純又簡單的工作模式。 不信你去翻翻市面上教你用C/C++寫遊戲、做圖形軟體的書,其開篇大概就會告訴你他假設你已經熟悉C/C++了! 原因無他,因為圖形程式是如此複雜、架構是如此繁複,以至於很少有人可以同時一邊教你C/C++、一邊教你寫圖形程式。

其實要快速進入圖形程式也不是沒有辦法,你真的性子急的話可以去試試Java、Scratch。 甚至如果你認為只要程式可以在 Windows PC 上執行就好,而且你對於智慧手機等東西完全沒有興趣的話, 還可以去試試更容易更快速開發出程式的C#或Visual Basic。

註:Scratch有興趣的話拿來玩玩就好。這東西雖然直覺又容易,但沒辦法用來開發真正有用的東西,只能夠給小朋友拿來玩玩。 這樣的說法並不是在批評Scratch,而是Scratch設計上的本意就是如此。

那我為什麼要教你一個距離你夢想比較遙遠的C語言呢?又或者你為什麼應該要學習一個需要走更多路才能達到目的的C語言? 請看我下一篇文章解釋。

重點回顧

  • 程式語言是由人因為電腦工程所發明、規定的語言,這種語言在複雜度上比我們日常生活用的語言更單純且更有規律, 並且語言邏輯更貼近電腦的邏輯,使得語言翻譯器(編譯器)比較容易做得出來。
  • 由於程式語言是設計給人類看的,電腦看不懂,因此要透過編譯器把人類寫的程式語言翻譯程電腦可以執行的程式。
  • C語言可以寫出酷炫的圖形介面程式(如果執行環境有支援的話)、以及各種複雜的軟體,這是毋庸置疑的; 差異只是比起其他高階程式語言,用C語言來做這些事需要花比較多的功夫。
  • 我們將會在指令列模式下執行、寫作、以及學習C程式語言。
arrow
arrow
    文章標籤
    C語言教學
    全站熱搜

    夜行者 發表在 痞客邦 留言(0) 人氣()