一周XX思考(第12期)
大家好,這里記錄,我每周碰到的,或想到的,引起觸動(dòng),或感動(dòng)的,事物的思考。這是 [一周XX思考] 的第12期,不見得都對(duì),但開始思考總是好的。
?
借鑒和傳承
?
先有的SOA,再后來(lái)出現(xiàn)微服務(wù),那么實(shí)際上微服務(wù)是SOA的升華。
?
再拿前端開發(fā)來(lái)說(shuō),從Windows原生的直繪界面到基于QT的Web混合開發(fā),再到小程序、Flutter等移動(dòng)跨平臺(tái)方案。
?
那么還能夠舉出N多這樣的例子,后面也會(huì)有層出不窮的新技術(shù),新架構(gòu)。
?
但這些大都會(huì)沿襲傳承和借鑒。
?
"吾生也有涯,而知也無(wú)涯, 以有涯隨無(wú)涯,殆也"。
?
所以,我們要善于找不變的內(nèi)容,去思考有哪些是不變的,才能以不變應(yīng)萬(wàn)變。
?
計(jì)算機(jī)為什么能執(zhí)行無(wú)限個(gè)可能
?
這里的計(jì)算機(jī),就理解成我們的PC吧。
?
計(jì)算機(jī)如何組成的呢,PC=CPU+存儲(chǔ)+I/O設(shè)備。
?
計(jì)算機(jī)運(yùn)行的原理是什么樣的呢,CPU從存儲(chǔ)中讀入指令,然后按照指令執(zhí)行命令,再然后就一條指令一條指令的執(zhí)行下去。
?
那計(jì)算機(jī)是怎么執(zhí)行無(wú)限個(gè)可能的呢,這里的無(wú)限個(gè)可能,就是不固定,你輸入什么,他就可以執(zhí)行什么,只要不報(bào)錯(cuò)。
?
能夠達(dá)到這個(gè)目的,這里面最主要的是可編程。
?
本周看極客專欄中的文章《架構(gòu)設(shè)計(jì)的宏觀視角》一文看到如下描述。
?
CPU 指令是一個(gè)很有限的指令集,但是CPU執(zhí)行的執(zhí)行序列,我們也叫它程序,并不是固定的,而是依賴保存在存儲(chǔ)中的數(shù)據(jù)-由程序員編寫的軟件來(lái)決定的。
?
而,指令序列的可能性是無(wú)窮的,這也就意味著電腦能夠做的事情的可能性也是無(wú)窮的。
?
架構(gòu)的作用
?
談?wù)摷軜?gòu)的作用,可以有好多個(gè)維度。
?
這周,我看到下面這句話,也是在《架構(gòu)設(shè)計(jì)的宏觀視角》中讀到的。
?
“在越強(qiáng)大的基礎(chǔ)架構(gòu)支撐下,應(yīng)用程序開發(fā)需要關(guān)注的問(wèn)題就越收斂,我們的開發(fā)效率就越高“
?
這句話呢,理解起來(lái),跟我們經(jīng)常說(shuō)的,分層架構(gòu)的主要目的之一是:隔離關(guān)注點(diǎn),有些相同,這句話中提到的”收斂“其實(shí),某個(gè)程度上也是關(guān)注點(diǎn)的”味道“。
?
要舉一個(gè)例子來(lái)說(shuō)明上面這句話的觀點(diǎn),有很多方式,比如無(wú)論分層的MVC架構(gòu),還是向內(nèi)依賴整潔架構(gòu),更或者是六邊形架構(gòu),能夠很好的闡述這個(gè)觀點(diǎn)。
?
不過(guò)呢,文中舉了一個(gè)例子,我到覺(jué)得很妙。
?
一位程序員之所以能夠舒服的編程并能夠讓代碼在計(jì)算機(jī)上運(yùn)行起來(lái),最底層是依靠的馮諾依曼體系架構(gòu),在上面是操作系統(tǒng)和編程語(yǔ)言,再往上是中間件類基礎(chǔ)軟件,比如Dubbo、MySQL等等,再往上是應(yīng)用程序框架比如spring框架等,最上面是什么呢,就是我們的業(yè)務(wù)架構(gòu)了。
?
試想,如果沒(méi)有業(yè)務(wù)架構(gòu)下面那些各層的基礎(chǔ)架構(gòu),我們能夠很舒服的寫代碼么,有能夠讓我們寫的代碼很方便的跟其它軟件系統(tǒng)交互通信么。
?
?
編程的本質(zhì)是什么
?
很抱歉,這周問(wèn)題似乎多了些,可是當(dāng)你這樣想的時(shí)候,你是怎么理解的呢。
?
編程的產(chǎn)出就是軟件,軟件的作用是解決問(wèn)題,我們一般都是怎么解決問(wèn)題的呢,分解。
?
就是,如果遇到大問(wèn)題,我們就會(huì)拆成小問(wèn)題,如果發(fā)現(xiàn)小問(wèn)題還是大,就繼續(xù)拆成更小的問(wèn)題?!按笫禄 ?。
?
然后,我們就會(huì)給出這些小問(wèn)題的解決方法,也就是我們編寫解決這些小問(wèn)題的代碼。
?
最后,就出現(xiàn)了編程的本質(zhì):我們要把這些代碼片段復(fù)合起來(lái),從而產(chǎn)生那個(gè)原始的大問(wèn)題的解法。
?
反之,如果我們不能把這些代碼片段復(fù)合起來(lái)并還原回去,那么當(dāng)初我們對(duì)問(wèn)題的分解就沒(méi)有任何意義。
?
關(guān)于這個(gè)論點(diǎn),大家可以搜索《函數(shù)式編程與面向?qū)ο缶幊蘙5]:編程的本質(zhì)》這篇文章,有更詳細(xì)的敘述。
?
同時(shí)這篇文章還提到了代碼的面積和體積,我確實(shí)第一次看到這個(gè)說(shuō)法。
?
代碼的面積和體積
?
我個(gè)人覺(jué)得講的有點(diǎn)太好,我直接引入原文的內(nèi)容:
?
那么,對(duì)于程序的復(fù)合而言,正確的代碼塊是怎樣的?它們的表面積必須要比它們的體積增長(zhǎng)的更為緩慢。我喜歡這個(gè)比喻,因?yàn)閹缀螌?duì)象的表面積是以尺寸的平方的速度增長(zhǎng)的,而體積是以尺寸的立方的速度增長(zhǎng)的,因此表面積的增長(zhǎng)速度小于體積。
?
代碼塊的表面積是是我們復(fù)合代碼塊時(shí)所需要的信息。代碼塊的體積 是我們?yōu)榱藢?shí)現(xiàn)它們所需要的信息。一旦代碼塊的實(shí)現(xiàn)過(guò)程結(jié)束,我們就可以忘掉它的實(shí)現(xiàn)細(xì)節(jié),只關(guān)心它與其他代碼塊的相互影響。在面向?qū)ο缶幊讨?#xff0c;類或接口的聲明就是表面。在函數(shù)式編程中,函數(shù)的聲明就是表面。我把事情簡(jiǎn)化了一些,但是要點(diǎn)就是這些。
?
正交設(shè)計(jì)
從某個(gè)角度來(lái)說(shuō),軟件設(shè)計(jì)的本質(zhì)就是分、合。
?
分開之后為什么要合,在上面[編程的本質(zhì)]中我們也有提到,只不過(guò)那是拿代碼片段來(lái)闡述的,你可以理解為是微觀層面的角度。
?
如果你把單系統(tǒng)模塊化以后,跨進(jìn)程的時(shí)候,再合起來(lái),就是宏觀層面的角度,靠什么合呢,可以是API。
?
這些是合,不過(guò)正交設(shè)計(jì),講的是在分的時(shí)候,到底該怎么分,也就是正交設(shè)計(jì)不是指導(dǎo)合的。
?
所謂正交設(shè)計(jì),就是當(dāng)我們把一個(gè)系統(tǒng)或者一個(gè)業(yè)務(wù)模塊,沿著兩個(gè)方向去拆分的時(shí)候,任一方向上的變化,都不能影響另外一個(gè)方向,就是正交(其實(shí)本是數(shù)學(xué)上的一個(gè)概念)。
?
?
?
三人行必有我徒
?
”三人行,必有我?guī)煛?#xff0c;出自于《論語(yǔ).述而》,意思大家都懂,一些人在一起,別人的言行舉止甚或思想知識(shí),一定有我學(xué)習(xí)的地方。
?
謙遜,敏而好學(xué),不恥下問(wèn),這些都是美德。
?
那么,現(xiàn)在回到一個(gè)本質(zhì)的問(wèn)題,學(xué)習(xí)的邏輯,如何學(xué)習(xí),如何學(xué)習(xí)好。
?
學(xué)習(xí)最好的方式就是主動(dòng)學(xué)習(xí),主動(dòng)學(xué)習(xí)最好的方式之一,就是分享,然后得到反饋,然后再修正。這樣的路徑是最優(yōu)的。
?
可是,如果總覺(jué)得,我目前已經(jīng)掌握的知識(shí),我總結(jié)的思想,很LOW,我分享了,別人也不會(huì)來(lái)看,更不會(huì)給出反饋,所以,我得向別人來(lái)學(xué)習(xí)。
?
這里的障礙就是,有過(guò)多的敬畏之心。
?
如何破除這個(gè)障礙呢。
?
這周看到一篇文章《學(xué)習(xí)的邏輯 3:三人行必有我徒》,對(duì)于分享有獨(dú)特的見解。
?
這個(gè)障礙其實(shí)可以很簡(jiǎn)單的破除,就是降低分享和傳授的門檻。不要一提到分享和傳授,就想到PPT,投影儀,濟(jì)濟(jì)一堂的聽眾。沒(méi)那么復(fù)雜,分享就是聊天。當(dāng)你有一個(gè)想法的時(shí)候,隨機(jī)碰到誰(shuí),就跟他/她聊,聽的懂正好可以給你反饋,聽不懂正好逼迫你尋找一種更容易理解的表達(dá)。而且要不止一次的聊,不止一個(gè)人的聊,聊多幾次,你會(huì)發(fā)現(xiàn)你的想法更完整了,一些新的點(diǎn)涌現(xiàn)了。
?
對(duì)于此,文章還給了一定的理論邏輯基礎(chǔ):
?
三人行,必有我徒。因?yàn)閹熗奖厝皇峭瑫r(shí)出現(xiàn),互為定義的。不存在沒(méi)有徒弟的老師,也不存在沒(méi)有師父的徒弟。因此,如果你認(rèn)同三人行必有我?guī)煹脑?#xff0c;自然也就明白三人行必有我徒,總會(huì)有人從你的分享中獲得有價(jià)值的知識(shí)。分享帶有分享者自己的經(jīng)歷和視角,沒(méi)有兩個(gè)人的視角會(huì)完全相同。只要周圍不都是因人廢言的人,總有人會(huì)結(jié)合你的視角得出新的洞見。
?
不過(guò)也會(huì)有個(gè)”副作用“,就像文中描述的那樣:
?
一個(gè)副作用是,在周圍人的眼中,你變成了一個(gè)健談的人 :)
?
?
閱讀和寫作到底是什么關(guān)系
?
經(jīng)常讀,經(jīng)常看,就一定能寫好文章么。
?
結(jié)論是,閱讀和寫作不是因果關(guān)系,而是相關(guān)關(guān)系。
?
也就是并不是因?yàn)槟阕x了,你就能寫出來(lái),但是讀的多了,看的多了,你就能在寫的時(shí)候發(fā)力,如何措辭,如何造句,就能用上了,是一種潛移默化的效果。
?
我記得,我在之前的XX思考中提到過(guò),竹籃子打水并不是一場(chǎng)空,最后會(huì)發(fā)現(xiàn)“籃子變干凈了”。
?
關(guān)于這個(gè)問(wèn)題的來(lái)由,是我這周在得到上看《小學(xué)生家長(zhǎng)必修課》這個(gè)專欄的時(shí)候,看到了讀者留言以及作者的回復(fù)。
?
是呀,看家庭教育,沒(méi)想到還有這樣的收獲,具體的內(nèi)容,截圖如下。
?
? ? ? ? ? ? ?
?
什么才叫真懂
?
讓我們一起看下,李誕的理解和解讀,下面是中國(guó)新聞周刊對(duì)李誕的一段采訪,我個(gè)人讀到的時(shí)候覺(jué)得很有道理,截圖如下:
?
? ? ? ? ? ? ?
?
雙輸
?
去高鐵站,在滴滴上打車,選了快車、出租車、特惠快車,特惠出租車,其中特惠出租車顯示8.5元,這個(gè)結(jié)果比平時(shí)少了4元。
?
當(dāng)?shù)竭_(dá)目的地的時(shí)候,提示付款,結(jié)果只有選擇滴滴支付才有這個(gè)優(yōu)惠,但是必須要幫銀行卡,這就有點(diǎn)麻煩了,因?yàn)橹岸际怯玫奈⑿胖Ц丁?/p>
?
司機(jī)師傅說(shuō),盡量下車前支付吧,我當(dāng)然也想著趕緊進(jìn)站。
?
只能作罷,還是選擇了微信支付,我沒(méi)有得到優(yōu)惠,滴滴支付沒(méi)有新增用戶。
?
雙輸。
?
那我在想,滴滴為什么不在我當(dāng)時(shí)選車的時(shí)候,優(yōu)惠那里,提示一下呢,要讓用戶提前綁上銀行卡什么的,這樣我在路上,就可能操作好了。
?
本周完。
題圖:葫蘆時(shí)刻
總結(jié)
以上是生活随笔為你收集整理的一周XX思考(第12期)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java并发编程模拟管程(霍尔Hoare
- 下一篇: 微软office认证课程