第1課的範例程式是自我介紹,主要是練習如何跟電腦溝通、如何讓電腦顯示訊息。當然這只是很小的一步,離真正實用的程式還有很長距離。

那實際的程式又是什麼樣子呢?以常用的通訊軟體(如LINE)為例,通訊軟體主要的功能,是讓使用者之間彼此對話,從使用者的角度,覺得是透過通訊設備(電腦或手機)與朋友對話,看起來像是這樣:

但其實真正達成對話功能的是軟體(程式),設備與網路是底層的載體或媒介,所以從程式的角度來看,應該是這樣:

使用者輸入訊息到通訊軟體,通訊軟體並無法直接連到對方的手機中(也不知道對方在哪裡),而是上傳到雲端的伺服器軟體(稱為後台軟體或雲端軟體),再由伺服器軟體傳到對方手機中的通訊軟體。當我們打開LINE時,LINE會馬上跟LINE後台軟體溝通,所以後台軟體知道所有上線的LINE所在(網路位置,不是實體位置)。

不過程式(或稱應用軟體)沒辦法直接控制硬體,而是透過作業系統(稱為系統軟體)來控制鍵盤、螢幕以及網路,所以更進一步的樣子是下面這樣。

程式與作業系統之間的溝通,通常是透過「系統呼叫(System Call)」,這部分由程式開發環境(也就是Swift Playgrounds或Xcode)來幫我們轉譯,也就是說,Swift Playgrounds會將我們寫的 print("Hello world!") 轉譯成某些系統呼叫,將字串輸出到主控台,這樣的轉譯動作,稱為編譯(Compile)。

所以應用軟體的程式設計,大部分的工作是在與作業系統溝通,好的程式設計師必須熟悉作業系統的功能,要擅於跟電腦溝通,但是久而久之,反而會不擅於跟人對話。

下一節:第2課 先乘除後加減:算術運算與迴圈