開發相關的幾個概念

来源:https://www.cnblogs.com/dnn179/archive/2019/05/10/10845493.html
-Advertisement-
Play Games

電腦程式中涉及到的概念都比較抽象、專業。經常有初學者程式的人反應說,“別人說的什麼名詞性的東西,根本不明白是什麼意思”。的確,掌握一些開發相關的概念,與別人溝通起來非常的方便。對於初學者經常問的問題,做了個總結,希望給大家帶來幫助。 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進位的表現形式。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • html語法: 1.常規標記: <標記 屬性=“屬性值” 屬性=“屬性值”></標記>; 2.空標記: <標記 屬性=“屬性值” 屬性=“屬性值”/> 註意事項: = 和 “”都是必須加的,同時兩個屬性之間用空格 隔開; html常用標簽: 1.文本標題: h1 h2 h3 h4 h5 h6 ; 2 ...
  • 以下麵試題出自自己去各個公司面試遇到的,不乏各個大廠: 瀑布流 vuex幾個常用屬性 vue通過哪個js原聲方法實現數據監聽的 圖片截取上傳 懶載入和預載入 防抖動截流 flex幾個屬性背一下 手機端app優化 手機端調用相機webview 微信小程式 公眾號 js原生實現懶載入 Vue裡面,只要t ...
  • 小編整理javascript用的是有道雲筆記,導出的word版本,但是代碼塊顯示格式是亂的,不便於閱讀 所以,各位有需要的話,小編可以將導出的pdf版發給大家!pdf版跟word沒有什麼區別,知識沒法編輯而已! JavaScript 第一章 js介紹 js是和html混合使用的一種腳本語言,其編寫的 ...
  • 1 2 3 function fn(e) { 4 //---^--以什麼開頭----- 5 //---¥--以什麼結尾---- 6 //----{n}--連續有n個前面的檢測----- 7 var preg = /^1[3456789][0-9]{9}$/ ... ...
  • 已經學過無數次,但是每次都忘記,畢竟腦容量太小了,每次都需要翻看原來項目和視頻再次學習,所以以此文字形式記錄下來,方便於下次使用觀看 1、打開git,找到創建vue的文件夾(已經安裝好git的,然後在存儲項目的文件夾下滑鼠右鍵,有個git bash here) 2、命令 vue init webpa ...
  • 後臺方法的參數必須是@RequestBody修飾的。 前臺關鍵代碼: ...
  • [註]: popstate 事件 a.當活動歷史記錄條目更改時,將觸發popstate事件。 b.如果被激活的歷史記錄條目是通過對history.pushState()的調用創建的,或者受到對history.replaceState()的調用的影響,popstate事件的state屬性包含歷史條目的 ...
  • classdef SingletonClass < handle methods(Access = private) function obj = SingletonClass() disp('SingletonClass construtor called!'); end end methods(... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...