並行程式設計革命的源起

摘要:並行程式設計革命的源起

下文悉數摘錄自:Software and the Concurrency Revolution
 
第一、本文旨在探討並行(Concurrency)對於軟體、程式語言與程式設計師的蘊涵。
 
第二、過去三十年,由於硬體技術穩定進步,所以依賴單核心處理器的循序(sequential)程式的架構成為主流,但是當CPU的時脈抵達上限,甚至為了省電而降低時脈,所以多核心架構成為主流。
 
第三、因此,多核心架構協助硬體計算能力持續增加,但是程式設計師必須學習並行程式設計才能充分發揮硬體效能。
 
第四、除了效能因素以外,還有其他因素也需要並行程式設計,例如改善使用者介面的回應速度。舉例而言,當今的應用程式必須將計算工作移動至背景執行,以確保計算的同時,GUI的執行緒依舊可以重新繪製整個畫面。
 
第五、並行程式設計是有難度的。不僅當今(2005年)的程式語言與工具並不適合將應用程式轉換成平行應用程式,主流程式也少有平行程式,而且並行程式設計對於程式設計師而言並不是適合人類思考的方式。
 
第六、本文旨在探討並行程式設計為何困難以及可能的解決方案的方向。
 
第七、今日(2005年)的並行程式設計的程式語言與工具的水準可以結構化程式設計的時代的初期的循序程式設計相比。
 
第八、對於組合語言而言,semaphore與coroutine就是並行程式設計。對於結構化程式設計而言,lock與thread就是並行程式設計。
 
第九、如今我們所需的是一個高層次的抽象,也就是物件導向的並行程式設計。
 
 
資料來源:
Software and the Concurrency Revolution
by Herb Sutter, James Larus | October 18, 2005
http://queue.acm.org/detail.cfm?id=1095421
 
延伸資料來源:
[1]The Future of Microprocessors
by Kunle Olukotun, Lance Hammond | October 18, 2005
http://queue.acm.org/detail.cfm?id=1095418
 
[2]The Free Lunch Is Over 
A Fundamental Turn Toward Concurrency in Software
By Herb Sutter
http://www.gotw.ca/publications/concurrency-ddj.htm