title: What is difference between functional and imperative programming languages?
body: <p>Most of the mainstream languages, including object-oriented programming (OOP) languages such as C#, Visual Basic, C++, and Java were designed to primarily support imperative (procedural) programming, whereas Haskell/gofer like languages are purely functional. Can anybody elaborate on what is the difference between these two ways of programming? </p>
  
  <p>I know it depends on user requirements to choose the way of programming but why is it recommended to learn functional programming languages?</p>