天天看點

從CAP 到程式設計語言的猜想

版權聲明:本文為半吊子子全棧工匠(wireless_com,同公衆号)原創文章,未經允許不得轉載。 https://blog.csdn.net/wireless_com/article/details/61912260

TIBOE 有如期的釋出了最新的程式設計語言的排行榜,變化總是有的,這是今年3月的榜單:

關于程式設計語言的争議總是有的,不論是各個論壇,微信群,QQ群,乃至知乎,Quara 等知名網站,總會有對各種程式設計語言的吐槽。一句“PHP是世界上最好的語言”可能會引起一場又一場的激戰,這就話仿佛成了一個“梗”,我自己也忍不住寫了一篇《PHP是最好的語言嗎》,但程式設計語言的鄙視鍊令很多人無休止的追問,這不應該隻是一種程式員間的樂此不疲吧?!

在微服務中,資料庫的內建是一件不會令人愉悅的事,因為分布式系統CAP理論在起作用吧。

  • Consistency(一緻性),資料一緻更新,所有資料變動都是同步的
  • Availability(可用性) 好的響應性能
  • Partition tolerance(分區容錯性) 可靠性

CAP 的核心思想是任何分布式系統隻可同時滿足二點,沒法三者兼顧。

由此,類比到程式設計語言會是怎樣的情景呢?

是否可以對程式設計語言進行抽象呢? 而且抽象到3個次元呢?

根據自己所用過的程式設計語言的經驗(35歲前曾經每年學一門程式設計語言),仿佛可以把程式設計語言歸納到3個限制SAP:

Simple 簡潔明快

  • 程式設計語言的讀與寫都容易了解,學習曲線平滑而且短
  • 結構緊湊,容易協作與維護
  • 擁有豐富的類庫,以及完善的參考手冊
  • 依賴少,部署同樣簡單
  • ……

Adaptive 适用性強

  • 适用于多個應用領域,支援各種層次的抽象
  • 伸縮性好,增減依賴都很友善
  • 支援多種程式設計範式
  • 可編譯執行,也可解釋執行
  • 甚至可以定制派生的語言

Performace 性能高效

  • 不論使用IDE還是文本編輯器,代碼編寫都很快
  • 執行速度快,充分利用CPU甚至GPU的能力
  • 編譯的速度同樣快,支援JIT
  • 故障定位的速度快,debug快捷精準

如果分成這樣3個限制,會發現它們之間存在着内在的沖突,就像CAP那樣:

SA 是Python,Java,還是……?

AP 是C,C++, 還是 ……?

SP 難道是 彙編麼,還是 ……?

CAP 給我們的啟示是 架構師不要将精力浪費在如何設計能滿足三者的完美分布式系統,而是應該進行取舍。

如果SAP 的猜想是成立的,那麼給我們帶來怎樣的啟示呢? 會不會是混合程式設計是一種必然呢? 沒有仔細閱讀CAP的數學證明,也沒有努力想用數學的方法去證明SAP的成立,現在隻是老碼農的猜想,可能是一種遺憾吧。

回顧一下程式設計語言的曆史,獻上一張來自veracode.com的舊圖:

這是一張不太完整的編年史。老碼農總嘗試溯源,視圖從其他的角度看程式設計語言。

那為什麼會将程式設計語言劃分為S,A,P三類而不是别的什麼呢?

因為老碼農對程式設計的了解是軟體的時空與人的關系。

軟體時空與人的關系是形而上而務虛麼?

老碼農還沒有那個本領,如果想知道老碼農如何思考軟體時空與人,以及全棧與全棧團隊,請關注:

或者在嘉年華之後,見字如面,隻是沒有了現場的那個朗讀者。

繼續閱讀