• optimal use of the hardware, either in terms of performance, memory usage or both
  • high level features like object-oriented programming or generic programming