多核和分布式的程式設計環境促使產生了併發程式語言,那麼它和傳統的程式語言有什麼本質的不同?

時間 2021-05-11 19:43:37

1樓:陳甫鵃

直譯器/編譯器級別的表示式亂序求值優化和並行或併發程式設計不是一回事。把兩者混為一談,是對編譯一知半解的計算機「科學家」們最容易犯下的錯誤之一(我還見過把 NFA 的正規表示式求值稱作「併發」的,槽都不知道怎麼吐)。所以,指稱 Haskell 之流「善於併發」之類的說法,完全可以一笑置之。

2樓:Belleve

所謂「併發程式語言」只是內建了大量不基於執行緒的併發原語的程式語言

例如 erlang 的多程序之間不共享資料,可以實現無鎖併發,增加橫向擴充套件性

3樓:Ivony

我認為並不存在併發程式語言這一概念。

所以問題根本就不成立,多核和分布式的程式設計環境沒有創造什麼所謂的併發程式語言。而且分布式是亂入的吧。

就像網際網路的興起也沒有創造什麼網際網路程式語言

當然,有一些程式設計正規化更利於在多執行緒環境下工作,例如純函式式,無狀態的函式式。有一些不適合,例如依賴於狀態和訊息的物件導向。

所以程式設計的正規化和風格在隨著領域和要解決的問題不停的變化,而程式語言則也隨之進化適應這些變化。

何況,函式式本來就是相當傳統的。

分布式的環境下, MySQL和Redis如何保持資料的一致性?

EnjoyMoving 資料庫和快取之間一般不需要強一致性。一般快取是這樣的 讀的順序是先讀快取,後讀資料庫 寫的順序是先寫資料庫,然後寫快取 每次更新了相關的資料,都要把該快取清理掉 為了避免極端條件下造成的快取與資料庫之間的資料不一致,快取需要設定乙個失效時間。時間到了,快取自動被清理,達到快取...

分布式環境中的註冊中心能做成動態擴容的嗎?

因為主流的註冊中心都是要求過半表決一致的資料一致性演算法,這就決定了集群在初始化的時候就需要知道自己集群的規模有多大,集群成員都有哪些人。動態擴容一般會面臨兩個問題,第乙個 如何認識新人。新加入的節點,老的集群是不認識的,至少目前這塊做的很不好。zookeeper 3.5.x的版本官方說支援動態擴容...

Mesh分布式路由器和傳統的AC AP方案各有什麼優缺點和適用的環境有什麼區別?

過來強答一波,部分回答於實際有嚴重偏差 兩者優點和缺點簡直互補一樣 AC AP 優點帶機量大 網路規模也可以做到很大,缺點是貴,網路調優過於困難。安裝並不是很困難,可能最需要一把好點的電動螺絲刀,特別是面板AP,有各種相對廉價的套裝,接通網路也容易。真正困難的是出現問題是的調優 定位解決。Mesh路...