除了電路仍是電路編程
計算機就是一堆邏輯電路編程語言
他並不知道你到底想要幹什麼,他也不會理解什麼是文件,什麼是進程spa
通電的瞬間,就好像你打開開關,燈泡發光同樣操作系統
全部的一切都是經過通電來啓動的 start the world翻譯
計算機某些部件,具體到好比某個門電路,有電流經過設計
這個電流就是0或者1 進而會觸發一系列內置的電路致使更大的模塊進行電路的通斷對象
他不知道你到底要幹什麼接口
只要電源不斷開,那麼就會有心跳,有心跳就會持續的讀取指令進程
指令也不過就是一塊固定格式的電路鏈接(或者是讀取ROM)資源
將一堆輸入線路的電壓轉換成另外一種形式的輸出
輸出有可能鏈接着其餘的電路模塊的輸入
因此他會永遠的運行下去
只是剛好有了二進制數學,二進制數學又與邏輯創建起來數理邏輯
數理邏輯又跟邏輯電路是相通的
那麼咱們就能夠理解爲這堆邏輯電路能夠表明着咱們想要實現的二進制計算
其實電路仍舊是電路
試想一個問題
你可能會想到,軟件是用高級語言編寫的,高級語言被翻譯成彙編語言,彙編語言會翻譯成機器能夠是別的機器語言
這樣計算機就能夠執行了
可是究竟是如何控制的?
之因此說軟件控制硬件
是否是由於計算機程序做爲計算機硬件的輸入,而後計算機硬件看似能夠理解爲通過計算以後,能夠獲得輸出?
看似是這樣子的
可是究竟是怎麼控制的呢?
若是這麼想我感受想不通,軟件怎麼能控制硬件呢?
若是換一種思惟方式或許更好理解
其實跟上一個圖是同樣的,可是思惟方式不同
此處把計算機硬件做爲中心,不是說你把程序輸入,而是計算機硬件 讀取了計算機程序 而後通過處理,產生了輸出
看似同樣的不都是計算機程序做爲輸入 通過計算機硬件產生輸出嗎
其實差異很是大
上面的圖,你可能會理解爲軟件控制硬件,可是軟件如何控制硬件?根本就沒有辦法控制
下面的圖是硬件控制硬件,經過你告訴的方式(計算機程序) 我通過一系列的電路的通斷,我產生了指定的結果,由於我自己就是一直在操做電路,硬件天然會產生變化
想一下計算機的啓動過程,通電以後,是否是有了心跳以後,就不斷地在執行運算,讀取指令譯碼執行等等
最初啓動的還不是硬件麼
因此,我的理解
對於計算機來講,不存在軟件控制硬件
而是硬件 讀取了你給出來的指令 控制硬件
軟件不過是存儲起來的指令,整個計算機只是邏輯電路和等待執行的指令
電路上電以後,跟隨頻率不斷地執行指令,軟件就好像是一個無限的紙帶,紙帶上佈滿了指令
計算機就這麼一條條的不嫌累的執行着,軟件只不過是人機交互的方式而已,計算機永遠是那個計算機,你操做不了她
這幾個思惟方式看似簡單,可是卻融入到無數的編寫規範設計思惟裏面了
抽象 封裝 接口 規範 解耦
抽象將複雜物體的一個或者幾個特性去掉,抽取他們共性的部分,這就是抽象
好比操做系統管理硬件資源,IO設備抽象爲文件
好比下圖,他們都是形狀
抽象的形式是統一
抽象的目的是簡化
既然是去掉個性,保留抽取共性,全部的共性組合在一塊兒也就是統一了形式
這種統一後的形式就是一種由各個共性的點組成的一類意識形態上的新事物
這個新事物就共性來講,與原有的事物放到一塊兒進行抽象獲得的抽象結果仍是這個抽象後的事物自己,對吧
提及來繞口,其實就好像再說杯子和玻璃杯 瓷杯都是杯子同樣,雖然這麼說有點彆扭
因此抽象的形式是統一,獲得一種意識形態上的新事物
這些共性的點,對於抽象後的新事物是他的特性
可是這些特性不是具體的
在計算機的世界裏面,抽象事後,還必要要實現,計算機不懂得天然語言也沒有任何思想
負責抽象的人必需要提供具體的實現
好比操做系統把IO設備抽象爲文件,那他就把共性的讀寫訪問方法提供出來,假設是 read 和 write
無論究竟是磁盤仍是磁帶,read就是讀取內容,write就是寫出內容,究竟是怎麼實現的,調用者不須要關注
因此抽象最終的目的就是簡化
簡化後你不用再關注IO設備具體是什麼,哪一個廠家生產的,使用了什麼技術(去掉的特性)
也能夠說是屏蔽了底層的實現細節
屏蔽的近義詞能夠說是封裝,把底層的實現細節封裝起來,提供統一的訪問形式
封裝後提供統一訪問形式,也就是提供統一的接口 就像上面提到的read write方法
接口能夠理解爲對接的端口 就好像電腦上預留給投影儀使用的十五針VGA插口同樣
既然形式上完成了統一
訪問形式上也完成了統一
那麼這就至關於一種規範化的形式
因此規範和接口 又有近似的意思
均可以理解爲一種約定好的協議,約定好的形式,一種規矩,規矩就能夠作到徹底的解耦
接口提供訪問的具體形式,可是不提供細節
規範指導實現的最終目的與要求,可是不提供細節
有了封裝,規範,接口的概念,也就很大程度的完成了解耦
完成了解耦不少時候就能夠把問題分層的處理對待
TCP/IP的分層概念就是如此,每一層封裝上一層的信息
層與層之間按照約定的規範協議進行對接,各司其職,各層作各層的事情
這樣既能夠再也不一條道走到黑,就好像你回家可能走幾分鐘坐公交而後坐地鐵同樣
這些概念
抽象/封裝/接口/規範/協議/屏蔽/分層
貫穿了計算機整個的發展
抽象->統一形式->提供統一接口,進而隱藏底細節實現,從而簡化了訪問
抽象->統一形式->提供統一規範,進而能夠解耦獨立發展,並且還可以無縫對接
這兩種模式最爲常見
其實提供統一接口通常是指個體
若是是一個生態鏈(技術鏈)上全部的個體,都設定好了指定形式的接口
這就是規範了,有了規範,就很容易出現技術體系
編程語言的發展是不斷地屏蔽底層,不斷地進行封裝
面向對象的程序設計語言中大多數時候你都在作抽象,事物抽象成類
面向接口的編程就是調用者與實現者進行解耦,經過接口進行對接
虛擬機規範只提供要求設計思路,可是不提供具體的實現要求,廠家能夠自行定製
虛擬機規範提供了字節碼規範,和虛擬機規範,至關於規定了輸入和輸出
只要按照規範的字節碼均可以運行在虛擬機上正確運行,一樣的字節碼也必然有一致性的結果
servlet規範讓servlet和servlet容器各自獨立發展,縱然它們相互依存