Programmers new to parallel computing will spend a significant amount of time analyzing their problems with patterns from the FindingConcurrency design space. The patterns in this language work with higher-level analysis in the problem domain. We assume that the designer has already analyzed the problem to define the basic data structures. We assume that the designer already knows the core subproblems or algorithms required by the problem. To this end, we created our pattern language so it would complement other pattern-based design systems.
Pattern languages help programmers design programs.
When a problem maps directly onto the patterns in the language, its solution within the language is greatly facilitated. Problems arise when the problem doesn't obviously map onto the patterns within the language. While we have tried to make the pattern language complete, there will most likely be problems that don't fit in well with the language. In these cases, the programmer needs to either abandon the language or help us expand it to include these new problems. The patterns are encoded using a consistent format, described in our Notation pattern.