I haven’t clearly understood the concept of side effect.


What is side effect in programming?
Is it programming language dependent?
Is there such a thing as external and internal side effects?


Please give some example of causes that create side effects.

A side effect refers simply to the modification of some kind of state - for instance:


Changing the value of a variable;
Writing some data to disk;
Enabling or disabling a button in the User Interface.


Contrary to what some people seem to be saying:


A side effect does not have to be hidden or unexpected (it can be, but that has nothing to do with the definition as it applies to computer science);
A side effect has nothing to do with idempotency.  An idempotent function can have side effects, and a non-idempotent function may have no side effects (such as getting the current system date and time).


It's really very simple.  Side effect = changing something somewhere.

P.S. As commenter benjol points out, several people may be conflating the definition of a side effect with the definition of a pure function, which is a function that is (a) idempotent and (b) has no side-effects. One does not imply the other in general computer science, but functional programming languages will typically tend to enforce both constraints.
