Programming models provide abstractions that make it easier to reason about and build distributed systems. These papers explore different approaches to distributed programming.
Essential Papers
These papers introduce innovative programming models and abstractions for distributed computing.Distributed Programming Model
Foundational concepts for distributed programming
PSync Language
A partially synchronous language for fault-tolerant distributed algorithms
Programming Models Course
Comprehensive course on programming models for distributed computing
Logic and Lattices
Using logic and lattices for distributed programming
Distributed Programming Model
Overview of Distributed Programming
Overview of Distributed Programming
This foundational paper explores the core concepts and challenges in distributed programming, including:Key Topics:
- Communication primitives in distributed systems
- Synchronization mechanisms
- Consistency models
- Fault tolerance considerations
PSync: Partially Synchronous Language
PSync is a domain-specific language for writing fault-tolerant distributed algorithms with a focus on clarity and correctness.
What is PSync?
PSync is a programming language designed specifically for fault-tolerant distributed algorithms. It operates in a partially synchronous model, bridging the gap between synchronous and asynchronous systems.Key Features
Key Features
Language Design:
- High-level abstractions for distributed algorithms
- Built-in support for rounds and message passing
- Automatic handling of common fault-tolerance patterns
- Verification-friendly semantics
- Partial synchrony assumptions
- Bounded message delays (eventually)
- Suitable for consensus and agreement protocols
Use Cases
Use Cases
PSync is particularly well-suited for:
- Consensus algorithms (like Paxos variants)
- Byzantine fault-tolerant protocols
- Leader election algorithms
- Distributed agreement protocols
Resources
Paper
Read the POPL 2016 paper on PSync
Conference Talk
Watch the conference presentation
Logic and Lattices for Distributed Programming
Bloom Language and CALM Theorem
Bloom Language and CALM Theorem
This research from UC Berkeley explores using declarative logic and lattice theory for distributed programming.Core Concepts:
- CALM Theorem: Consistency As Logical Monotonicity
- Programs that are logically monotonic are eventually consistent without coordination
- Lattices provide a mathematical foundation for conflict-free replicated data
- Influenced the design of CRDTs (Conflict-free Replicated Data Types)
- Provides formal basis for reasoning about consistency
- Enables deterministic distributed programming
Why Lattices Matter
Mathematical Foundation
Lattices provide a rigorous mathematical framework for reasoning about distributed state
Programming Models Course
For a comprehensive overview of programming models for distributed computing, check out this course by Heather Miller.
Shared Memory Models
Understanding different consistency models and memory semantics
Message Passing
Actor models, CSP, and other message-passing abstractions
Data-Centric Models
Programming with distributed data structures and CRDTs
Declarative Models
Logic programming and dataflow approaches to distribution
Comparison of Programming Models
Imperative vs Declarative
Imperative vs Declarative
Imperative Models:
- Explicit control flow and state management
- Examples: Traditional RPC, message passing
- More control but higher complexity
- Specify what to compute, not how
- Examples: Logic programming, dataflow
- Less control but simpler reasoning
Synchronous vs Asynchronous
Synchronous vs Asynchronous
Synchronous Models:
- Bounded message delays
- Simpler to reason about
- Less realistic for internet-scale systems
- Eventually bounded delays (like PSync)
- Balance between simplicity and realism
- Suitable for many practical algorithms
- No timing assumptions
- Most realistic but most challenging
- Requires careful handling of uncertainty
Coordination-Free vs Coordination-Based
Coordination-Free vs Coordination-Based
Coordination-Free:
- Based on monotonic operations and lattices
- Eventually consistent
- High performance, no blocking
- Uses consensus and synchronization
- Strong consistency guarantees
- May require blocking and reduce availability
Modern Trends
CRDTs
Conflict-free data types inspired by lattice theory
Actor Models
Encapsulated state with message passing (Akka, Orleans)
Reactive Streams
Asynchronous stream processing with backpressure
Choreography
Decentralized workflow coordination
Serverless
Event-driven, stateless function composition
Edge Computing
Geo-distributed programming models