title: How side effects are avoided in functional programming
body: <p>I've been comparing the advantages of Scala over Java for concurrent programming. </p>
  
  <p>Obviously the first point I came over is <strong>Scala is a functional programming language(partly) using FP avoids side effects naturally</strong> </p>
  
  <p>Compared to imperative language how side effects are avoided in functional programming and how it works on multi-threaded/concurrent programming ?</p>