<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    冒號和他的學(xué)生們(連載8)——并發(fā)范式

    冒號和他的學(xué)生們

    ——程序員提高班紀(jì)事

    1. 并發(fā)范式

    在合作中競爭,在競爭中合作                                            ——《競合》


    逗號好奇地問:“還有其他類型的編程范式嗎?”

    “不但有,而且有很多。”冒號喝了一口水,悠悠地說,“并發(fā)式編程就是其中之一。”

    嘆號有些驚訝:“并發(fā)式編程也算一種范式?它似乎更像是提供運行效率的一種手段。”

    “大謬不然。”冒號搖搖頭,“真正的并發(fā)式編程,絕不只是調(diào)用線程API或使用synchronizedlock之類的關(guān)鍵字那么簡單。從宏觀的架構(gòu)設(shè)計,到微觀的數(shù)據(jù)結(jié)構(gòu)、流程控制乃至算法,相比通常的串行式編程都可能發(fā)生變化。隨著硬件性能和用戶需求的雙重提升,并發(fā)式編程已成為不可回避的主題。毫不夸張地說,并發(fā)式編程是繼OOP之后又一場思想和技術(shù)上的革命。只是相比OOP,盡管年齡相仿,但語言上不夠支持,標(biāo)準(zhǔn)上不夠統(tǒng)一,理論上不夠完善,因而這場革命更具破壞性建設(shè)性。現(xiàn)在我們來看一個例子,比較兩種燒水泡茶的方案。”

    說著冒號在黑板上寫下——

    方案一:洗茶杯;放茶葉;灌水壺;燒水;水開后泡茶。

    方案二:灌水壺;在燒水的同時,洗茶杯;放茶葉;水開后泡茶。

    引號見多識廣:“我記得這好像是運籌學(xué)中的例子,顯然方案二更佳。從編程的角度來看,方案一是串行式編程,方案二是并發(fā)式編程——燒水的線程與洗茶杯放茶葉的線程是同時進(jìn)行的。”

    “如果方案一也用并發(fā)式編程呢?”冒號追問。

    引號一愣,隨即道:“必須先洗茶杯后放茶葉,洗茶杯放茶葉的同時也沒法燒水,至于泡茶,更得等水開之后了。”

    “由此可見,單憑并發(fā)式編程并不能保證提高效率,還必須在程序設(shè)計上作改進(jìn)。”冒號說道,“并發(fā)式編程以進(jìn)程為導(dǎo)向Process-Oriented),以資源共享與競爭為主線——與當(dāng)今世界形勢何其相似乃爾!這意味著程序設(shè)計將圍繞進(jìn)程的劃分與調(diào)度、進(jìn)程之間的通訊與同步等等來展開。合理的進(jìn)程設(shè)計應(yīng)該能做到——”

    • 軟件易于重用、維護(hù)、測試
    • 公平有效地利用資源,優(yōu)化程序性能如增大吞吐量、減少響應(yīng)時間、提高效率等
    • 保障進(jìn)程安全,防止競態(tài)條件(Race Condition
    • 保持進(jìn)程活性,避免死鎖、饑餓、活鎖、資源枯竭等
    • 減少鎖開銷、上下文切換等帶來的性能損失
    • 妥善處理多進(jìn)程在算法、調(diào)試等方面帶來的復(fù)雜性

    嘆號蹙眉:“并發(fā)式編程好是好,就是太復(fù)雜。”

    冒號淡淡地說:“天下沒有免費的午餐。并發(fā)式編程當(dāng)然不容易,但也并非難以掌握。最重要的是,作為一個程序員,你不得不面對它。即使你不直接用并發(fā)式編程,你依賴的代碼和依賴你的代碼也可能用到;即使現(xiàn)在沒有用并發(fā)式,將來也可能用到。如果采取避而不理的鴕鳥政策,早晚會被人點中你的死穴。”

    句號談及他的感受:“相比OOP在語言上得到的支持,并發(fā)式的支持力度好像很不夠。”

    冒號點頭稱是:“這是由并發(fā)式的復(fù)雜性和成熟度決定的。主流語言中JavaC#對并發(fā)式編程在語法上有一定的支持,而CC++除了關(guān)鍵字volatile外,主要靠library支持。專門為并發(fā)式而設(shè)計的語言大多僅限于學(xué)術(shù)研究而非商業(yè)應(yīng)用,Erlang語言是少數(shù)的例外。”

    問號提了一個聽似奇怪的問題:“并發(fā)式與前面提到的對象式有無共通之處?

    “并發(fā)式與對象式雖是互相正交的兩種范式,倒真有些相通呢。”冒號回答,“它們均與三大基本范式正交,并且越來越廣泛地向它們滲透著;均為傳統(tǒng)編程的一種推廣——并發(fā)式進(jìn)程的個數(shù)為一時即為傳統(tǒng)的串行式編程,對象的方法個數(shù)為為零即為傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu);均將整個程序系統(tǒng)分解為若干獨立的子系統(tǒng),不同的是一個以任務(wù)為單位,一個以對象為單位;子系統(tǒng)之間均能交流與合作,不同的是一個以競爭為主題,一個以服務(wù)為主題。如果將程序系統(tǒng)視作公司,那么并發(fā)式系統(tǒng)是產(chǎn)品型公司,每個進(jìn)程是一名工人,其職責(zé)是執(zhí)行單一任務(wù);對象式系統(tǒng)是服務(wù)型公司,每個對象是一名服務(wù)員,其職責(zé)是提供系列服務(wù)。由此可見,一名優(yōu)秀的程序設(shè)計師也應(yīng)該是一名優(yōu)秀的管理者。”

    句號提出:“迄今為止我們談到了五種范式,能否對它們簡單概括一下?”

    少頃,黑板上出現(xiàn)幾行排比句——

    過程式:以過程為模塊的君主體系,模塊之間互相授命與聽命

    函數(shù)式:以函數(shù)為模塊的數(shù)學(xué)體系,模塊之間互相替換與合成

    邏輯式:以斷言為模塊的邏輯體系,模塊之間互相歸納與演繹

    對象式:以對象為模塊的民主體系,模塊之間互相交流與服務(wù)

    并發(fā)式:以進(jìn)程為模塊的生產(chǎn)體系,模塊之間互相競爭與合作


    “并發(fā)式編程要求我們擺脫以往習(xí)慣的按部就班的思維方式,對編程提出了更高的挑戰(zhàn)。程序世界與現(xiàn)實世界一樣,呈百舸爭流、千帆競發(fā)之勢,不進(jìn)則退啊!”言訖,冒號宣布,“第二堂課到此為止,歡迎下次光臨。”

    posted on 2008-05-08 00:05 鄭暉 閱讀(2183) 評論(6)  編輯  收藏 所屬分類: 冒號和他的學(xué)生們

    評論

    # re: 冒號和他的學(xué)生們(連載8)——并發(fā)范式 2008-05-08 17:38 viMory

    上面的強(qiáng)啊,廣告打到這里來了...  回復(fù)  更多評論   

    # re: 冒號和他的學(xué)生們(連載8)——并發(fā)范式 2008-05-08 19:08 鄭暉

    @herowzz
    抱歉刪去了你的評論,雖然1樓(已刪除)打廣告不對,但最好用委婉的字眼。  回復(fù)  更多評論   

    # re: 冒號和他的學(xué)生們(連載8)——并發(fā)范式 2008-05-08 19:09 鄭暉

    @優(yōu)書齋
    請勿在此貼廣告,抱歉刪貼。  回復(fù)  更多評論   

    # re: 冒號和他的學(xué)生們(連載8)——并發(fā)范式 2008-05-09 09:41 herowzz

    @鄭暉
    呵呵,沒關(guān)系~~我這個人比較沖動~~  回復(fù)  更多評論   

    # re: 冒號和他的學(xué)生們(連載8)——并發(fā)范式 2008-06-02 09:15 老太

    謝謝您。看完后,對范式有了一定的了解。但是總感覺真正的編程當(dāng)中,好像解決一個問題并不是按照特定的范式進(jìn)行的。應(yīng)該根據(jù)你的需求隨時改變策略。  回復(fù)  更多評論   

    # re: 冒號和他的學(xué)生們(連載8)——并發(fā)范式 2008-06-02 10:02 鄭暉

    @老太
    不錯,解決一個問題可能融合多種范式。但要運用好,必須先了解它們。  回復(fù)  更多評論   

    導(dǎo)航

    統(tǒng)計

    公告

    博客搬家:http://blog.zhenghui.org
    《冒號課堂》一書于2009年10月上市,詳情請見
    冒號課堂

    留言簿(17)

    隨筆分類(61)

    隨筆檔案(61)

    文章分類(1)

    文章檔案(1)

    最新隨筆

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产美女视频| 免费鲁丝片一级观看| 国产成人高清亚洲| 尤物视频在线免费观看| 成人免费午夜在线观看| 亚洲人成网站看在线播放| 在线看免费观看AV深夜影院| 7777久久亚洲中文字幕蜜桃| 伊人久久免费视频| 亚洲午夜在线电影| 久久久久久久岛国免费播放 | 国产精品黄页免费高清在线观看 | 亚洲国产精品成人| 成人免费视频一区二区| 亚洲中久无码不卡永久在线观看| 一区二区视频在线免费观看| 亚洲中文字幕无码永久在线 | 在线jlzzjlzz免费播放| 亚洲AV性色在线观看| 国产成人精品男人免费| 九九综合VA免费看| 黑人精品videos亚洲人| 四虎在线成人免费网站| 亚洲中文字幕无码中文字| 免费国产精品视频| xxxxx做受大片视频免费| 亚洲不卡av不卡一区二区| 59pao成国产成视频永久免费| 亚洲高清中文字幕免费| 四虎影视永久免费观看| 十八禁在线观看视频播放免费| 亚洲天堂一区二区| 国产成人综合久久精品免费| 岛国精品一区免费视频在线观看| 亚洲嫩草影院久久精品| 天天看免费高清影视| 日本精品久久久久久久久免费| 亚洲精品国产字幕久久不卡| 97在线观看永久免费视频| 一级毛片试看60分钟免费播放| 亚洲成人激情在线|