1) System programming aims to produce software that provides services to computer hardware and requires an awareness of hardware.
2) Early system programs like assemblers and loaders were developed to translate programs into machine code and load them into memory for execution as hardware needs and programs grew more complex.
3) Additional system programs like macros and compilers were later created to make programming more efficient and allow programmers to write in higher-level languages as applications became more specialized.