C/C++程式設計之章 牙牙學語

寫程式,寫程式,什麼是寫程式?

電腦是白痴,這是第一個要知道的事。而且很自閉,它只聽自己聽得懂的話,聽不懂就裝死給你一個無辜的表情流一堆口水。

先回頭說什麼是程式。程式(program)是一種讓作業系統運作的東西,是一種軟體,是一堆指令,是完成一種任務的計算過程。程式沒有執行的時候就只是一堆檔案,待在硬碟裡動也不動(worm或virus什麼的例外)。當你去「執行」它,就是命令作業系統去載入這個檔案,這個檔案裡面因為包含了指令,所以電腦依照指令開始做事情,看是要洗衣拖地還是擦玻璃。

但是它是白痴,教不會聽人話,所以我們要做的事情,是學會講它的語言,一旦講到它懂,它就會乖乖的去做,這一點比小屁孩好多了,而且正常的電腦不會像男女朋友一樣鬧脾氣,一個口令一個動作,聽話的很。對,它很聽話,聽它懂的話。

寫程式相當於寫字、寫文章、寫待辦事項、寫SOP。電腦只懂0與1,但是我們很難學會用0與1講話,太長,太容易出錯。所以各式各樣的程式語言誕生了。就像我們台灣人要跟一個亞馬遜土著講話,但是我們不懂他們的語言,很巧的有個美國人跟俄國人會講這些土著的語言,那我們要怎麼做?把我們要講的話用英語告訴美國人,讓他轉達,或是轉成俄語,請俄國人轉達。程式語言就是一種翻譯,讓我們可以跟電腦溝通。

很遺憾的,現在的程式語言沒有像我們平常講的話那麼好懂,畢竟,它們是站在電腦那邊的,只是偏向我們人類一些而已。

程式語言不只幾種,有幾十種、幾百種。你當然會懷疑要那麼多種語言幹嘛,那你也該先想一想,這個世界上有那麼多語言,每一種語言都有它出現的理由。程式語言也是一樣,每一種都有它自己的優點、缺點、特點。想要學會所有的程式語言是不太可能啦,也沒有必要。

學程式語言必須要有一種認知,是你在學人家的語言,不要抱怨人家的語言難懂,是你自己要學的。英文單字從國小國中一路背到現在,記得的有多少個?能流利的跟外國人說話嗎?程式語言也是一樣,你能不能流利的使用,要看你有多用力的去學。幸運的是,程式語言需要記的規則比英文文法規則少多啦!

書、一本書、這是一本書。

我們在學國語不也是一個詞一個字慢慢背慢慢累積起來的嗎?牙牙學語,學到髒話可不好,怪腔怪調也不好,先會說,再會寫,進而求文藻優美。在程式語言的部份,先求結果準確,再求效率,最後才是看你的程式碼優不優美。

一字一句,一行一行,想好你要講什麼再講出口,想好你要電腦做什麼再寫下手。

C/C++是什麼?能吃嗎?

講歷史沒什麼意思,知道這是目前最多人會用的語言就夠了。C/C++是C語言與C++語言的縮寫。C++可以說是C語言的擴展,也可以說不是,因為在觀念上與語義上,很多地方都有差異。但這些差異對你來說很重要嗎?其實還好,懂這些差異並不能讓你寫出更好的程式,不過在你寫出來的程式碼怎麼編譯都不會過時,也許可以為你提供一盞明燈。

編譯?我剛才講了編譯?是國立編譯館那個編譯嗎?

差不多啦,編譯就是編與譯嘛。你寫的C/C++程式碼,需要有個東西幫你轉換成電腦懂的語言,這就是編譯器(compiler,編譯是compile,加上er,就變成做編譯的人,因為不是人,所以叫編譯器)的功用所在。編譯器的工作很多,責任制的,事情做完才會停。它要負責檢查你的語法,還要做最佳化,讓你的程式跑得更快,或是體積更精簡。

常用的IDE把編譯器藏在你看不到的地方。IDE又是什麼?Integrated Development Environment,整合式的開發環境。以前那個清純的年代,程式碼在寫完以後,就讓編譯器去跑出物件碼,再用連結器去連結成可執行檔。但是隨著程式碼越來越複雜,這些工作就變得越來越囉唆,於是就有整合的環境出現了。你在寫好程式碼之後,只要按個熱鍵或是點個滑鼠,這些工作就一口氣完成啦。

常見的IDE有Eclipse、MS Visual Studio、Dev C++、Code Block等等。MS的東西當然是要錢的。我們在後面的教學裡,不會用MS Visual Studio,雖然我個人真的覺得它是一個好東西,功能強大到讓人變笨。我們會用基本的編譯器來做,而為了簡化,我們用Linux上最普遍的GNU Compiler Collection

下個章節開始,我們來開始學C/C++程式語言吧。

Leave a Reply

你的電子郵件位址並不會被公開。 必要欄位標記為 *