From Python 2.6.4 documenation
Programming languages support decomposing problems in serveral different ways:
- Most programming languages are procedural: programs are lists of instructions that tell the computer what to do with the program's input. C, Pascal, and even Unix shell are procedural languages.
- In declarative languages, you write a specification efficiently. SQL is the declarative language you are most likely to be familiar with; a SQL query describes the data set you want to retrieve, and the SQL engine decides whether to scan or use indexes, which subclauses should be performed first, etc.
- Object-Oriented programs manipulate collections of object. Objects have internal state and support methods that query or modify this internal state in some way. Smalltalk and Java are Object-Oritented languages. C++ and Python are languages that support Object-Oriented programming, but don't force the use of Object-Oriented features.
- Functional programming decomposes a problem into a set of functions. Ideally, functions only talk inputs and proceduce ouputs, and don't have any internal state that affects the output proceduced for a given input. Well-know function languages include the ML family(Standard ML, OCaml, and other variants) and Haskell.