title: What is the Component Object Model (COM)? Is it language-dependent?
body: <p>I'm new to COM, and I don't know what it is or why it exists.</p>
  
  <p>Is this a programming methodology like OOP? Do programming languages have to support it? (with some special keywords or something)</p>
  
  <p>When I asked my professor about it, he said:</p>
  
  <blockquote>
    <p>COM is a binary-stable way to do OOP. We need to know binary-layout (something..something..)</p>
  </blockquote>
  
  <p>I've no idea what it means. Some people say it is used for code reuse. OOP does a good job at that already, so then why did this COM evolve in the first place?</p>
  
  <p>What is it with C++ and COM? Wherever I see COM, it's is always described with abstract C++ examples. Is it only for C++?</p>
  
  <p>Can any one show me a case or exmaple so that I can understand the need for COM? What are the requirements for learning this, so I can write my own components?</p>