title: Difference between "depend on abstractions not concrete classes" and "program to an interface"
body: <p>The difference between these two principles is not clear for me. They just look like the same thing.</p>
  
  <p>What is the difference if any?</p>