Matt said:
How do we define systems programs? when we say systems
programming,
does it necessary mean that the programs we write need to
interact
with hardware directly? For example, OS, compiler, kernel,
drivers,
network protocols, etc...? Couple years ago, yes, I understand
this is
definitely true. However, as the software applications become
more and
more complicated, some people try to argue that. Some people
argue the
definition of systems programs depend on the level of
abstractions. I
heard people saying that web server is a systems software,
which I
feel confused. I think web server is an application software.
Yes,
other applications run on top of web server.
Please advise and discuss. thanks!!
Best start with the people rather than the end product. Now...
Systems programmers dislike end users. Users need software. Ergo
if the user specifies it, the systems programmer won't write it;
the application programmer does that.
Systems programmers only write programs for themselves or other
systems programmers. Rarely they will write programs to support
applications, but only under protest at the inefficency of the
applications running on their finely crafted code accessible only
from the command line. Systems programmers count in hex.
Application programmers like end users, and are only too
delighted to use a mouse to create a GUI. Efficency isn't a
primary consideration as long as the interface has shaded buttons
and the bitmaps look good together. Application programmers count
in decimal.
Systems programmers tend to eat high fat sugary foods, keep odd
hours and often have poor hygiene because they work alone and
rarely need to spruce up to attend meetings. None aspire to
management. Dyslexia, deafness and atrocious handwriting using
blunt pencils or leaky biros are common. Spell checkers are never
used, as word processors are considered applications. Large
stretches of the code they write are uncommented. Comments are
mainly for the amusement of other systems programmers, or to
illustrate a particularly clever technique. Variables are
normally named i or j, occasionally x and y; function names
contain the words foo and bar, very often together.
Application programmers prefer quiche and salads, work regular
hours and brush up regularly for the large numbers of meetings
with large numbers of other application programmers. Most have
management aspirations. All can handle a pen without inking their
fingers, are attentive, and can spell long words like
specification and acceptance criteria without using a spell
checker. All use a spell checker anyway, just in case. They write
code with comments on every line, and use simple techniques in
case they fall out of favour with management and are asked to do
maintenance. Variable names are often mistaken for comments, so
comments are coloured differently to avoid confusion, and the
word Variable is added to the end of the name just to make sure.
Function names normally contain the words Report or Total or
Function, very often together. They too are colour coded.
Systems programs are the things written by systems programmers.
Will that do?