從CAP到編程語言的猜想
TIBOE 有如期的發(fā)布了***的編程語言的排行榜,變化總是有的,這是今年3月的榜單:
關于編程語言的爭議總是有的,不論是各個論壇,微信群,QQ群,乃至知乎,Quara 等知名網(wǎng)站,總會有對各種編程語言的吐槽。一句“PHP是世界上***的語言”可能會引起一場又一場的激戰(zhàn),這句話仿佛成了一個“梗”,自己也無法免俗,忍不住寫了一篇《PHP是***的語言嗎》,但編程語言鄙視鏈的存在令很多人無休止的追問,這不應該只是一種程序員間的樂此不疲吧?!
在微服務中,數(shù)據(jù)庫的集成是一件不會令人愉悅的事,因為分布式系統(tǒng)CAP理論在起作用吧。
中生代的右軍有文章專門對CAP進行了論述。
- Consistency(一致性),數(shù)據(jù)一致更新,所有數(shù)據(jù)變動都是同步的
- Availability(可用性) 好的響應性能
- Partition tolerance(分區(qū)容錯性) 可靠性
CAP 的核心思想是任何分布式系統(tǒng)只可同時滿足二點,沒法三者兼顧。
那么,由此類比到編程語言會是怎樣的情景呢?
是否可以對編程語言進行抽象呢? 而且抽象到3個維度呢?
根據(jù)自己所用過的編程語言的經(jīng)驗(35歲前曾經(jīng)每年學一門編程語言),仿佛可以把編程語言歸納到3個約束:Simple,Adaptive,Performance——SAP:
Simple 簡潔明快
- 編程語言的讀與寫都容易理解,學習曲線平滑而且短
- 結(jié)構緊湊,容易協(xié)作與維護
- 擁有豐富的類庫,以及完善的參考手冊
- 依賴少,部署同樣簡單
......
Adaptive 適用性強
- 適用于多個應用領域,支持各種層次的抽象
- 伸縮性好,增減依賴都很方便
- 支持多種編程范式
- 可編譯執(zhí)行,也可解釋執(zhí)行
- 甚至可以定制派生的語言
......
Performace 性能高效
- 不論使用IDE還是文本編輯器,代碼編寫都很快
- 執(zhí)行速度快,充分利用CPU甚至GPU的能力
- 編譯的速度同樣快,支持JIT
- 故障定位的速度快,debug快捷精準
......
如果分成這樣3個屬性,會發(fā)現(xiàn)它們之間存在著內(nèi)在的矛盾,就像CAP那樣:
SA 是Python,Java,還是......?
AP 是C,C++, 還是 ......?
SP 難道是 匯編么,還是 ......?
CAP 給我們的啟示是 架構師不要將精力浪費在如何設計能滿足三者的***分布式系統(tǒng),而是應該進行取舍。
如果SAP 的猜想是成立的,那么給我們帶來怎樣的啟示呢?
會不會混合編程是一種必然呢?
沒有仔細閱讀過CAP的數(shù)學證明,也沒有努力想用數(shù)學的方法去證明SAP的成立,現(xiàn)在只是老碼農(nóng)的猜想,可能是一種錯誤或者遺憾吧。
回顧一下編程語言的歷史,獻上一張來自veracode.com的舊圖:
這是一張不太完整的編年史,而且下邊還有veracode的推廣。學習它,老碼農(nóng)嘗試溯源,視圖從其他的角度看編程語言。
【本文來自51CTO專欄作者“老曹”的原創(chuàng)文章,作者微信公眾號:喔家ArchiSelf,id:wrieless-com】