91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CSP的開發過程是怎樣的

發布時間:2021-12-16 17:55:26 來源:億速云 閱讀:183 作者:柒染 欄目:互聯網科技

本篇文章為大家展示了CSP的開發過程是怎樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

程序架構的研究在上世紀七八十年代還處于原始階段,當時的大部分研究都在研究如何編寫順序代碼,而現在所熟知的goto語句那時也正在被討論,還沒有正式引入。而面向對象的范式正在悄悄的變成編程的基石。
一切都顯得風平浪靜,好像一切都在隨著預想的慢慢發展。這時C.A.R Hoare (簡稱Tony Hoare發現了一個問題,那就是并發沒有得到太多的關注,于是他開始著手解決這個問題。

Tony Hoare

說起Tony Hoare,初聽比較陌生。但是他的另一項研究很多程序員不會陌生,那就是排序算法中的快速排序算法(Quick Sort)。而這個聞名于世的算法是他26歲時發明的,當然除了這些,Tony Hoare在程序設計語言的定義、設計、數據結構、算法和操作系統等許多方面都有很多影響深遠的成果。并因為“對程序設計語言的定義和設計方面的基礎性貢獻”在1980年獲得圖靈獎。
Hoare在發明快速排序后的第二年,接到了新的任務,為公司的新機器設計一個新的高級語言,而當時他正好搞到一份Algol 60報告的復印件,并參加了Dijkstra(學算法的時候大部分人都聽過Dijkstra算法,沒錯,就是這個人發明的)等人舉辦的Algol 60培訓班。

當時Hoare學著學著就想,不如直接把Algol 60在公司的新機器上進行實現。于是Hoare把這個想法提交給公司,在公司同意后,開始設計和實現Algol 60的一個自己版本。Hoare在一開始就制定了明確的目標,即系統要安全可靠,生成的目標碼要簡潔,工作區數據要緊湊,過程和函數的人口和出口要清晰、嚴密等,還明確了整個編譯過程采用一次掃描等原則。
而這次實現不僅十分順利,并且大受歡迎,在世界各國開發的Algol 60版本中效率、可靠性和方便性都非常出色。因此得到了國際學術界的重視。國際信息處理聯盟于是任命霍爾為2.1工作組(Working Group 2.1)的負責人,這個工作組的任務是維護和發展Algol。霍爾果然不負眾望,主持設計了Algol X以繼承與發展Algol 60。正是在Algol X的設計中,霍爾發明了CASE語句
Hoare還有很多重要的研究和成果。而我們今天要說的CSP理論就是其中非常重要的一點。
 

CSP

CSP的開發過程是怎樣的


Hoare在發現并發操作沒有引起過多的關注后,開始著手進行解決。終于在1978年,Hoare在ACM中發表了經典的“Communicating Sequential Processes”論文。在這篇論文中,Hoare認為輸入和輸出是兩個被忽略的編程原語,尤其在并發代碼中。于是Hoare在CSP論文中展示了如何應用通信來建模輸入和輸出,并提供了如何用CSP來解決一些并發問題,比如尋找10000以內的素數。通過這種方式最終達到“在進程間正確的通信”。當然這個思想在當時是非常超前的,

事實上,1978年的論文中,CSP只是一個用來展示通信順序進程的能力的一個簡單的編程語言。連Hoare本身都覺得這個想法過于超前而有些不切實際,他直接在論文中悲觀的寫道:

Thus the concepts and notations introduced in this paper (although described in the next section in the form of a programming language fragment) should not be regarded as suitable for use as a programming language, either for abstract or for concrete programming. They are at best only a partial solution to the problems tackled.


介紹的概念和符號應該不被認為適合作為一種編程語言,無論是抽象的還是具體的編程。他們最多只是一種解決問題的方式。

Hoare擔心自己所展示的技術對于未來的并發編程的研究并沒有任何作用,這種技術或許沒有語言能夠按照他的想法來實現。但是接下來的6年里,關于CSP的想法被提煉成對并發系統進行數學建模的方法--進程微積分。并提供了代數規則來對系統進行變化來分析它們的并發和效率。而這正式將CSP的想法投入到并發編程的實踐中。

Go語言

在CSP提出后,有些語言嘗試將Hoare提出的輸入和輸出作為原語納入到自己的語言體系中,比如OCCAM并發處理語言。和傳統的加鎖方式不同,CSP理論中不允許進程對其他進程的變量賦值,進程之間只能通過通信原語來實現數據交換和協作。但是這些語言都沒能真正地為這些原語提供支持。大多數流行語言都支持共享和內存訪問同步到CSP的消息傳遞樣式。而采用CSP理論的語言也有,但是基本都沒有得到廣泛的采用。
直到Go語言出現,正式將CSP的原則納入到核心原則,并提供了通信的原語支持channel。正因為如此,并發被認為是Go語言的優勢之一。并讓Go語言在分布式系統、云原生系統和系統中間件中迅速占領了市場。而其他語言基于共享內存的并發模型,在大型和復雜系統中變得很難正確使用。
當然Go還有其局限性,因為CSP的理解成本問題,Go同時也支持傳統的加鎖方式,也支持共享內存的方式。不過Go已經向其他語言證明CSP的可行性和優越處。并且提出了經典的CSP核心概念:

Do not communicate by sharing memory; instead, share memory by communicating.


“不要以共享內存的方式來通信,相反,要通過通信來共享內存。”

而由于Go語言的推廣和效果,使得CSP的概念變得流行起來,目前很多語言在嘗試將CSP納入到語言體系中并提供對Hoare提出原語的支持。

上述內容就是CSP的開發過程是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

csp
AI

特克斯县| 唐河县| 开阳县| 广饶县| 大名县| 湟中县| 临城县| 赫章县| 安阳县| 白山市| 海原县| 信丰县| 凉城县| 金堂县| 社会| 洞口县| 泸溪县| 崇明县| 万源市| 嘉定区| 远安县| 祥云县| 丰原市| 忻州市| 星座| 英超| 永德县| 黄龙县| 成都市| 巩义市| 张家港市| 信丰县| 溧阳市| 女性| 普兰县| 金乡县| 昭觉县| 渑池县| 伊金霍洛旗| 高雄县| 泗水县|