is the development of software which makes a computer usable for application programmers: SystemsSoftware
. It includes development of the operating system, compilers and interpreters, editors, database management systems, web servers, etc.
As distinct from application programming, which makes a computer usable for end users.
Not as much SystemProgramming
is done these days compared to the past, so there much less in the way of software diversity (e.g. only two OperatingSystems
have significant market share nowadays).
Rather, there is both more SystemProgramming and ApplicationProgramming? done today than there has ever been before, due to the wide spread of computers (both large and small) into all corners of our lives. Mainframes, workstations, and PCs for which one writes applications are considered a zero volume market compared to embedded computers.
s are more suitable for systems programming. These languages are characterized by low overhead and ability to escape to the machine level when necessary (I/O ports, machine words, possibly inline assembly).
Q: "How does systems software differ from application software"
A: For one, CPU performance is usually less of an issue. The number of total users per line of code is generally much smaller such that there is less economic pressure to worry about performance and resources. If you sell a product to tens of thousands, then optimization makes a bigger difference. The bottleneck for custom apps tends to be the network, not CPU. Further, the different ways the software will be used is smaller with custom apps. If you make an interpreter, for example, you have no idea what kind of programs people are going to write for it, and thus cannot assume that say lists are used more than arrays or vise verse. But with custom apps you generally know the usage profiles, and thus can skip detailed optimization of many parts. If they have 500 customers today, its a safe bet that they are not going to suddenly have 20k. You wait until it looks like there will be mass growth before optimizing it for mass customers. --top
This may represent a tendency, but it is hardly a distinguishing characteristic. Plenty of systems software is not dependent on CPU performance; likewise, many end-user applications are.
I usually hear it pronounced as "systems programming" (plural).