並行程式設計的衝擊與挑戰

摘要:並行程式設計的衝擊與挑戰

以下資料來源悉數摘錄自Software and the Concurrency Revolution[1]。
 
基於下列三點理由,並行(concurrency)程式設計革命的破壞性大於物件導向程式設計革命:
 
第一、並行程式設計將是高效能的不可或缺的一部分。
 
第二、並行程式設計的難度高於循序(sequential)程式設計。舉例而言,分析程式時,將產生呼叫的來源納入考慮的依據,是循序程式設計的context-sensitive analysis[2]的基礎技術。至於並行程式設計則需要同步分析(synchronization analysis[3]),但是同時執行前述二種分析(context-sensitive analysis與synchronization analysis)已經被證明是無解(undecidable[4])的情形。
 
第三、對於人類的理解方式而言,相較於循序程式碼,並行程式設計較難理解。面對部分排序作業的簡易型資料結構[5],即使是細心的人也會遺漏可能的插入項目(interleave)[6]。
 
 
資料來源:
[1]Software and the Concurrency Revolution
http://dl.acm.org/citation.cfm?id=1095421
 
[2]context-sensitive analysis
http://en.wikipedia.org/wiki/Data-flow_analysis#Forward_Analysis
 
[3]synchronization analysis
http://en.wikipedia.org/wiki/Synchronization
 
[4]Undecidable problem
http://en.wikipedia.org/wiki/Undecidable_problem
 
[5]BlockingCollection Overview
http://msdn.microsoft.com/en-us/library/dd997371(v=vs.110).aspx
 
[6]Asynchrony
http://blogs.msdn.com/b/maestroteam/archive/2009/05/05/asynchrony.aspx