Concurrent Patterns: Parallels in System and Language Design