title: What are Apache Thrift and Google Protocol Buffers used for?
body: <p>I see Thrift and Protocol Buffers mentioned a lot, but I don't really understand what they're used for. From my limited understanding, they're basically used when you want to do cross-language serialization, i.e., when you have some data structures in one language that you want to send off to another program written in another language.</p>
  
  <p>Is this correct? Are they used for anything else?</p>
  
  <p>(From my again limited understanding, I think Thrift and Protocol Buffers are basically two different versions of the same thing -- feel free to correct me or elaborate.)</p>