軟件(2) - 體系(資源、分形幾何學(xué)、微服務(wù)、面向?qū)ο螅?/h2>

軟件的開(kāi)發(fā)一開(kāi)始就限制在硬件資源的框架內(nèi),要考慮如何合理運(yùn)用資源,避免出現(xiàn)錯(cuò)誤與耗盡資源,但在開(kāi)發(fā)過(guò)程中,顯性的問(wèn)題容易解決,往往是隱性問(wèn)題導(dǎo)致整體出現(xiàn)不穩(wěn)定的情況,如條件未考慮清楚(邏輯錯(cuò)誤)、微小誤差在時(shí)間累積下導(dǎo)致的嚴(yán)重錯(cuò)誤(錯(cuò)誤累積)、系統(tǒng)及軟件版本差異導(dǎo)致的兼容問(wèn)題(資源異常)。因此,在程序開(kāi)發(fā)前,要分析程序需面對(duì)哪些資源,如何應(yīng)用好資源。

為了減少錯(cuò)誤,軟件工程引入了一個(gè)非常要的思想,”分形幾何學(xué)“,這個(gè)由自然演化出的體系能高效的利用資源進(jìn)行多線程運(yùn)算。衍生出資源池、線程、拓展性、模塊化等架構(gòu)思想,例如使用windows系統(tǒng),安裝的各種軟件處理各自的問(wèn)題,應(yīng)用層的軟件不是直接和硬件交互,而是通過(guò)windows的核心主干與硬件交互,刪除軟件不影響其他程序與核心層,就像分形的末枝被消除。并且分形的末枝還可以繼續(xù)衍化,例如chrome瀏覽器安裝插件,桌面的應(yīng)用啟用新模塊,都是以分形的思路往下衍化。

如果有疑問(wèn),可以以人來(lái)類比,人類的族群衍化出不同的人種,尋求生存之道,每個(gè)人走上各自的生存之路,而生命給予了繁衍的能力,使得人們可以將知識(shí)傳授給子孫,循著自己的路繼續(xù)延伸下去。

目前的軟件微服務(wù)架構(gòu)也是基于分形的思想。其核心思想是,一個(gè)應(yīng)用是由多個(gè)小的、相互獨(dú)立的、微服務(wù)組成,這些服務(wù)運(yùn)行在自己的進(jìn)程中,開(kāi)發(fā)和發(fā)布都沒(méi)有依賴。不同服務(wù)通過(guò)一些輕量級(jí)交互機(jī)制來(lái)通信,例如 RPC、HTTP 等,服務(wù)可獨(dú)立擴(kuò)展伸縮,每個(gè)服務(wù)定義了明確的邊界。這樣的架構(gòu)易于拓展、維護(hù)、穩(wěn)定性也強(qiáng)很多。

定好架構(gòu)后,軟件代碼的編寫(xiě)也衍生出很多規(guī)則,面向?qū)ο笫侨藗兛偨Y(jié)出來(lái)的一個(gè)比較高效的編程范式。原理也與分形有關(guān),面向?qū)ο笾饕季S特點(diǎn)是邏輯分析思維,認(rèn)為萬(wàn)物皆有邊界,如同世界這個(gè)詞語(yǔ)一樣,通過(guò)尋找邊界封裝定義一個(gè)事物,然后再探究這個(gè)事物內(nèi)部的組成部分,通過(guò)封裝不變性,開(kāi)放變化性,增強(qiáng)系統(tǒng)的柔韌性和靈活性。例如動(dòng)物的定義包括吃東西、可以活動(dòng),食草動(dòng)物就繼承了動(dòng)物的特點(diǎn),并且有自己只吃草的特性,子類又有各自的特點(diǎn)形成了不同的物種。

編程設(shè)計(jì)模式則是思維抽象化的重要經(jīng)驗(yàn),處理一些問(wèn)題,使用一些模式或者說(shuō)套路可以更簡(jiǎn)潔高效的完成。就像生活中人與人相處也有很多套路,具體內(nèi)容讀者可以自行查閱。

代碼與計(jì)算機(jī),對(duì)應(yīng)著自然界的思維與肉體,簡(jiǎn)潔高效的代碼,意味著更快的思考、反應(yīng)與更少的消耗。當(dāng)數(shù)量級(jí)大到一定程度,差異就比較明顯。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容