系統軟體與應用軟體
軟體依「為誰服務」大致分成兩大家族。系統軟體(system software)的存在是為了讓電腦本身運轉並提供支援——它服務機器與其他程式。應用軟體(application software)的存在是為了完成人們真正在乎的任務——它直接服務使用者。一個粗略的比喻:建築的電線、水管與電梯是系統軟體(你不是為它們而搬進來,但少了它們什麼都不能運作),而辦公室裡的家具與在裡頭工作的人則是應用程式(這棟建築存在的理由)。
系統軟體包括作業系統及其核心,但也有一群配角:裝置驅動程式、把程式準備好以便執行的連結器與載入器、系統函式庫、命令殼層,以及檔案管理員、磁碟工具等公用程式。這些程式管理硬體、提供共用服務,並打造出讓其他一切得以立足的平台。應用軟體則是你刻意啟動來完成某事的東西:瀏覽器、試算表、遊戲、相片編輯器、聊天程式。應用程式把所有低階的事都倚賴系統軟體——它們請作業系統去開檔案、在螢幕上繪圖,而不是自己動手。
界線確實會模糊,這點值得坦白。網頁瀏覽器感覺像純粹的應用程式,卻內含一整套像平台的執行環境。文字編輯器是應用程式,但編譯器通常算系統軟體,因為它的工作是建造其他軟體。好用的判準是問:「這個程式主要是為誰而存在?」如果它主要服務使用者的目標,就是應用軟體;如果它主要服務機器或其他程式,就是系統軟體。
以手機為例:Android(作業系統)、它的驅動程式,以及載入應用程式的執行環境,都是系統軟體。地圖程式、相機程式,以及你安裝的遊戲,則是應用軟體。輕觸相機程式,它便請系統軟體代它去存取鏡頭硬體。
系統軟體搭起舞台;應用軟體在台上演出。
作業系統是系統軟體的核心,但並非系統軟體的全部——驅動程式、編譯器、連結器與殼層也都是系統軟體。而一個應用程式即使內含自己的執行環境,那執行環境也不會因此變成作業系統。