7 章倐統程式scy/s5/03-ebook/ch07-SystemApp.pdf7-1 軟體的種詑...
Transcript of 7 章倐統程式scy/s5/03-ebook/ch07-SystemApp.pdf7-1 軟體的種詑...
第第第第 7 章章章章系統程式系統程式系統程式系統程式
著作權所有 © 旗標出版股份有限公司
1
第第第第 7 章章章章系統程式系統程式系統程式系統程式
本章提要本章提要本章提要本章提要
►7-1 軟體的種類►7-2 組譯器►7-3 連結器與載入器►7-4 巨集處理器
2
►7-4 巨集處理器►7-5 編譯器
7-1 軟體的種類軟體的種類軟體的種類軟體的種類
►電腦可分為軟體軟體軟體軟體 (Software) 及硬體硬體硬體硬體 (Hardware) 兩個部分。
►軟體是一切程式的總稱。
►廣義來說, 軟體泛指能夠控制電腦硬體運作的
3
►廣義來說, 軟體泛指能夠控制電腦硬體運作的方法與技術。
►狹義而言, 軟體是由各種程式語言所寫成的程式, 可配合硬體的特性, 讓電腦依使用者的需要而運作。
7-1 軟體的種類軟體的種類軟體的種類軟體的種類
►軟體可進一步區分為系統軟體系統軟體系統軟體系統軟體 (System Software) 及應用軟體應用軟體應用軟體應用軟體 (Application Software) 等 2 大類:
4
7-1 軟體的種類軟體的種類軟體的種類軟體的種類
►系統軟體與應用軟體還可區分成以下的分類:
5
7-1-1 系統軟體系統軟體系統軟體系統軟體
►系統軟體通常是為了讓使用者更方便地使用電腦, 或讓應用軟體能更有效率地執行。►例如提供操作介面讓使用者得以存取硬碟、列印文件……。
6
►系統軟體與應用軟體最大的差別在於:
►系統軟體的主要目的為支援電腦的運作, 因此一般而言會與所使用的硬體有關。
►應用軟體則與所使用的硬體有關。
7-1-1 系統軟體系統軟體系統軟體系統軟體
►系統軟體可分為以下 3 種類型:►作業系統作業系統作業系統作業系統
►公用程式公用程式公用程式公用程式
►程式開發工具程式開發工具程式開發工具程式開發工具
7
►程式開發工具程式開發工具程式開發工具程式開發工具
作業系統作業系統作業系統作業系統
►作業系統作業系統作業系統作業系統 (OS, Operating System) 是介於電腦硬體與應用軟體之間的軟體, 它提供應用軟體執行的環境, 並控制電腦的各種硬體。
►作業系統的功能主要有三:
8
►讓使用者能更方便的操作電腦。
►使電腦資源 (如記憶體、CPU……) 得以更有效率的運用。
►提供程式執行的環境及系統呼叫服務。
作業系統作業系統作業系統作業系統
►由於我們是藉由作業系統來與電腦溝通, 所以在使用電腦時, 實際上是在操作作業系統, 而不是直接控制電腦的硬體。
►我們只要對作業系統下達簡單的指令, 它就會
9
執行複雜的硬體動作為我們把工作做好。
►目前比較多人使用的作業系統有Windows XP/Vista 、Windows Server 2003 、Mac OS 、Linux 、Unix 。
公用程式公用程式公用程式公用程式
►電腦和我們的車子、冷氣機一樣也需要保養維護的, 而這類用來維護或整理電腦系統的程式就稱為公用程式。
►公用程式的種類很多, 用途也很廣泛, 例如搶救
10
不小心刪除的檔案、快速備份硬碟、預防電腦病毒、壓縮檔案等。
►個人電腦上常見的公用程式有:Norton SystemWorks、WinZip 、Pccillin 防毒軟體…等。
公用程式公用程式公用程式公用程式
►有的作業系統本身也會提供一些磁碟、檔案的維護管理工具, 例如Windows 中的控制台、工作管理員、
11
工作管理員、清理磁碟、磁碟重組等工具。
程式開發工具程式開發工具程式開發工具程式開發工具
►語言是用來溝通的工具, 人類有人類的語言, 電腦也有電腦的語言。
►我們必須將要電腦做的事情, 以電腦了解的語言來表達, 電腦才能替我們完成工作。
12
►那麼和電腦溝通該說什麼呢?那就是程式語言程式語言程式語言程式語言(Programming Language)。
程式開發工具程式開發工具程式開發工具程式開發工具
►程式程式程式程式就是利用程式語言的敘述, 遵照其一定的規則及所要處理工作的順序, 編排而成的一連串命令。
►目前電腦的程式語言有相當多種, 如 Java 、
13
C 、C++ 、C# 、VB.Ne t 、PHP 、Perl 、組合語言、Pascal 、Fortran 、Python……。
程式開發工具程式開發工具程式開發工具程式開發工具
►開發程式的過程中所會用到的工具, 即稱為程程程程式開發工具式開發工具式開發工具式開發工具。
►一般而言, 程式開發者會先以文書編輯器文書編輯器文書編輯器文書編輯器 (Text Editor) 寫好程式碼之後。
14
►利用編譯器編譯器編譯器編譯器(Compiler) 將程式碼編譯成目的檔目的檔目的檔目的檔(Object Program)。
►再以連結器連結器連結器連結器 (Linker) 將其他相關的程式連結在一起, 成為可被執行的執行檔執行檔執行檔執行檔。
程式開發工具程式開發工具程式開發工具程式開發工具
►最後再透過載入器載入器載入器載入器(Loader) 載入到記憶體中執行執行執行執行:
15
程式開發工具程式開發工具程式開發工具程式開發工具
►開發程式時, 較大型的程式很少一次就完全成功的, 若在編譯或執行過程中發現錯誤, 則會利用除錯器除錯器除錯器除錯器 (Debugger) 偵錯。
►有些情況, 為了讓程式執行更有效率或想要自
16
行控制硬體, 則會使用組合語言組合語言組合語言組合語言 (Assembly) 撰寫程式碼, 寫好的程式碼就需要以組譯器組譯器組譯器組譯器(Assembler) 將程式碼編譯成執行檔。
程式開發工具程式開發工具程式開發工具程式開發工具
►有的還會有巨集處理器巨集處理器巨集處理器巨集處理器 (Macro Processor), 可以在撰寫程式時, 用指定的字串來取代多行程式碼, 以方便閱讀。
►接下來, 將介紹組譯器、巨集處理器、載入器、
17
連結器與編譯器。
程式開發工具程式開發工具程式開發工具程式開發工具
18
7-1-2 應用軟體應用軟體應用軟體應用軟體
►應用軟體是針對特定任務或功能所設計的程式。
►系統軟體只是賦予電腦硬體的靈魂, 必須藉由各種應用軟體的支援, 電腦才能充分展現它的效用, 應用於我們的日常生活、工作之中。
19
►應用軟體依使用者取得的方式, 可分為以下 2 類:
►套裝軟體套裝軟體套裝軟體套裝軟體
►自行開發的軟體自行開發的軟體自行開發的軟體自行開發的軟體
套裝軟體套裝軟體套裝軟體套裝軟體
►套裝軟體 (Package Software), 是指在市面上購買或直接從網路下載的現成軟體, 例如Office、Photoshop、Dreamweaver、PC-cillin …等。
20
►市面上大部分的應用軟體均屬套裝軟體。
自行開發的軟體自行開發的軟體自行開發的軟體自行開發的軟體
►自行開發的軟體(Tailor Software) 是指, 當套裝軟體無法符合某些需求時, 而特別量身打造的軟體。
►例如有些企業會委託軟體公司或自行開發符合
21
其需求的採購訂單管理系統、人事薪資管理系統…等。
►以下介紹一般個人電腦中常見的套裝軟體。
文書處理軟體文書處理軟體文書處理軟體文書處理軟體
►文書處理軟體可算是我們日常工作中最常用到的軟體。
►可協助我們製作各種文件, 如
22
編寫報告、製作海報、卡片等等。
►代表產品有:Mircrosoft Word 、Openoffice.org Writer 等。
試算表軟體試算表軟體試算表軟體試算表軟體
►試算表軟體是一種表格式的計算軟體, 適合用來編製各種報表。
►例如編製會計報表、排序、簡易統計、決策分析、繪製圖表…等, 特別適合商業的應用。
23
►Microsoft Excel 、Openoffice.org Calc、Lotus 1-2-3 都是相當著名的試算表軟體。
試算表軟體試算表軟體試算表軟體試算表軟體
24
簡報軟體簡報軟體簡報軟體簡報軟體
►簡報軟體是用來製作及播放投影片的程式。
►現在的簡報軟體都可結合圖片、影像、音效、電腦動畫、網路訊息…等各種類型的資料, 讓您能營造出聲光效果俱佳的多媒體簡報環境。
25
►目前較受歡迎的有:Mircrosoft PowerPoint 、Openoffice.org Impress 、Freelance 、Astound 等。
簡報軟體簡報軟體簡報軟體簡報軟體
26
資訊管理軟體資訊管理軟體資訊管理軟體資訊管理軟體
►資訊管理軟體就像是您的電子秘書一般。
►可以安排日常生活和工作進度, 您可以用它來取代名片匣、記事本、親友聯絡簿、約會備忘錄等。
27
►Microsoft Outlook 是這類軟體的代表。
[技術指南技術指南技術指南技術指南]整合式套裝軟體整合式套裝軟體整合式套裝軟體整合式套裝軟體
►有些軟體廠商將文書處理、試算表、簡報、資訊管理等多種軟體整合在一起, 以整套方式推出, 稱為整合式套裝軟體 (也有人稱為軟體套餐)。
28
►例如 Microsoft Office、Openoffice.org。
繪圖繪圖繪圖繪圖、、、、影像處理軟體影像處理軟體影像處理軟體影像處理軟體
►以電腦來繪圖或處理影像一直是很熱門的電腦應用。
►透過繪畫、影像處理軟體, 我們可以在電腦上製作工程圖、室內設計圖、美術圖片、影像處
29
理、影像合成、動畫、卡通等, 不但節省人工繪製時間, 還可增加藝術工作者更多創造的空間。
繪圖繪圖繪圖繪圖、、、、影像處理軟體影像處理軟體影像處理軟體影像處理軟體
►目前個人電腦上流行的繪圖、影像處理軟體有:
►3ds Max ►AutoCAD►CorelDraw
30
►CorelDraw►FreeHand► Illustrator►Photoshop►PhotoImpact 等。
多媒體軟體多媒體軟體多媒體軟體多媒體軟體
►多媒體時代的來臨, 使得多媒體產品也愈來愈受消費者的喜愛。
►電腦的多媒體軟體可分成兩類。
►一種是多媒體編輯軟體, 這類軟體可將各種文
31
►一種是多媒體編輯軟體, 這類軟體可將各種文字、圖片、聲音、影像整合在一起, 還可設計出互動式的操作環境, 依使用者的操作而有不同的情節或變化。
►目前流行的有:會聲會影、威力導演、MediaStudio Pro、Flash 等。
多媒體軟體多媒體軟體多媒體軟體多媒體軟體
►另一種則是多媒體播放軟體, 可用來播放DVD 、VCD 、音樂 CD 、MP3 、WAV 、MIDI……等各種影音檔。
►例如Windows Media Player 、RealPlayer 、
32
QuickTime 、PowerDVD 等皆是屬於此類。
通訊軟體通訊軟體通訊軟體通訊軟體
►如果電腦要與別台電腦互通訊息, 或是連上現在最熱門的網際網路(Internet) , 除了要加裝必要的硬體設備 (如網路卡、數據機) 外, 通訊軟體更是不可缺少的工具。
33
►通訊軟體又可分為多種類別, 例如網頁瀏覽軟體 (如 IE、Firefox)、即時傳訊軟體 (如 MSN Messenger 、Yahoo!奇摩即時通訊、Skype)、傳真軟體 (如WinFax) 等。
資料庫管理系統資料庫管理系統資料庫管理系統資料庫管理系統
►資料庫管理系統專門用來管理大量資料, 以讓使用者方便地存取與查詢。
►如一般企業的進銷存、薪資、成本等管理及會計處理工作, 都可靠資料庫系統來輕鬆完成。
34
►目前較著名的資料庫軟體有 Microsoft SQL Server 、MySQL 、Oracle 、Access 。
資料庫管理系統資料庫管理系統資料庫管理系統資料庫管理系統
35
其他應用軟體其他應用軟體其他應用軟體其他應用軟體
►其他應用軟體的種類還有很多, 例如桌上排版軟體 (如 PageMaker)、燒錄軟體 (如 Nero)、翻譯軟體 (如 Dr.eye)、遊戲軟體…等。
36
7-2 組譯器組譯器組譯器組譯器
►機器語言機器語言機器語言機器語言
►組合語言組合語言組合語言組合語言
►組譯器組譯器組譯器組譯器
37
機器語言機器語言機器語言機器語言
►對於電腦來說, 它真正所懂的語言只有一種, 就是機器語言。
►機器語言是由 0 與 1 數字所組成, 用來表示電腦所能進行的各個動作。
38
►我們稱這些數字為機器碼 (Machine Code) 或機器語言。
機器語言機器語言機器語言機器語言
►以下是實際的一段機器碼。
►我們可發現, 機器語言與人類的思考模式完全不同, 不僅閱讀上十分困難, 更別說是拿來發展程式了。
39
組合語言組合語言組合語言組合語言
►對人類來說, 要學習與使用機器語言是一件相當困難的事, 因此就有人想到了用一些文字符號來替代數字, 以方便人們辨識各個動作。
►這些使用文字符號替代機器碼撰寫程式的語言,
40
就稱為組合語言組合語言組合語言組合語言 (Assembly)。
組合語言組合語言組合語言組合語言
►下圖是一段用組合語言所撰寫的程式碼:
41
組譯器組譯器組譯器組譯器
►雖然以文字符號來取代機器碼, 使得人們更容易閱讀了, 但卻導致電腦看不懂, 以致無法直接交由 CPU 執行。►因此必須透過一個翻譯的動作, 將這個用組合語
,
42
言寫成的程式碼轉換成電腦看得懂的形式, 負責這個翻譯動作的就是組譯器組譯器組譯器組譯器 (Assembler)。
組譯器組譯器組譯器組譯器
►經過組譯器轉成的檔案稱之為目的檔, 接著還需連結器與載入器, 才能載入到記憶體中執行。
►不管是機器語言或組合語言都有個缺點, 就是每種電腦的 CPU 其機器語言並不相同。
43
►例如一般個人電腦使用的 Pentium 處理器, 其機器語言就和昇陽工作站所用的 UltraSPARC 處理器不同。
7-3 連結器與載入器連結器與載入器連結器與載入器連結器與載入器
► 7-3-1 連結器連結器連結器連結器
► 7-3-2 載入器載入器載入器載入器
► 7-3-3 重新定址重新定址重新定址重新定址
44
7-3-1 連結器連結器連結器連結器
► 經組譯器轉成的目的檔, 本來是可以執行的, 但是為了保持彈性, 目的檔有許多地方並未翻譯成機器碼, 其原因有二:
1. 程式可能會呼叫到其他的程式 (External Reference) , ,
45
Reference) , 但組譯器只處理程式本身而已, 因此對於程式中呼叫到其他程式的部份並無法處理。
7-3-1 連結器連結器連結器連結器
2. 現今的作業系統, 大多可在同時間執行多個程式, 因此同時間執行的程式可能被載入到不同的位址執行, 所以程式的機器碼必須是可重新定址的(Relocatable), 亦即可以在不同的載入位址上執行。這也是組譯器無法做到的。
46
位址上執行。這也是組譯器無法做到的。
7-3-1 連結器連結器連結器連結器
► 連結器連結器連結器連結器 (Linker) 就是用來將相互呼叫的各程式目的檔連結 (Linking) 在一起, 產生可重新定址的機器碼檔案。
47
7-3-2 載入器載入器載入器載入器
► 載入器載入器載入器載入器 (Loader) 負責將程式的機器碼檔案載入到記憶體中執行。
► 主要的功能有以下 3 項:1. 要求記憶體空間要求記憶體空間要求記憶體空間要求記憶體空間
48
1. 要求記憶體空間要求記憶體空間要求記憶體空間要求記憶體空間
2. 重新定址重新定址重新定址重新定址
3. 載入到記憶體載入到記憶體載入到記憶體載入到記憶體
載入器的功能載入器的功能載入器的功能載入器的功能
1. 要求記憶體空間要求記憶體空間要求記憶體空間要求記憶體空間
► 程式未執行前, 它是儲存在磁碟空間裡。當程式要被執行時, 需要分配到一塊記憶體空間, 然後才能載入、執行。
► 要執行程式時,載入器會向作業系統發出要求
49
► 要執行程式時,載入器會向作業系統發出要求(Request) 配置一段足夠的記憶體空間。
► 當作業系統有可用的空間時, 就會回覆載入器所分配空間的起始位址。
載入器的功能載入器的功能載入器的功能載入器的功能
2. 重新定址重新定址重新定址重新定址
► 當作業系統回報分配到的起始位址後, 載入器接著就會調整機器碼中有關位址的地方, 讓程式將來可以正確地被執行。
50
載入器的功能載入器的功能載入器的功能載入器的功能
3. 載入到記憶體載入到記憶體載入到記憶體載入到記憶體
► 將已調整好的機器碼載入到記憶體中, 等待作業系統執行。
51
7-3-3 重新定址重新定址重新定址重新定址
►現今的系統大多已屬於多工的作業系統, 作業系統同時間會在記憶體載入多個程式, 並依照一定的規則執行這些程式。
►這樣的方式會衍生出一個問題, 程式被載入到
52
記憶體時, 其被載入的起始位址是不固定的。
7-3-3 重新定址重新定址重新定址重新定址
►以下的程式碼片段中, “jmp” 是跳躍指令, 當程式執行到此指令時, 會跳到所指定的地方繼續執行。
►以此程式碼而言, 就是跳到標示 “there:” 的地
53
方, 繼續執行 “mov ah,09” 指令。►這段程式碼當被載入到不同的起始位址時,
"jmp there "指令的機器碼就需『重新定址』。
程式被載入到程式被載入到程式被載入到程式被載入到 0000 起始位址的情形起始位址的情形起始位址的情形起始位址的情形
►當此程式被載入到記憶體執行時, 若其被載入到0000 的起始位址, 則其在記憶體的狀況可能如下圖所示。
► jmp 指令的機器碼為 E9, 而 there 所在的位址相較於程式開始之處是在 0160, 因此 "jmp there" 指
54
較於程式開始之處是在 0160, 因此 "jmp there" 指令的機器碼就會變成 E90160。
程式被載入到程式被載入到程式被載入到程式被載入到 0000 起始位址的情形起始位址的情形起始位址的情形起始位址的情形
55
程式被載入到程式被載入到程式被載入到程式被載入到 1000 起始位址的情形起始位址的情形起始位址的情形起始位址的情形
►但如果此程式在載入記憶體時, 不是被載入到0000 位址, 而是被載入到 1000 的起始位址。
►此時由於"there:" 所在的位址已經改變成1160, 因此 "jmpthere" 指令的機器碼就不能再
56
是 "E90160", 而需要重新定址成 "E91160":
程式被載入到程式被載入到程式被載入到程式被載入到 1000 起始位址的情形起始位址的情形起始位址的情形起始位址的情形
57
程式被載入到程式被載入到程式被載入到程式被載入到 1000 起始位址的情形起始位址的情形起始位址的情形起始位址的情形
►依程式實際載入時起始位址的不同, 而調整機器碼中有關位址欄位的動作, 即稱為重新定址重新定址重新定址重新定址。
58
程式被載入到程式被載入到程式被載入到程式被載入到 8700 起始位址的情形起始位址的情形起始位址的情形起始位址的情形
►如果此程式在執行時, 是被載入到 8700 的起始位址, 則其機器碼會變成以下情形。
►"jmp there" 指令的機器碼被重新定址為"E98860"。
59
[技術指南技術指南技術指南技術指南]為什麼沒有看過載入器為什麼沒有看過載入器為什麼沒有看過載入器為什麼沒有看過載入器????
►如果曾開發過程式, 就會發現在程式開發過程中, 本章所介紹的編輯器、組譯器、編譯器、連結器…都可見到它的蹤跡, 但唯獨載入器沒看過。
60
►這是因為在目前的作業系統中, 載入程式的功能幾乎都是由作業系統包辦。
►使用者並不需要特別執行載入器才能執行程式, 因此就不會感覺到它的存在囉!
7-4 巨集處理器巨集處理器巨集處理器巨集處理器
►何謂巨集何謂巨集何謂巨集何謂巨集
►當我們在寫程式時, 經常會需要寫出重複的程式片段。
►因此在有些程式語言中, 可以將這種片段寫成
61
巨集巨集巨集巨集 (Macro) 的形式。►每次需要時便可加以呼叫使用, 以減少重複寫同一段程式的麻煩, 也可以減少程式的長度。
►使用巨集後, 整個程式看起來會比較容易瞭解, 維護上也較方便。
何謂巨集何謂巨集何謂巨集何謂巨集
►以 Intel x86 CPU 的組合語言而言, 巨集的格式如下:
62
何謂巨集何謂巨集何謂巨集何謂巨集
►以下就是一段實際的巨集定義:
63
何謂巨集何謂巨集何謂巨集何謂巨集
►當定義好巨集後, 寫程式時, 就可以在程式中使用巨集了。
►以下就是使用巨集的程式範例片段:
64
巨集處理器巨集處理器巨集處理器巨集處理器
►但使用了巨集之後, 組譯器或編譯器並無法處理巨集。
►於是在組譯器或編譯器進行轉譯時, 會先呼叫巨集處理器巨集處理器巨集處理器巨集處理器 (Macro Processor)。
65
►巨集處理器的功能在於將程式中出現巨集的地方, 以巨集定義的內容取代。
巨集處理器巨集處理器巨集處理器巨集處理器
►例如前一段的程式在經過巨集處理器處理後, PUTCHAR 會被替換成以下的樣子。
►很明顯地可以看出, 在程式中使用巨集PUTCHAR, 的確比原來的 mov ah,02h、 int
66
21h 這樣的指令容易閱讀也方便多了。
7-5 編譯器編譯器編譯器編譯器
►高階語言高階語言高階語言高階語言
►編譯器編譯器編譯器編譯器
►編譯器的主要功能編譯器的主要功能編譯器的主要功能編譯器的主要功能
67
高階語言高階語言高階語言高階語言
►不論是機器語言或組合語言, 對於程式的描述都是以電腦所能進行的最基本動作為步驟, 因此這兩種語言被稱為低階語言低階語言低階語言低階語言 (Low-Level Language)。
68
►然而組合語言程式碼, 對絕大多數的人來說, 依舊很難以瞭解, 更別說用來開發程式了:
高階語言高階語言高階語言高階語言
►為了解決這樣的問題, 因此就有人設計新的語言, 用比較接近人類思考的方式來撰寫程式。►這種新的程式語言稱為高階語言高階語言高階語言高階語言 (High-Level
Language)。。。。
69
►從第一個廣被使用的 Fortran, 至今曾流行過的還有 C、Pascal 、Java、C++等等。
高階語言高階語言高階語言高階語言
►以下即是一段 C 語言的程式碼, 相較而言, 是不是簡單多了呢!
70
編譯器編譯器編譯器編譯器
►使用高階語言來撰寫程式碼, 不但更容易閱讀和理解, 也比用低階語言所寫出來的程式碼精簡多了。
►不過電腦並無法看懂這樣的程式碼, 和組合語
71
言一樣需要一個轉譯的動作, 將使用高階語言所撰寫的程式碼轉換成電腦所能看懂的機器語言, 然後才能執行。
►這個轉換的動作是由各個程式語言的編譯器編譯器編譯器編譯器(Compiler) 或是直譯器直譯器直譯器直譯器 (Interpreter) 進行。
編譯器編譯器編譯器編譯器
►下圖是編譯器轉譯程式碼的流程。
72
編譯器的主要功能編譯器的主要功能編譯器的主要功能編譯器的主要功能
►相較於組合語言, 高階語言是比較接近人類思考的語言。
►如同我們一般所使用的語言 (如英文、日文……) 都有特定的文法 (Grammar) 來規範文
73
字的使用規則。
►高階語言也有其規範的文法, 稱之為語法語法語法語法(Syntax)。
編譯器的主要功能編譯器的主要功能編譯器的主要功能編譯器的主要功能
► 程式設計師在開發程式時, 所撰寫的程式碼都要符合該語言的語法, 編譯器才能依照語法規則來解讀程式, 然後產生對應的目的碼。
► 編譯器包含了掃描器、剖析器、目的碼產生器等 3 種主要的功能。
74
器等 3 種主要的功能。► 在轉譯程式的過程中, 主要進行以下的動作:
1. 掃描掃描掃描掃描2. 剖析剖析剖析剖析3. 產生目的碼產生目的碼產生目的碼產生目的碼
1. 掃描掃描掃描掃描
►任何程式碼基本上都是由關鍵字、常數、變數、運算子、標點符號……所組合而成。
►掃描器掃描器掃描器掃描器(Scanner) 的主要功能就是掃描全部的程式碼, 將關鍵字、常數、變數、運算子、標
75
點符號……給辨識出來。►這個動作也稱為詞彙分析詞彙分析詞彙分析詞彙分析 (Lexical Analysis)。
2. 剖析剖析剖析剖析
►辨識出關鍵字、常數、變數……之後, 接著會由剖析器剖析器剖析器剖析器 (Parser) 依照該程式語言的語法, 剖析程式的每個敘述是否符合語法結構, 如宣告敘述、運算敘述、條件判斷敘述、迴圈控制敘述……。
76
述……。►不過, 要請讀者留意的是, 剖析器只能分析敘述是否符合語法結構, 並不能發掘語意(Semantics) 上的問題。
►更清楚地說, 語法語法語法語法指的是程式的文法格式, 而語語語語意意意意則為程式的實質意義。
2. 剖析剖析剖析剖析
►例如某位程式設計師要計算 a 與 b 兩個數值的和, 並將結果儲存到 c, 於是在程式裡撰寫了下面這一行:
c = a + b
77
►如果在撰寫程式時, 不小心多寫了一個 "=" 號(如同我們寫了一句不符合文法的英文句子), 由於這是屬於語法上的問題, 剖析器就可檢查出這類的錯誤:
c == a + b
2. 剖析剖析剖析剖析
►但如果發生的錯誤是把 "b" 誤植為 "d", 這種就屬於語意上的問題, 剖析器並無法找出這類錯誤:
c = a + d
78
3. 產生目的碼產生目的碼產生目的碼產生目的碼
►經由剖析後, 已經能瞭解程式碼中每個敘述的目的, 最後就由目的碼產生器目的碼產生器目的碼產生器目的碼產生器 (Code Generator) 產生目的碼。
79
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具►首先, 我們先複習一下本章所介紹的程式開發流程:
80
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具►在這個過程中, 我們可看出開發程式時, 需要經過好幾個步驟才能完成:
►先在文書編輯器寫好程式碼
►利用組譯器或編譯器編譯程式
81
利用組譯器或編譯器編譯程式
►再透過連結器產生可執行檔
►而在過程中, 若發生錯誤, 則可用除錯器偵錯, 並接著在文書編輯器中修正程式碼
►然後不斷重複上述動作, 直到產生的執行檔正確無誤為止
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具►像這樣程式開發的流程, 在比較傳統的系統中仍可看到。
►例如在 Linux 作業系統中, 開發程式時, 就常用到以下的工具, 分別負責各自的功能:
82
►文書編輯器:vi►編譯器:gcc►組譯器:as►連結器:ld►除錯器:gdb
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具►在程式開發過程中, 程式設計師需要來回切換編輯器、編譯器、連結器、除錯器好幾次, 無論是手續或時間上都相當費力費時。
►因此就有人發展出所謂的整合開發環境整合開發環境整合開發環境整合開發環境 (IDE,
83
Intergrated Development Environment), 其將編輯、編譯、連結、除錯的功能整合在一起, 程式設計師不用再個別執行編輯器、編譯器……, 使得開發程式更為方便。
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具►在個人電腦歷史中, 早期最有名的整合開發環境屬 Borland 公司的 Turbo C 整合開發環境。
►Turbo C 用來開發 C 語言程式, 只能在 DOS 環境執行, 其包含了編輯器、編譯器、除錯
84
器……等功能, 是早期常使用的程式開發工具:
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具
85
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具►隨著技術不斷進步, 整合開發環境功能也日新月異。
►近期推出的整合開發環境不僅操作介面越來越友善, 還常包含線上使用手冊、資源編輯器、
86
專案管理、圖形介面設計、眾多函式庫……等功能, 使程式開發的過程更為輕鬆、方便!
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具
87
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具►此外, 目前軟體的複雜度與日遽增, 加上物件導向技術的發展逐漸成熟, 所以軟體開發已經不像從前一樣, 整個軟體完全由一個人或一個團隊撰寫。
88
►而是類似硬體 IC, 運用現有的軟體元件與框架(framework) 開發出所需的功能。
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具►在軟體元件與框架下, 整合開發環境不再侷限於傳統的整合工具, 而是開始提供了 RAD(Rapid Application Development, 快速應用程式開發) 功能。
89
►其自動產生需要的程式碼, 並且處理相關細節, 讓程式設計者可以專注於程式邏輯。
►RAD 工具通常具備了視覺化開發的功能, 程式設計者只要使用滑鼠拉曳, 就可以產生或設定各種程式元件:
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具
90
[特別企劃特別企劃特別企劃特別企劃]程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢程式開發工具的趨勢----整合開發環境與整合開發環境與整合開發環境與整合開發環境與RAD 工具工具工具工具►在 RAD 工具的協助下, 程式設計者能夠『組裝』出軟體的大致結構。
►然後只要調整各元件的屬性, 再撰寫相關的程式碼, 就可以快速完成軟體的製作, 減少開發的
91
時間。