Functional programming looks at programming like a function in mathematics. The program receives "input", together with some information, and uses this information to create "output". It will not have a state in between, and it will also not change things that are not related to the computation.