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