What is a pattern?

First of all, what is a pattern?  

"Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice"

Christopher Alexander

According to Alexander, pattern is a solution to the problem in certain context.

Patterns usually describe software abstractions used by programmers in their design. This approach helps programmers to solve reoccurring problems with relative ease. Whenever software designer encounters a problem, he or she can look-up a pattern that solves a similar problem and tailor the example solution to his or her needs. [3]