Transcript 單元3

計算機概論
1001課後輔導教材
單元 3:電腦軟體
主講老師:徐培倫
單元3
電腦軟體
軟體的種類
系統軟體
作業系統
程式語言
課後習題
2
軟體的種類
 電腦可分為軟體 (Software) 及硬體 (Hardware) 兩
個部分。軟體是一切程式的總稱, 廣義來說, 軟
體泛指能夠控制電腦硬體運作的方法與技術;
狹義而言, 軟體是由各種程式語言所寫成的程式,
可配合硬體的特性, 讓電腦依使用者的需要而運
作。
 軟體可進一步區分為系統軟體 (System Software)
及應用軟體 (Application Software) 等 2 大類:
3
軟體的種類
 系統軟體與應用軟體還可區分成以下的分類:
4
軟體的種類
5
7- 1- 1 系統軟體
 系統軟體通常是為了讓使用者更方便地使用電
腦, 或讓應用軟體能更有效率地執行, 例如提供
操作介面讓使用者得以存取硬碟、列印文件
……。
 系統軟體與應用軟體最大的差別在於:系統軟
體的主要目的為支援電腦的運作, 因此一般而言
會與所使用的硬體有關, 而應用軟體則否。系統
軟體可分為以下 3 種類型:作業系統、公用程
式、程式開發工具。
6
作業系統
 作業系統 (OS, Operating System) 是介於電
腦硬體與應用軟體之間的軟體, 它提供應
用軟體執行的環境, 並控制電腦的各種硬
體。作業系統的功能主要有三:
 讓使用者能更方便的操作電腦。
 使電腦資源 (如記憶體、CPU……) 得以更
有效率的運用。
 提供程式執行的環境及系統呼叫服務。
7
作業系統
 由於我們是藉由作業系統來與電腦溝通, 所以在
使用電腦時, 實際上是在操作作業系統, 而不是
直接控制電腦的硬體。我們只要對作業系統下
達簡單的指令, 它就會執行複雜的硬體動作為我
們把工作做好。
 目前比較多人使用的作業系統有 Windows
XP/Vista/7 、Windows Server 2003/2008 、Mac
OS 、Linux 、Unix 。
8
公用程式
 電腦和我們的車子、冷氣機一樣也需要保養維
護的, 而這類用來維護或整理電腦系統的程式就
稱為公用程式。公用程式的種類很多, 用途也很
廣泛, 例如搶救不小心刪除的檔案、快速備份硬
碟、預防電腦病毒、壓縮檔案等。
 個人電腦上常見的公用程式有:Nor ton Sy s
temWorks 、WinZip 、NOD32 防毒軟體…等, 有
的作業系統本身也會提供一些磁碟、檔案的維
護管理工具, 例如 Windows 中的控制台、工作管
理員、清理磁碟、磁碟重組等工具。
9
程式開發工具
 語言是用來溝通的工具, 人類有人類的語言, 電腦也有電
腦的語言。我們必須將要電腦做的事情, 以電腦了解的
語言來表達, 電腦才能替我們完成工作。
 那麼和電腦溝通該說什麼呢?那就是程式語言
(Programming Language)。程式就是利用程式語言, 遵照
其一定的規則及所要處理工作的順序, 編排而成的一連
串命令。目前電腦的程式語言有相當多種, 如 Java、C、
C++、C# 、Visual Basic、PHP、Perl 、組合語言
(Assembly) 、Pascal 、Fortran 、Python……。
10
程式開發工具
 而開發程式的過程中所會用到的工具, 即稱為程式開發
工具。傳統上, 程式開發者會先以文書編輯器 (Text Ed i
tor ) 寫好程式碼之後;利用編譯器(Compiler) 將程式碼
編譯成目的檔 (Object Program);再以連結器 (Linker)將
其他相關的程式連結在一起, 成為可被執行的執行檔;
最後再透過載入器(Loader) 載入到記憶體中執行:
11
程式開發工具
 開發程式時, 較大型的程式很少一次就完全成功的, 若在
編譯或執行過程中發現錯誤, 則會利用除錯器 (Debugger)
偵錯。在有些情況, 為了讓程式執行更有效率或想要自
行控制硬體, 則會使用組合語言撰寫程式碼, 寫好的程式
碼就需要以組譯器 (Assembler) 將程式碼編譯成執行檔
。而有的還會有巨集處理器 (Macro Processor), 可以在撰
寫程式時, 用指定的字串來取代多行程式碼,以方便閱讀
。
12
7- 1- 2 應用軟體
 應用軟體是針對特定任務或功能所設計的程式。系統軟
體只是賦予電腦硬體的靈魂, 必須藉由各種應用軟體的
支援, 電腦才能充分展現它的效用, 應用於我們的日常生
活、工作之中。應用軟體依使用者取得的方式, 可分為
以下 2 類:
 套裝軟體 (Package Software):在市面上購買或直接從
網路下載的現成軟體, 例如 Office、Photoshop、
Dreamweaver、PC-cillin …等, 市面上大部分的應用軟體
均屬套裝軟體。
13
應用軟體
 自行開發的軟體 (Tailor Software):當套
裝軟體無法符合某些需求時, 而特別量身
打造的軟體, 例如有些企業會委託軟體公
司或自行開發符合其需求的採購訂單管理
系統、人事薪資管理系統…等。
14
電腦中常見的套裝軟體
 文書處理軟體:Microsoft Word、Openoffice.org Writer
。
 試算表軟體:Microsoft Excel、Openoffice.org Calc。
 簡報軟體:Microsoft PowerPoint、Openoffice.org Impress
。
 資訊管理軟體:Microsoft Outlook。
 多媒體軟體:MediaStudio Pro、Flash。
 繪圖、影像處理軟體:AutoCAD、CorelDraw、
Photoshop、Illustrator。
15
電腦的軟硬體組成
16
電腦的軟硬體組成
 若以實際的運作情況來看, 如:小明在電腦上安裝了
Windows 7 作業系統及 Word 軟體, 當他要將打好的文件
列印出來時, 其運作關係如下所示:
17
作業系統的功能
 作業系統是電腦硬體與使用者, 及電腦硬體與應
用軟體之間的媒介。使用者透過應用軟體或作
業系統來操控電腦硬體, 作業系統再將執行結果
傳回給使用者或應用軟體。作業系統的主要功
能有以下 3 項:
 提供使用者介面。
 管理系統資源。
 提供程式執行的環境及系統呼叫服務。
18
提供使用者介面
 當我們新接觸到一個作業系統時, 很多人往往會說「讓
我看看它長什麼樣子?」 進而坐到電腦前實際使用鍵盤
、滑鼠體驗一下。使用者面對一個作業系統, 其所看到
的外觀及操作方式, 即稱為使用者介面 (UI, User
Interface)。
 作業系統在電腦硬體與使用者之間提供了 『使用者介面
』, 讓使用者透過此介面來執行所要進行的事。等執行
完後, 作業系統再經由使用者介面將結果讓使用者知道,
因此作業系統扮演了使用者與電腦硬體溝通橋樑的角色
。
19
提供使用者介面
 使用者介面依使用者在操作時, 主要是以
滑鼠或鍵盤操作的不同, 可分為命令列介
面 (CLI, Command-Line Interface) 及圖形
使用者介面 (GUI, Graphical User Interface)
等 2 種:
20
提供使用者介面
 命令列介面
 以文字模式呈現, 需由鍵盤輸入指令, 方能執行所需要的
功能。由於命令列介面並不需花時間在視窗呈現的運算
上, 因此
會有較佳的執行效能
;但缺點為操作介面
較不友善, 需要記憶
指令的用法才能上手。
21
主要作業系統推出年表
 最後下面這張表,
列出了比較具代
表性作業系統及
其版本與推出年
代, 提供給讀者
參考:
22
量身訂做的作業系統 -
嵌入式系統
 嵌入式系統 (Embedded System) 是一種完全針對特定用
途而設計的作業系統, 我們的生活中隨處可見嵌入式系
統的應用, 小至手機、MP3 隨身聽, 大至 ATM 提款機、
購票系統、工廠自動化機器, 這些裝置都需要作業系統
來處理工作, 其所使用的作業系統便是嵌入式系統。
23
量身訂做的作業系統 -
嵌入式系統
 上述所提到的裝置都是特定用途, 因為這些工作
都是特定應用, 例如 MP3 隨身聽只需要處理
MP3 解碼、音樂播放等工作, 所以製造廠商會精
簡原有的作業系統, 或者自行開發專屬的作業系
統, 針對特定用途進行最佳化, 並且盡量縮小系
統以降低成本。這些針對特定用途 『量身訂做
』 的作業系統, 因為與硬體有密不可分的關係,
感覺上好像是把作業系統嵌進硬體裝置內, 所以
泛稱為嵌入式系統。
24
量身訂做的作業系統 -
嵌入式系統
25
量身訂做的作業系統 -
嵌入式系統
 嵌入式系統通常以韌體 (Firmware) 的形式放置於 Flash
Memory 等唯讀記憶體中, 除非經過特殊的更新程序, 否
則系統通常是固定不變的。
 韌體是一個具有軟體程式功能的硬體, 介於軟體與硬體
之間, 兼具兩者的特性。個人電腦的 BIOS, 便是韌體的
一種。
 目前幾乎所有電子產品中, 或多或少都有嵌入式系統的
影子, 資訊科技除了在個人電腦、超級電腦等領域日新
月異, 在嵌入式系統領域的發展也相當成功, 產生了各式
各樣自動化的電子產品, 可說是更為深遠地增進了人類
生活的便利性。
26
嵌入式系統與一般作業系統的差別
 嵌入式系統包含的範圍相當廣泛, 各領域所使用
的系統可能完全不同, 以較廣為人知的手持裝置
(智慧型手機、PDA) 為例, 其中常見的 Windows
Mobile 與個人電腦上的Windows 系統比較其差
異如下。
27
嵌入式系統與一般作業系統的差別
 個人電腦上的 Windows 可以由使用者自行切割磁碟區、
重新安裝 Windows、升級Windows 到更新的版本, 甚至
還可以刪除 Windows 改為安裝 Linux;但是手持裝置上
的Windows Mobile 便無法進行這些工作, 因為嵌入式系
統中軟硬體緊密結合, 所以使用者無法隨意修改系統, 很
難自行改裝為其他嵌入式作業系統 (如 Android 或 iOS)
。
28
嵌入式系統的研發環境
 因為嵌入式系統是 『量身訂做』 的作業系統,
所以在嵌入式系統中, 軟硬體是非常密切的結合
在一起, 可能更改了某個硬體元件, 軟體便必須
跟著修改;或者要實作出某種軟體上的功能時,
同時需要增加某個硬體元件, 因此嵌入式系統的
開發者, 必須對軟體與硬體都有一定程度的瞭解
。
29
嵌入式系統的研發環境
 設計嵌入式系統時, 除了微處理器晶片 (MCU,
Microcontroller) 以外, 通常還需要加上各式各樣的周邊
功能晶片, 例如類比數位轉換器 (ADC, Analog-to-Digital
Converter)、數位類比轉換器 (DAC, Digital-to-Analog
Converter)、放大器、過濾器、脈衝寬度調變 (PWM,
PulseWidth Modulation)...等, 因為綜合了數位和類比的周
邊功能晶片, 使得整個系統變得相當複雜。
30
嵌入式系統的研發環境
 部分廠商會推出整合週邊元件的晶片或套件, 將常用的
數位和類比功能整合進微處理器晶片, 如此便不需要外
加周邊功能晶片, 可以降低設計的複雜度 。
 不過即使採用整合式晶片進行研發, 仍然可能發生產品
設計初期選定某一款晶片, 到了中後期臨時需要新增某
個功能, 但是這個功能並未被整合進當初選定的晶片的
狀況。此時要解決問題, 只能增加成本外加周邊晶片, 或
者改用其他整合式晶片, 但兩者可能都需要更改電路與
程式的設計, 額外耗費大量的時間和精力。
31
嵌入式系統的研發環境
 為了增加嵌入式系統的設計彈性, 美國 IC 設計廠商
Cypress 公司開發出了 PSoC(Programmable System on
Chip, 可程式系統單晶片) 系統晶片。PSoC 晶片內部具
有多個可自由設計的數位、類比模塊, 這些模塊可以像
堆積木一樣, 自由地變化成數位和類比的應用功能, 例如
可透過兩個類比模塊構成一個濾波器。設計者可依照需
求隨時增加、刪減, 或更改區塊所形成的功能, 所以就算
遇到產品功能或設計改變, 也不需要更換晶片, 或是從頭
大幅改變電路與程式的設計。
32
嵌入式系統的研發環境
 目前 Apple、任天堂、三星等領導性廠商已經開
始採用 PSoC 晶片進行開發, 在充滿彈性的設計
理念下, PSoC 晶片的開發模式可說是嵌入性系
統未來值得關注的發展方式。
33
何謂程式語言
 電腦是用來幫助人們解決問題的, 而電腦硬體要
能幫我們解決問題, 就必須有程式 (軟體) 告訴電
腦要做什麼事。所以程式語言可說是人控制電
腦如何做事的一種語言, 而為了符合不同的需求
、解決不同類型的問題, 也使資訊界出現各種不
同的程式語言, 例如一般人可能都曾聽過的組合
語言、BASIC 、C、C++、Java 、...等等。以下
我們進一步來瞭解為什麼會有這麼多種不同的
程式語言, 以及其間的差異。
34
13-2 程式語言的發展
 如果不考慮一百多年前的分析機 (Analytical
Engine, 參見第 1 章), 第一個程式語言的出現至
今才不過半個世紀多, 但在短短的 50 年, 就已發
展出數量多到令人眼花撩亂的程式語言種類。
程式語言最簡略的分類方式, 就是將它們依『抽
象化』的程度分成高階語言 (High-Level
Language)、低階語言 (Low-Level Language)兩類
:
35
程式語言的發展
36
13-2-1 第一代:機器語言
 對於電腦來說, 它真正所懂得的語言只有一種, 就是機器
語言。所謂的機器語言, 其實是以特定的數字來表示電
腦所能進行的各個動作, 我們稱這些數字為機器碼
(Machine Code) 或機器語言。舉例來說, 如果把電腦比喻
為一個只認得數字命令的機器人, 而 0 代表向前走一步
、1 代表向後退一步、2 代表往左轉 90 度、而 3 代表往
右轉 90 度。那麼當我們要命令這個機器人往前走三步
、再往右走三步時, 就必須下達『0003000』的指令, 當
電腦看到這一串數字後, 就會依照每個數字所代表的意
義做出指定的動作:
37
第一代:機器語言
 相信大家都會發現, 用數字來控制機器人會相當辛苦, 因
為我們得先熟記每個數字所代表的動作, 然後還要能將
一連串數字組合起來, 以表達我們要機器人做的工作。
 不過上述的機器人例子, 其實已經簡化機器語言的複雜
性。CPU 只能接受一組預先定義好的指令, 而且這些指
令其實都只是做一些非常基本的計算或控制動作, 所以
要讓電腦做一項簡單的動作, 可能需要數個指令才能完
成。以目前通用於個人電腦的 x86 系列 CPU 為例, 要讓
它計算 "3-1" 這個減法計算, 必須先將數字 3 存到暫存器
(參見2-2-1節) 後再進行運算。
38
第一代:機器語言
 任何一個人都可以看得出來, 這種以數字表達的
語言並不適合人閱讀。因此大家很快就發現要
用這種方式撰寫程式, 實在太難、太辛苦了。所
以人們就開始思考如何能以更友善的方式來撰
寫程式。
39
關於程式『碼』
 在程式設計的領域, 常可聽到程式碼或原始碼
(Source Code) 這樣的名詞。『碼』就是由英文
字 Code 翻譯而來, 其原意是指機器語言的數字
碼。雖然我們使用各種高階語言 (後詳) 所撰寫
的程式早已脫離用數字寫程式的形式, 不過 Code
這個字仍沿用至今,因此對任何程式語言所寫成
的原始程式, 都可稱之為程式碼或原始碼。
40
13-2-2 第二代:組合語言
 由於使用以 0、1 組合成的機器語言來撰寫程式實在太
不方便, 因此人們就想到將這些機器碼都代換成較方便
學習、記憶的助憶碼 (Mnemonic), 也就是組合語言
(Assembly Language)。
 以前面的機器語言程式為例, 將資料從某處移到某處的
動作就用英文單字Move 的前三字 MOV 來代表;而將
數值減 1, 就用 Decrease 的前 3 字 DEC來代表, 所以前述
的程式用組合語言來寫就變成如表 13-2 所示。
41
第二代:組合語言
 組合語言程式必須轉換成微處理器真的看得懂的機器語
言碼, 才能讓電腦執行。將組合語言程式轉換成機器語
言程式的動作稱為組譯, 用來將組合語言碼轉換 (翻譯)
成機器碼的工具稱為組譯器 (Assembler)。
42
第二代:組合語言
 由於機器碼和組合語言碼有對應關係, 所以也可
以反向由機器碼產生組合語言碼的程式, 此動作
稱為『反組譯』, 所用的工具稱為反組譯器
(Disassembler)。
43
第二代:組合語言
 雖然用助憶碼來代替原本的數字程式碼已改善原本用機
器碼寫程式的諸多不便及容易出錯等缺失, 但用組合語
言寫程式仍有一大缺點:程式設計者必須對微處理器架
構、電腦硬體架構要有充份的認識。例如表 13-2 中的程
式就用到了 AX 暫存器 (AL 代表 16 位元 AX 暫存器中
的低位元組), 換言之, 要用組合語言寫程式, 至少必須認
識微處理器中有哪些暫存器可使用、各暫存器的功用為
何;如果程式需存取到週邊裝置, 則需認識如何透過
BIOS 或特定的輸出輸入埠 (I/O Port), 將資料送到輸出裝
置或由輸入裝置取得資料。
44
第二代:組合語言
45
第二代:組合語言
 然而要充份認識微處理器架構、電腦硬體架構後才能開
始寫程式, 就好像要求我們要先瞭解引擎結構、傳動系
統之後才能學開車;要先認識無線電原理及語音轉換成
無線電的編碼方式才能用手機打電話:這將對汽車、行
動電話的推廣有莫大的阻礙。同理, 組合語言提高了撰
寫程式的門檻, 也因此限制了電腦的普及。此外, 以組合
語言撰寫程式還有下列缺點:
46
第二代:組合語言
 因為使用的助憶碼仍是代表微處理器的指令, 也
就是要以微處理器的角度來思考問題, 開發程式
仍相當不便。
 不同硬體架構的微處理器其機器碼都各不同, 例
如一般個人電腦所用的 x86系列 CPU, 和許多智
慧型手機使用的 ARM CPU 其機器語言就不相
同, 組合語言也有差異, 要讓程式可在不同的電
腦上執行, 必須重新改寫程式。
47
13-2-3 第三代:高階語言
 不論是機器語言還是組合語言, 對於程式
的描述都是以電腦所能進行的最基本動作
為步驟, 因此這兩種語言被稱為低階語言
。為了讓人們能以更接近人的思考方式來
寫程式, 就有了所謂的高階語言。
48
第三代:高階語言
 第一個被廣泛使用的高階語言為 1950 年代所開發出來
的 Fortran (Formula Translator) 語言, 此後更多的語言如
COBOL 、BASIC、Pascal 、C ... 等等就如雨後春筍般地
出現。高階語言中有些是專為某些用途而設計的, 但也
有些是特別設計成通用性 (General Purpose) 的語言。但
由於各語言都有不同優缺點, 也因此各有其適用的場合,
再加上每個人對語言有不同的喜好程度, 所以至今仍有
相當多的語言存在, 我們也因此有許多程式語言可選擇
。
49
第三代:高階語言
 高階語言與低階語言之間最明顯的差異, 在於高階語言
多是以近似英語的語法來撰寫, 因此學習的難度降低, 寫
來也較不容易出錯。例如以下的 BASIC語言程式片段,
就算沒學過 BASIC 語言的人, 也能大概猜出其意思。
50
第三代:高階語言
 雖然寫程式的門檻降低, 但也連帶使程式的執行效能下
降:一般而言, 同樣的程式, 用高階語言撰寫者, 其執行
效能會比以組合語言撰寫者差。不過透過編譯器 (後詳)
的改良、硬體速度的飛快成長, 使其間差異愈來愈小, 甚
至可忽略, 因此目前通常只在特別要求執行效能的程式,
才會使用組合語言。
 高階語言寫成的程式, 和組合語言一樣需要經過轉譯的
動作, 才能變成電腦認得的機器語言並執行之。高階語
言轉譯的動作分成兩種:編譯 (Compile)及直譯
(Interpret)。
51
程式語言種類與執行方式的關係
52
13-2-4 第四代及第五代語言
 高階程式語言雖然讓人們能更輕鬆編寫程
式, 但實際上, 要『寫好』程式,仍需經過相
當多的學習與訓練。因此為了減輕程式設
計者的負擔, 讓寫程式變得更容易, 就有人
發展出所謂的第四代語言。
53
第四代及第五代語言
 不過對第四代語言目前並無明確的定義, 大體而
言, 一般所稱的第四代語言都是指能自動產生程
式的工具, 例如報表產生器 (Report Generator) 及
CASE (Computer Aid Software Engineer, 電腦輔
助軟體工程) 工具;或是可花較短時間即可學會
的特定用途語言, 例如專門用於查詢資料庫資料
的 SQL 語言, 其語法比第三代語言更加口語化,
學習的門檻也降低。
54
第四代及第五代語言
55
第四代及第五代語言
 至於第五代語言 (5GL, Fifth Generation
Languages) 則被稱為自然語言(Nature Language),
其目的是希望人們能以更接近日常生活的方式
來命令電腦(設計程式就是要控制電腦), 此一理
念是與第五代電腦的計劃一起提出的。然而由
於第五代電腦的發展計劃也無實際的成果, 第五
代語言的概念早在上個世紀即被提出, 但發展多
年仍未有比較實用的成果。
56
課後練習
1. 請說明系統軟體的分類。
2. 請簡述套裝軟體與自行開發的軟體有何
不同?
3. 請簡述作業系統3 個主要功能。
4. 使用組合語言撰寫程式有什麼優缺點?
57
課後練習
5. 請試說明為什麼要有高階語言。
6. 請說明註解的用途及為什麼寫程式要多
加註解?
58