電腦程式中涉及到的概念都比較抽象、專業。經常有初學者程式的人反應說,“別人說的什麼名詞性的東西,根本不明白是什麼意思”。的確,掌握一些開發相關的概念,與別人溝通起來非常的方便。對於初學者經常問的問題,做了個總結,希望給大家帶來幫助。 Q:經常聽到有人說,電腦語言可以歸為面向過程語言和麵向對象語言 ...
電腦程式中涉及到的概念都比較抽象、專業。經常有初學者程式的人反應說,“別人說的什麼名詞性的東西,根本不明白是什麼意思”。的確,掌握一些開發相關的概念,與別人溝通起來非常的方便。對於初學者經常問的問題,做了個總結,希望給大家帶來幫助。
Q:經常聽到有人說,電腦語言可以歸為面向過程語言和麵向對象語言,那麼到底什麼是面向對象,什麼是面向過程呢?
A:面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了;面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
可以拿生活中的實例來理解面向過程與面向對象,例如五子棋,面向過程的設計思路就是首先分析問題的步驟:1、開始游戲,2、黑子先走,3、繪製畫面,4、判斷輸贏,5、輪到白子,6、繪製畫面,7、判斷輸贏,8、返回步驟2,9、輸出最後結果。把上面每個步驟用分別的函數來實現。可以將面向過程中實現的五子棋,用下麵的流程圖表示。
如果是面向對象的設計思想來解決問題。面向對象的設計則是從另外的思路來解決問題。整個五子棋可以分為1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統,負責繪製畫面,3、規則系統,負責判定諸如犯規、輸贏等。第一類對象(玩家對象)負責接受用戶輸入,並告知第二類對象(棋盤對象)棋子佈局的變化,棋盤對象接收到了棋子的變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規則系統)來對棋局進行判定。
可以明顯地看出,面向對象是以功能來劃分問題,而不是步驟。同樣是繪製棋局,這樣的行為在面向過程的設計中分散在了多個步驟中,很可能出現不同的繪製版本,因為通常設計人員會考慮到實際情況進行各種各樣的簡化。而面向對象的設計中,繪圖只可能在棋盤對象中出現,從而保證了繪圖的統一。
Q:經常聽程式員說程式設計中演算法很重要,但是到底演算法是什麼呢?
A:演算法是電腦科學的核心內容之一。為解決某一個問題而採取的步驟和方法的描述。在程式設計中的演算法是指對電腦工作步驟和方法的描述。演算法的每一個步驟都是嚴格規定好的,能夠被電腦識別並正確執行,並且每一個步驟都能夠被電腦理解為一個或一組唯一的動作,而不使電腦產生歧義。演算法必須有開始和結束,並且必須保證演算法規定的每一個步驟最終都能夠被完成。
可以通過一個例子來說明演算法。例如,要交換變數a與變數b的值,電腦本身不能夠直接執行這個操作,交換兩個變數的傳統的方法就是借用第三方變數作中間量。具體演算法描述如下。
(1)將變數a的內容賦值給中間變數c。
(2)將變數b的內容賦值給變數a。
(3)將中間變數c存放的內容賦值給變數b。
最終演算法可以寫成:
(1)c ← a。
(2)a ← b。
(3)b ← c。
演算法,實際上就是用自然語言或其他方式描述的一個電腦程式,編寫電腦程式也就是把用某種方式描述的演算法,通過程式設計語言重新對其進行描述。
Q:在很多電腦語言圖書的前半部分的都談到一個名詞“SDK”,但是SDK到底是一個什麼東西呢?
A:SDK 就是 Software Development Kit 的縮寫,中文意思就是“軟體開發工具包”。這是一個覆蓋面相當廣泛的名詞,可以這麼說:輔助開發某一類軟體的相關文檔、範例和工具的集合都可以叫做“SDK”。例如在開發Java語言之前,需要安裝開發環境,也就是由Sun公司推出的軟體開發工具包SDK(也可以稱之為JDK)。
Q:程式是由演算法、數據結構等部分內容構成,從錶面看來,數據結構肯定和數據有關係,但是應該怎麼正確的理解什麼是數據、和數據結構呢?
A:數據很好理解,例如我們去買東西,共花了50元錢,這個50就是一個準確的數據。數據被定義為信息的載體。在電腦領域中,數據包括整數、實數、字元串、圖像和聲音等。
數據結構是指數據之間的相互關係。數據結構可以包括以下三方面內容,分別為數據元素之間的邏輯關係,也稱數據的邏輯結構(Logical Structure)、數據元素及其關係在電腦存儲器內的表示,稱為數據的存儲結構(Storage Structure)元素及其關係在電腦存儲器內的表示,稱為數據的存儲結構(Storage Structure)、數據的運算,即對數據施加的操作。
數據的邏輯結構是從邏輯關係上描述數據,與數據的存儲無關,是獨立於電腦的。數據的邏輯結構可以看作是從具體問題抽象出來的數學模型。數據的存儲結構是邏輯結構用電腦語言的實現,它依賴於電腦語言。對機器語言而言,存儲結構是具體的。一般,只在高級語言的層次上討論存儲結構。數據的運算定義在數據的邏輯結構上,每種邏輯結構都有一個運算的集合。最常用的查詢、插入、刪除、更新、排序等運算實際上只是在抽象的數據上所施加的一系列抽象的操作。
下麵通過一個表來增加大家對數據結構的認識,下圖給出了各數據元素指出數據元素、數據項等概念。
Q:什麼是編譯程式?
A:編譯程式也叫編譯系統,是把用高級語言編寫的面向過程的源程式翻譯成目標程式的語言處理程式。
編譯程式把一個源程式翻譯成目標程式的工作過程分為五個階段:詞法分析、語法分析、間代碼生成、代碼優化、目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程式分析,分析過程中發現有語法錯誤,給出提示信息。簡單的說,編譯程式就是把高級語言變成電腦可以識別的2進位語言,電腦只認識1和零,編譯程式把人們熟悉的語言換成2進位的表現形式。