Concurrent computations resemble conversations. In a conversation, participants direct utterances at others and, as the conversation evolves, exploit the known common context to advance the conversation. Similarly, collaborating software components share knowledge with each other in order to make progress as a group towards a common goal. This dissertation studies concurrency from the perspective of cooperative knowledge-sharing, taking the conversational exchange of knowledge as a central concern in the design of concurrent programming languages. In doing so, it makes five contributions: 1. It develops the idea of a common dataspace as a medium for knowledge exchange among concurrent components, enabling a new approach to concurrent programming. While dataspaces loosely resemble both "fact spaces" from the world of Linda-style languages and Erlang's collaborative model, they significantly differ in many details. 2. It offers the first crisp formulation of cooperative, conversational knowledge-exchange as a mathematical model. 3. It describes two faithful implementations of the model for two quite different languages. 4. It proposes a completely novel suite of linguistic constructs for organizing the internal structure of individual actors in a conversational setting. The combination of dataspaces with these constructs is dubbed Syndicate. 5. It presents and analyzes evidence suggesting that the proposed techniques and constructs combine to simplify concurrent programming. The dataspace concept stands alone in its focus on representation and manipulation of conversational frames and conversational state and in its integral use of explicit epistemic knowledge. The design is particularly suited to integration of general-purpose I/O with otherwise-functional languages, but also applies to actor-like settings more generally.
翻译:并发计算类似于对话。在对话中,参与者向他人发出话语,并随着对话的进展,利用已知的共享上下文来推进对话。类似地,协作的软件组件彼此共享知识,以作为整体朝着共同目标取得进展。本论文从协作知识共享的视角研究并发,将知识的会话式交换视为并发编程语言设计的核心关切。为此,本文做出了五项贡献:1. 它发展了公共数据空间的概念,作为并发组件间知识交换的媒介,从而启用了并发编程的新方法。虽然数据空间在某种程度上类似于Linda风格语言中的"事实空间"和Erlang的协作模型,但在许多细节上存在显著差异。2. 它首次将协作式、会话式的知识交换清晰地表述为一个数学模型。3. 它描述了该模型在两种截然不同语言中的两个忠实实现。4. 它提出了一套全新的语言构造,用于组织会话场景中单个参与者的内部结构。数据空间与这些构造的结合被称为Syndicate。5. 它提出并分析了证据,表明所提出的技术和构造共同简化了并发编程。数据空间概念独树一帜,专注于会话框架和会话状态的表示与操作,并完整地运用了显式的认知知识。该设计特别适用于将通用I/O与原本函数式的语言集成,但也更广泛地适用于类参与者(actor-like)的场景。