Abstractions that allow tasks to be encapsulated and reused, making programming more modular and maintainable.