I'm really having a hard time understanding the difference between procedural and functional programming paradigms.
Here are the first two paragraphs from the Wikipedia entry on functional programming:
In computer science, functional
programming is a programming paradigm
that treats computation as the
evaluation of mathematical functions
and avoids state and mutable data. It
emphasizes the application of
functions, in contrast to the
imperative programming style, which
emphasizes changes in state.
Functional programming has its roots
in lambda calculus, a formal system
developed in the 1930s to investigate
function definition, function
application, and recursion. Many
functional programming languages can
be viewed as elaborations on the
In practice, the difference between a
mathematical function and the notion
of a "function" used in imperative
programming is that imperative
functions can have side effects,
changing the value of program state.
Because of this they lack referential
transparency, i.e. the same language
expression can result in different
values at different times depending on
the state of the executing program.
Conversely, in functional code, the
output value of a function depends
only on the arguments that are input
to the function, so calling a function
ftwice with the same value for an
xwill produce the same
f(x)both times. Eliminating
side effects can make it much easier
to understand and predict the behavior
of a program, which is one of the key
motivations for the development of
In paragraph 2 where it says
Conversely, in functional code, the output value of a function depends only on the arguments that are input to the function, so calling a function
ftwice with the same value for an argument
xwill produce the same result
Isn't that the same exact case for procedural programming?
What should one look for in procedural vs functional that stand out?