title: Real world uses of DFA,NFA,PDA and Turing machines
body: <p>I am now taking a course on Theory of Computation. I can understand the concepts well. I can able to solve the problems. And, when I asked my instructor about the real world application, he told me these concepts will be surely useful and essential in compiler design. But, at least to make a meaningful study, I need some explanations on how can I use those concepts it in my coding. </p>
  
  <p>e.g. If I want to design my own grep. I will use string functions in C. I don't know how to use regular expressions there in coding.</p>
  
  <p>Same case applies to Turing machines.</p>
  
  <p>If I want to add two numbers why I have to go by those unary concepts. Does the hardware implement those concepts? </p>