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