A language construct that modifies the state of the system. The most common side-effects are assignment, input and output.
A language without side-effects is purely-functional - execution consists of the evaluation of an expression and all subexpressions are referentially transparent.