第95篇
極客時(shí)間《許式偉的架構(gòu)課》課程筆記。
編程語(yǔ)言的出現(xiàn)解藻,誕生了程序員這個(gè)職業(yè),匯編語(yǔ)言則是程序員這個(gè)分工出現(xiàn)的標(biāo)志啡浊。
軟件是活的書籍
- 書籍能夠通過文字記載事件胶背、傳遞情感、揭示規(guī)律廷粒、傳承技術(shù)红且,軟件也可以做到這些并且做得更好
- 軟件的表達(dá)方式更具有多樣性:書籍只能通過文字描述進(jìn)行表達(dá),軟件除了文字嗤放,還能通過超鏈接斤吐、聲音搔涝、動(dòng)畫庄呈、視頻派阱、實(shí)時(shí)交互反饋等方式來還原場(chǎng)景
- 軟件對(duì)技術(shù)可以現(xiàn)場(chǎng)還原:文字記載可能會(huì)出現(xiàn)看不懂學(xué)不會(huì)的情況贫母,而軟件對(duì)技術(shù)的還原是精確的,技術(shù)傳承也是精確的腺劣,失傳概率大大降低
編程范式的進(jìn)化
編程范式是編程語(yǔ)言的一種分類方式,它并不針對(duì)某種編程語(yǔ)言籍铁,一個(gè)編程語(yǔ)言可以支持多種范型多范型拒名。典型語(yǔ)言是C++
過程式
- 過程式就是以一條條命令的方式芋酌,讓計(jì)算機(jī)按我們的意愿來執(zhí)行
- 過程式編程中最核心的兩個(gè)概念是結(jié)構(gòu)體(自定義的類型)和過程(也叫函數(shù))
- 通過結(jié)構(gòu)體對(duì)數(shù)據(jù)進(jìn)行組合,可以構(gòu)建出任意復(fù)雜的自定義數(shù)據(jù)結(jié)構(gòu)同云。通過過程可以抽象出任意復(fù)雜的自定義指令腮恩,復(fù)用以前的成果秸滴,簡(jiǎn)化意圖的表達(dá)
- 過程式語(yǔ)言的代表是 Fortran、C/C++荡含、JavaScript释液、Go 等等
函數(shù)式
- 函數(shù)式本質(zhì)上是過程式編程的一種約束,它最核心的主張就是變量不可變浸船,函數(shù)盡可能沒有副作用
- 函數(shù)式編程相對(duì)小眾,因?yàn)榇a質(zhì)量雖然高登淘,但是學(xué)習(xí)門檻也高
- 函數(shù)式語(yǔ)言的代表是 Haskell、Erlang 等
面向?qū)ο?/h2>
- 面向?qū)ο笤谶^程式的基礎(chǔ)上黔州,引入了對(duì)象(類)和對(duì)象方法(類成員函數(shù))
- 面向?qū)ο缶幊讨鲝埍M可能把方法(其實(shí)就是過程)歸納到合適的對(duì)象(類)上流妻,不主張全局函數(shù)(過程)
- 面向?qū)ο笳Z(yǔ)言的代表是 Java笆制、C#宇色、C++碱茁、Go 等等
從“面向?qū)ο蟆钡健懊嫦蜻B接”
面向?qū)ο蟮牡膬?yōu)點(diǎn)
- 一是清晰的使用界面仗岸,某種類型的對(duì)象有哪些方法一目了然
- 二是信息的封裝。面向?qū)ο蟛恢鲝埨@過對(duì)象的使用接口侵入到對(duì)象的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)
多態(tài)和繼承
- 面向?qū)ο笸ㄟ^接口可以實(shí)現(xiàn)過程編程很費(fèi)勁才能做到的“多態(tài)”:不同對(duì)象可以用相同代碼來實(shí)現(xiàn)類似的復(fù)雜行為
- 繼承帶來了編碼的便捷性完残,但也有了新的負(fù)擔(dān),因?yàn)閺?fù)合對(duì)象的構(gòu)造方法需要在“組合”和“繼承”兩個(gè)中間進(jìn)行選擇
面向連接的語(yǔ)言
- 所謂面向連接就是樸素的組合思想扎拣。研究連接二蓝,就是研究人與人如何組合,研究代碼與代碼之間怎么組合鸥诽。
- 代碼規(guī)范約束了人的行為牡借,是人與人的連接契約地回;消息傳遞約束了進(jìn)程的行為刻像,是進(jìn)程與進(jìn)程的連接契約
- 消息傳遞是多核背景下流行起來的一種編程思想,其核心主張是:盡可能用消息傳遞來取代共享內(nèi)存溜徙,從而盡可能避免顯式的鎖蠢壹,降低編程負(fù)擔(dān)
語(yǔ)言對(duì)架構(gòu)的影響
- 從軟件的業(yè)務(wù)架構(gòu)來說图贸,本身應(yīng)該怎么拆分模塊,每個(gè)模塊具體做什么樣的事情(業(yè)務(wù)邊界是什么)沟优,這是業(yè)務(wù)需求本身決定的挠阁,和編程語(yǔ)言并沒有關(guān)系
- 但在描述每個(gè)模塊的規(guī)格時(shí),采用的規(guī)格描述語(yǔ)言建議選擇團(tuán)隊(duì)開發(fā)時(shí)采用的語(yǔ)言來描述接口
- 現(xiàn)實(shí)中語(yǔ)言的選擇對(duì)業(yè)務(wù)架構(gòu)決策的影響極其關(guān)鍵坡慌,原因有兩個(gè)跪者,1是開發(fā)效率渣玲,2是后期維護(hù)