何為程式?簡單的說,就是為了使計算機能夠做事,你需要在繁瑣的細節中告訴它怎麼做。對于怎麼做的描述就是程式。程式設計是書寫和測試怎麼做的過程。維基百科上說,一個程式就像一個用漢語(程式設計語言)寫下的紅燒肉菜單(程式),用于指導懂漢語和烹饪手法的人(體系結構)來做這個菜。做一個形象的比喻,在生活中某種意義上,你都見到程式。石器時代,“我們用石頭打它”。就是個程式。

圖1.1 ”我們用石頭打它“ 摘自 《數學之美》
其中,他用怪叫和動作告訴小夥伴這行為,叫做程式。隻有懂這個的夥伴才會一起拿起石頭砸。但相對計算機來說,計算機很“笨”,為了像計算機解釋這些,我們需要一種特定文法精确定義的語言。那就是程式設計語言,例如c++。
這是經典的例子,在螢幕中輸出”hello,world!“:
<a href="http://www.bysocket.com/?p=857#">?</a>
1
2
3
4
5
6
7
8
<code>#include <iostream></code>
<code>using namespace std;</code>
<code>int</code> <code>main()</code>
<code>{</code>
<code> </code><code>cout <<</code><code>"hello,world!\n"</code><code>;</code>
<code> </code><code>return</code> <code>0</code><code>;</code>
<code>}</code>
運作的結果:列印hello,world!然後,下面新的一行.一個光标位于下一行的開始。
圖1.2 hello,world!輸出
程式中,主要工作的代碼:
<code>cout <<</code><code>"hello,world!\n"</code><code>;</code>
cout是一個标準輸出流,使用 << 操作符可以将字元顯示到螢幕上。很自然,這是你第一次看到縮寫,cout:character outputstream的縮寫。剛開始會不适應,但是當你遇見縮寫多了的話,你會愛上他。
第一行:
他是個指令,這個具體是讓我們使用标準的c++流i/o功能。這裡,我們使用了cout和它的操作符<<.此外,使用#include包含的檔案通常字尾有.h,稱為頭檔案或頭。我們基本上是使用c++自己提供的各種功能源代碼。比如上面,我們需要什麼功能就引入啥頭檔案。
程式入口:
大家都知道一個程式要告訴計算機哪裡開始執行,c++每個程式必須有個main函數。一個函數基本是個指令集也稱指令序列,計算機會按着原定的順序執行。一個函數通常包括:
傳回類型:這裡是int,用來指定傳回結果類型。
名字:這裡是main
參數清單:這裡為空,如果有參數,會寫在()
函數體:{}裡面寫了函數要執行的語句。
程式的結束:
<code>return</code> <code>0</code><code>;</code>
要知道,main函數是系統調用的,自然我們需要告訴系統何時結束。傳回值可以用于檢查程式是否成功,特别在有些系統(unix/linux)。有main()傳回的一個 0 表示程式成功終止。
”hello,world!“程式的運作,通過c++程式設計語言。在它從人可讀可改的格式轉換為計算機可以了解的東西,這個過程我們需要一個成為“編譯器”的程式。
何為編譯器?
維基百科上說,編譯器(compiler),是一種電腦程式,它會将用某種程式設計語言寫成的源代碼(原始語言),轉換成另一種程式設計語言(目智語言)。它主要的目的是将便于人編寫,閱讀,維護的進階計算機語言所寫作的源代碼程式,翻譯為計算機能解讀、運作的低階機器語言的程式,也就是可執行檔案。做個比喻,一個聲控電燈,我們如果想說“把燈打開”,燈顯然是不知道這句話的意思。它的世界是:”有聲音我就亮“。進而,你的仆人就大叫一聲,燈亮了。這個仆人的工作就是編譯器的程式原理。
一個現代編譯器的主要工作流程如下: 源代碼(source code)→ 預處理器(preprocessor)→ 編譯器(compiler)→ 彙程式設計式(assembler)→ 目标代碼(object code)→ 連結器(linker)→ 可執行檔案(executables)。是以,可讀可寫的稱為源代碼,計算機可執行的是目标代碼。在未來的日子裡,你将接觸到這個朋友,他非常嚴格。但請你記住,編譯器是你程式設計中最好的朋友。下面我們展現程式的流程:
圖1.3 hello,world!的一生
hello,world! 其實不重要,重要我們熟悉基本思想和工具。曾經看透菜單,成為了大廚。曾經看破曆史的,當了作家或者其他。勤奮,專注,锲而不舍。c++并不難。