A programing language paradigm that separates the functionality of a program into independent, interchangeable modules.
Most languages, except ancient one like ALGOL, feature this paradigm. Though the most complete implementation is provided by the ML family.