One way to analyze a language is by looking at it as a complex formal device comprising a set of cognitive lexical and grammatical forms as well as a set of rules or constraints capable of producing the well-formed utterances of the language. In this case, the linguist examines the system of the language, i.e. its structural and functional features, in a fairly abstract way. Another important way to examine a language is by looking at the different ways it is actually used by its speakers within a specific cultural setting. Following this option, the linguist analyzes the actual linguistic practices of a particular speech community. These practices widely differ from one community to another.