2007年4月刊《程序員》,專題為“多核時下的軟件開發”。《程序員》并非陽春白雪,它面向大眾程序員。面向大眾的《程序員》介紹多核、并發,也意味著并發程序設計的開始進入中國大眾程序員的視野。

          并發程序設計,在很多的書籍或者文章中,都會提到他的一個特點,復雜。這個特性,也導致了在以往并發程序設計只為高級程序員所專用。

          復雜度并非事物的固有屬性,并發程序設計的復雜,是我們主觀認為。我們認為并發程序設計復雜,是因為我們還沒有掌握一些使其簡單化、清晰化的方法。當我們掌握相關方法,研究徹底,并發就會變得簡單。這個過程已經開始了。

          以 往,我們需要直接使用一些低級并發概念來構造系統,不斷發明輪子,容易出錯,難以調試,這種的并發程序設計當然復雜,因此也只能為高級程序員所專用。如此 環境,就如同Dijkstra給我們帶來結構化程序設計之前的世界一般。很幸運的是,一些軟件業的先驅們,已經抽象出一些概念,能夠使得并發程序設計簡單 化,清晰化。例如Future、Lock-free思想等。

          在主流編程語言中,Java走在最前頭,理念領先,提供了實用的庫。在 Java SE 5.0中就提供了util.concurent包,包括了Future、Executor、BlockingQueue等,一系列lock-free的數 據結構,例如ConcurrentMap。包括并發流程控制工具類:CountDownLatch、CycliBarrier。還有精巧好用的 DelayQueue(參考我之前寫過的文章http: //www.cnblogs.com/jobs/archive/2007/04/27/730255.html)。使用這些概念以及提供的模式,能夠使 得編寫并發程序簡單化。

          C++中,Herb Sutter在Visual C++中加入了很多支持并發的語法特性,包括atomic、future等。boost的線程庫開始引入了第一個高級概念barrier。

          Windows 平臺本身提供了功能強大的并發API,包括WaitForSingle系列,WaitForMulti系列,Auto和Manual模式的Event等 等。.NET平臺基本沒有任何自有的并發庫和工具類,完全是Windows API的簡單封裝。可以這么說,.NET的類庫沒有為并發作任何事情,完全吃Windows API的老本。

          如同Herb Sutter認為,我們很幸運處于并經歷這個軟件大變革(并發)。并發進入主流這個過程將會延續數年,Herb Sutter認為是2007-2012。
          參考我以前寫的一篇文章(Herb Sutter的一些觀點 http://www.cnblogs.com/jobs/archive/2006/11/12/558078.html)

          類 似的場景也有,早期面向對象技術,也只為少數高級程序員所掌握,現在剛入門的程序員都能說上一大通。數據結構算法也是,早期只為少數優秀程序員所掌握,但 現在主流的開發環境中就包括了主要的數據結構和算法,會用的人一把一把,會用List、Hashtable、快速排序一點也不酷。并發程序設計也一樣,將 不再是陽春白雪!

          面向對象技術在最初在Simula語言中引進,顧名思義,最初樸素的面向對象思想就是模擬,在程序中模擬真實世界。這種 “模擬”,使得程序的組織清晰化,簡單化。但真實世界是充滿著并發。真實世界的并發要比虛擬環境中的并發要復雜的多,但是人們輕松應付,由此,我們有足夠 的理由相信,并發程序設計將不會是一種復雜難掌握的技術。
          posted on 2007-05-01 08:54 溫少的日志 閱讀(1408) 評論(2)  編輯  收藏
          Comments
          • # re: 舊時王謝堂前燕,飛入尋常百姓家
            我為J狂
            Posted @ 2007-05-02 10:59
            我們站在巨人的肩膀上,真是太幸福了。  回復  更多評論   
          • # re: 舊時王謝堂前燕,飛入尋常百姓家
            yufeng0681
            Posted @ 2007-05-02 11:49
            其實工具種類同質化,說明了軟件的發展還是有很大潛力的。
            大發展會來自第一次的開發平臺的統一。
              回復  更多評論   

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          主站蜘蛛池模板: 沅陵县| 嘉禾县| 灵寿县| 达州市| 栾川县| 新泰市| 安平县| 札达县| 莒南县| 海南省| 东乡族自治县| 二连浩特市| 晋江市| 松潘县| 册亨县| 盘锦市| 灯塔市| 太仆寺旗| 介休市| 淮安市| 长宁区| 灵丘县| 绥德县| 安岳县| 沂源县| 昌邑市| 竹北市| 兴文县| 洮南市| 景洪市| 临泉县| 龙陵县| 图们市| 华阴市| 大连市| 江门市| 夏河县| 阿鲁科尔沁旗| 安仁县| 南川市| 佛教|