See:
computer_systems_programmers_perspective