我覺得編程本質上來源于生活,編程相關的一些知識和經驗如果深入分析一下,會發現多數可能就是對生活現象的抽象再抽象,剛開始接觸編程的時候,我還沒有這種感覺,后來經過幾年的學習和體驗,我漸漸對編程有了一點自己的理解,
? 既然提到編程,如果只是空洞的談可能會有些模糊,既不方便理解也不方便敘述,那就拿我比較熟悉的一門語言開始切入吧,Java,提到Java就不得不提到面向物件,面向物件可以說是面向程序的升級版或者說是擴展版,只要是寫程式就離不開順序、分支(選擇)和回圈,本質上講兩種思想的底層都是依靠這三個詞而堆積起來的一行行代碼,但是往深了考慮兩種思想有不同的特點,
? 關于面向物件和面向程序,我舉一個簡單的例子,比如你想吃魚香肉絲這道菜,那么你可能需要先去買食材,買完食材要進行初步加工,之后經過一個個工序才可以吃到這道菜,那么這個方式就可以理解為面向程序,我們都知道生活里還有另一種方式,你可以不自己做而直接去飯店點菜,你只需要報一個菜名就可以吃到你想吃的菜,這個方式就類似面向物件,
? 從生活和編程的關系來看,編程之所以能快速發展而且由它帶來的東西能出現在生活的方方面面并很好的為我們服務,我的理解是因為它本就是和生活為一體,從面向程序到面向物件,(再次用一下那個例子)為了更快更好的解決吃到某道菜的問題才出現了飯店,那么飯店或者說飯店里的每一道菜就可以理解為不同的物件,從生活角度來看,面向物件的思想可能更具有普適性,它的功能是大還是小這是根據實際情況和實際效果來評判的,而且它也是因為要解決生活里的問題才出現的,其實生活里依然有一些場景是需要面向程序的,比如一些機器里的嵌入式程式等等,我們再來看一下這個例子,飯店里的菜從顧客的角度看是面向物件,因為顧客只需要說菜名就可以了,但是對于廚師來說每一道菜又同時是面向程序的,因為廚師同樣的要完成買食材,清理食材等等一系列步驟才能做好這道菜,編程是用來解決問題的,不論是編程思想還是編程語言、不管是層出不窮的框架還是一個個新的技術,它們都是從生活場景中來,到生活場景中去,
? 面向程序是一種以”程序“為中心的編程思想,它首先分析出解決問題所需要的步驟,然后用函式把這些步驟一步一步實作,在使用時依次呼叫,是一種基礎的順序的思維方式,面向物件是一種以“物件”為中心的編程思想,把要解決的問題分解成各個物件,建立物件的目的不是為了完成一個步驟,而是為了描敘某個物件在整個解決問題的步驟中的屬性和行為,
? 面向程序關注每個步驟之間的先后關系,面向物件則是把類似的相近的關聯性強的一些步驟進行抽象聚合,使其成為一個個物件,然后去考慮物件和物件之間的關聯,這樣的思維更適合解決更大更復雜的問題,也更容易實作‘’’高內聚低耦合“的軟體設計目標,這一特點讓面向物件在實際應用中有了更強的適應性,在增加新的功能的時候,可以在原有的基礎上進行擴展而不用去改變原有的內部的細節,這對迭代開發是非常友好的,面向物件最關鍵的思想就是抽象,物件或者說類都是抽象的產物,通過抽象可以讓關聯關系很輕松的結合也可以很輕松的解開,新增和洗掉關聯關系也就變的相對簡單,
? 還有我們熟知的軟體設計模式,比如代理模式、外觀模式、配接器模式等等都可以在生活中找到對應的場景,其實本質上來說,這些設計模式就是從生活里的某些場景中抽象而來,它們的存在就是為了更好地解決現實生活存在的問題,所以我覺得編程其實是很樸素的,它本身就和生活密不可分,而由它產生的一系列產品也對我們的生活影響巨大,
好看請贊,養成習慣 :) 本文來自博客園,作者:靠譜楊, 轉載請注明原文鏈接:https://www.cnblogs.com/rainbow-1/p/16564399.html
關于筆者:http://reliableyang.cn/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/501286.html
標籤:其他
