This document discusses the differences between system programming and application programming. System programming involves writing low-level programs that interface with computer hardware, like compilers, loaders and linkers. Application programming involves writing high-level programs for end users, like word processors, spreadsheets and games. It also discusses language processors and how they bridge the gap between how a problem is described and how it is implemented on a computer by translating between a source and target programming language. Language processors analyze source code based on lexical, syntactic and semantic rules, and synthesize target code by allocating memory and generating target instructions.