Software Development 軟件開發

Software Development 軟件開發

計算機程序

簡介

計算機程序是一套指令集,用於管理計算機來執行一些功能操作。對於要執行的指令,計算機必須要通過執行一個程序來獲得,也就是說,計算機先讀取該程序,然後按照程序中明確的指令順序逐步執行,直到完成。一個程序可以依據用戶的交互被計算機執行很多次。

程序可以分成兩種主要的類型:應用程序和操作系統。應用程序是一種可以直接爲用戶操作的程序,比如字處理軟件或者電子遊戲軟件。而操作系統是一種管理計算機以及連接到計算機的各種資源和設備的程序,這些資源設備可以是RAM、各種硬件、顯示器、鍵盤、打印機和Modems。由於操作系統的管理,所有這些設備纔可以被其他程序使用。

 

程序開發

軟件設計人員通過工具軟件或者開發軟件來構建一個新的應用程序而程序員使用文本編輯器和特點的編程語言來開發一個新的程序。使用文本編輯器,程序員可以創建源文件來組織有序的指令序列,這些指令在程序中被稱爲源代碼。然後需要一種特殊的應用程序來把這些源代碼翻譯成機器語言或者目標代碼(一種操作系統能夠識別和執行的格式)。

把源程序翻譯成目標代碼時,有三種類型的應用程序來完成:編譯器、解釋器、彙編器。這三種操作互不相同而且作用在不同的語言上,但是他們共同的目標是把程序最終翻譯爲機器語言。

 

編譯器把用高級語言編寫的文本源代碼同時翻譯成目標代碼,這個與解釋執行的語言有所不同,如BASIC,該語言是逐句翻譯逐句執行的。     解釋性語言的優點是他們可以立即執行而不用等到所有的代碼都被編譯完成,修改代碼後也能夠很快就可以得到執行而不用等到再次編譯。解釋性語言的缺點則是執行速度要慢點,因爲全部的程序代碼都需要逐句翻譯逐句執行,換言之,編譯性語言則是一次性編譯所有的代碼,因此計算機可以快速執行。正因爲這個原因,編譯性語言在專業和科學應用中是最普遍和最常用的語言。

 

另一種翻譯器是彙編程序,它用於處理程序中用匯編語言編寫的部分。彙編語言也是一種編程語言,但是它比其他高級語言更接近機器語言,在彙編語言中,一條單一的語句通常被翻譯成一條單一的機器指令。如今,彙編語言很少用在程序中,但是也會應用在直接控制計算機一些特殊的功能上。

 

在程序中,常常會編寫模塊來表示整個應用的一些功能,模塊可以獨立編譯,程序可以通過鏈接器來聯接所有的模塊並生成一個可執行程序。

程序幾乎很少在第一次能夠正常運行,於是通過軟件調試程序來查找程序錯誤。調試程序時常常是在可執行程序中檢測事件,然後在程序源碼中定位到錯誤發生的起源。

在現代的編程體系中,如Java,採用聯合的方式來創建可執行的程序,編譯器把Java源程序翻譯成可立即執行的形式,中間件程序可以通過Internet傳送到計算機中並被執行。

 

程序單元

大多數程序都由幾種步驟來實現,在不同的上下文環境裏和程序中不同的組合中,這些步驟都是可重複的。在程序員指定的順序中,最常見的是執行計算然後處理下一步。程序常常需要多次重複一系列的步驟,比如瀏覽得分列表然後查找最高分數,程序中重複的代碼序列被稱爲循環。

計算機的一個很有用的功能是待處理的數據生成條件選擇然後執行不同的指令操作。If-then-else語句就實現了這種功能,它根據一些數據的測試結果,然後選擇兩個指令中的一個來執行,一些可選的指令如goto語句可以直接跳轉到需要執行的地方。例如,程序可能比較兩個數然後根據比較的結果出現不同的分支語句中。

程序時常多次使用特定的指令步驟,這些步驟可以組織爲一個子例程,程序中的各個部分都可調用和訪問他們。當調用子例程時,計算機會記住它的位置,以便處理返回操作。

在執行每次調用之前,程序會指定子例程所用的數據,並允許使用多種方式來處理該操作。

大多數程序都會使用多個子例程,最常用的是子例程包括函數、過程、庫程序、系統程序以及設備驅動程序等。函數是最短的子例程,它可以用於一些值運算,比如角度計算。過程執行的功能要複雜點,比如姓名排序。庫程序是由不同程序編寫來便於使用的子例程,系統程序與庫程序類似,但只能在操作系統中去查找。這些子例程爲應用程序提供各種服務,比如輸出一行文本。設備驅動是添加到操作系統中的系統程序,他們用於控制計算機與外部設備(掃描儀、打印機)之間的通信和交互。除此之外,驅動還擁有計算機可直接執行的功能,這些功能允許用戶直接控制設備,這種功能非常有用,比如當更換墨盒時,可重新調整彩色打印機來獲得最好的打印質量。

 

程序功能

現代計算機通常都使用磁性媒介來存儲和讀取程序,比如硬盤或可移動軟盤。磁盤中有很多被稱爲目錄的附加信息,這些信息表示磁盤上程序的名稱。當用戶要執行某個程序時,操作系統會瀏覽目錄然後找到該程序,然後讀取到RAM中,接着通知CPU來啓動該程序。開始執行時,計算機先在內存中找到可用的存儲單元,然後讀取用戶指定的默認值,最後通過顯示器來初始化界面。

 

程序會通過執行一次系統調用來獲取用戶輸入的信息副本,操作系統會把該數據轉換爲一種標準的內部形式,然後程序會根據該信息來決定下一步執行什麼。例如執行重新格式化頁面文字或者獲取磁盤上另一個文件的信息。一般情況下,調用系統子例程常常用於執行結果顯示或文件讀取。

當程序執行結束或者提示退出時,它會執行進一步的系統調用來確保數據能夠保存到磁盤上,然後執行最後一次系統調用來通知操作系統,表示它已退出,操作系統然後會回收RAM,釋放其他設備。

 

未來趨勢

計算機科學領域自上個世紀50年代開始便已快速的在發展,在此間,計算機程序也經歷了很多改變。在計算方向出現了很多新思想,諸如並行計算、分佈式計算還有人工智能,他們快速的改變着傳統的程序概念。

在並行計算(多個CPU同時協同處理同一個問題)領域裏,科學家已引進了很多新的程序模型。在並行計算中,一個問題是同時由多個不同的處理器來處理,這種方式可快速解決問題。科學家和工程師面臨着許多挑戰,因爲這是一項極其複雜的系統,在操作效率上面臨許多困難。

分佈式計算使用許多互連的計算機的CPU來解決問題,在分佈式計算的應用中,計算機都是可聯網的,互聯網應用變得非常有用。在這樣的應用中,用戶登入Web站點,然後下載一個Java應用,當運行該程序時,它就可與其他程序進行通信,即使是在不同的計算機或站點中。

在人工智能方向的研究已催生了很多新式程序的出現。比如邏輯程序,不包含任何獨立的指令,只有一套規則:如果發生X,則執行Y。有一種特殊的程序叫推理機就採用這種規則來推理結果。邏輯程序中的應用包括由複雜系統的自動監視功能,數學理論的證明功能。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章