A multi-paradigm programming language is a programming language that supports more than one programming paradigm. As Leda designer Tim Budd holds it: The idea of a multiparadigm language is to provide a framework in which programmers can work in a variety of styles, freely intermixing constructs from different paradigms. The design goal of such languages is to allow programmers to use the best tool for a job, admitting that no one paradigm solves all problems in the easiest or most efficient way.
Parallel computing - simultaneous execution with the necessary communication and synchronization between processes/threads
Actor model - concurrent computation with "actors" that makes local decisions in response to the environment (capable of selfish or competitive behavior)
Pipeline programming - no nested function calls, but a simple flow structures with easy to visualize/understand data flow through the program
Constraint programming - relations between variables are expressed as constraints (or constraint networks), directing allowable solutions (uses constraint satisfaction or simplex algorithm)
Rule-based programming - a network of rules of thumb that comprise a knowledge base and can be used for expert systems and problem deduction & resolution
Logic programming - uses logical facts to create a model that can prove consistency, deduce further truths or answer questions about the model (e.g. Dogs are animals! Dogs are red! Are some animals red?)
Reflective programming - special case of metaprogramming (modification of programs as data by another program or ability to do part of the work in compile time instead of running time) in which the program modifies or extends itself