| Author |
Message |
Matt
Guest
|
Posted:
Thu Nov 25, 2004 5:00 am Post subject:
Systems software versus applications software definitions |
|
|
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!! |
|
| Back to top |
|
 |
Gordon Burditt
Guest
|
Posted:
Thu Nov 25, 2004 5:26 am Post subject:
Re: Systems software versus applications software definition |
|
|
| Quote: | How do we define systems programs?
|
comp.lang.c does not.
| Quote: | when we say systems programming,
does it necessary mean that the programs we write need to interact
with hardware directly?
|
That term does not have a precise definition and there is not
a sharp line between systems and applications programming.
The line gets particularly fuzzy when you are talking about
computers embedded into other devices, like cell phones.
No, I'd consider a lot of the low-level network stuff like the
TCP stack to be systems programming, even if it's not specific
to a particular type of network hardware (and there may not BE
any specific network hardware beyond a serial port. There are
also "tunnel drivers" which have a network stack but don't
actually use any hardware at all).
| Quote: | 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.
|
The video driver in Microsoft Windows probably calls Internet
Explorer to actually access the hardware :-( In any case, Microsoft
claims IE is so tightly bound into the OS you can't remove it.
I think they said that under oath in court, too.
| Quote: | I think web server is an application software. Yes,
other applications run on top of web server.
|
I consider the web server in my VOIP terminal adapter to be systems
programming, in large part because it is burned into flash and is
used to configure the adapter. The same thing applies to the Web
Management Card (which runs a web server, SNMP server, and a few
other things) that plugs into my APC UPS, for much the same reason.
On the other hand, Apache running on my PC I consider to be an
application (which, as you said, has other applications running
under it, like PHP and under that various web pages which do various
things, like present an index of my CD collection.)
Gordon L. Burditt |
|
| Back to top |
|
 |
Matej Barac
Guest
|
Posted:
Thu Nov 25, 2004 5:41 am Post subject:
Re: Systems software versus applications software definition |
|
|
On 24 Nov 2004 16:00:55 -0800, Matt wrote:
| Quote: | 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!!
|
I personally would say programming an application is getting easier with
time (C#, Java, VB,...). Hardly anyone still bothers with Assembly...
On the topic, for me a system program is the one that either a) interact
with the hardware directly (and are written on a very low level) or b)
interacts with the OS on a low level (PartitonMagic for example). |
|
| Back to top |
|
 |
Matej Barac
Guest
|
Posted:
Thu Nov 25, 2004 5:44 am Post subject:
Re: Systems software versus applications software definition |
|
|
On 25 Nov 2004 00:26:42 GMT, Gordon Burditt wrote:
| Quote: | The video driver in Microsoft Windows probably calls Internet
Explorer to actually access the hardware :-( In any case, Microsoft
claims IE is so tightly bound into the OS you can't remove it.
I think they said that under oath in court, too.
|
Kind of off topic, but... IE can be "safely" removed from the OS. |
|
| Back to top |
|
 |
dandelion
Guest
|
Posted:
Thu Nov 25, 2004 1:36 pm Post subject:
Re: Systems software versus applications software definition |
|
|
"Matej Barac" <matej.barac@gmail.com> wrote in message
news:1n2dr5jnqmban.1cfiq99vaoyl7.dlg@40tude.net...
| Quote: | On 24 Nov 2004 16:00:55 -0800, Matt wrote:
|
<snip>
| Quote: | I personally would say programming an application is getting easier with
time (C#, Java, VB,...). Hardly anyone still bothers with Assembly...
|
Unless, of course you are into embedded software, where it's (on a regular
basis) neccesary in order to implement ISR's (for one instance). Also
implementing support for many CPU/HW features can hardly do without.
<snip> |
|
| Back to top |
|
 |
CTips
Guest
|
Posted:
Thu Nov 25, 2004 4:29 pm Post subject:
Re: Systems software versus applications software definition |
|
|
Matt wrote:
| Quote: | 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!!
|
I'd say that system software generally shares the following characteristics:
- its performance sensitive
- it has some dependence on hardware
Now, kernel + compiler definitely satisfy both these two requirements,
network protocol stacks mostly the first, drivers mostly the second. |
|
| Back to top |
|
 |
Jan Vorbrüggen
Guest
|
Posted:
Thu Nov 25, 2004 7:34 pm Post subject:
Re: Systems software versus applications software definition |
|
|
| Quote: | I'd say that system software generally shares the following
characteristics:
- its performance sensitive
- it has some dependence on hardware
|
I would disagree. For me system software is more or less equivalent to
being part of the trusted computing base, with the more or less implied
side effect that if something unexpected goes wrong with it, you need to
crash the system. Handling hardware is only part of that, and there are
scenarios where you can have software driving hardware directly without
being part of the TCB - rare, but it has happened. Performance - sure,
you would want that, but correctness is top priority. As a counterpoint,
how many OSs have you seen that have been compiled with optimization for
the particular processor model they will run on?
Jan |
|
| Back to top |
|
 |
Matt
Guest
|
Posted:
Thu Nov 25, 2004 7:52 pm Post subject:
Re: Systems software versus applications software definition |
|
|
Hi Matt, I'm Matt too,
Great question, I always wondered that too. I met an embedded programmer in
San Diego years ago. He said the more down to the hardware level he got, the
more exciting it was. Also maybe somebody could explain this, I've seen a
lot of mainframe positions advertised as "system programmer"
Matt
"Matt" <jrefactors@hotmail.com> wrote in message
news:ba8a039e.0411241600.3d00f9a1@posting.google.com...
| Quote: | 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!! |
|
|
| Back to top |
|
 |
Anne & Lynn Wheeler
Guest
|
Posted:
Thu Nov 25, 2004 8:53 pm Post subject:
Re: Systems software versus applications software definition |
|
|
Jan Vorbrüggen <jvorbrueggen-not@mediasec.de> writes:
| Quote: | I would disagree. For me system software is more or less equivalent
to being part of the trusted computing base, with the more or less
implied side effect that if something unexpected goes wrong with it,
you need to crash the system. Handling hardware is only part of
that, and there are scenarios where you can have software driving
hardware directly without being part of the TCB - rare, but it has
happened. Performance - sure, you would want that, but correctness
is top priority. As a counterpoint, how many OSs have you seen that
have been compiled with optimization for the particular processor
model they will run on?
|
when i did the resource manager ... there was something like 2000
(automated) tests that took 3 months elapsed time to run as part of
calibrating and verifying the resource manager.
http://www.garlic.com/~lynn/subtopic.html#bench
the standard system maint. process was monthly update (patch?)
distribution called PLC (program level change). It would ship the
cumulative source updates as well as the executable binaries.
I was asked to put out monthly PLC for the resource manager on the
same schedule as the standard system PLC. I looked at the process, and
made a counter-offer of quarterly PLC for the resource manager
.... since I would have to take all the accumulated patches (for the
whole system) and rerun some significant number of the original
validation suite .... and there just weren't the resources to do that
on a monthly basis.
http://www.garlic.com/~lynn/subtopic.html#fairshare
http://www.garlic.com/~lynn/subtopic.html#wsclock
reference to the original resource manager product announcement
http://www.garlic.com/~lynn/2001e.html#45
note that much of the bits & pices that was in the resource manager
had been available in earlier kernal ... but were dropped over period
years. it was eventually decided to collect them up and package them
as a separate distribution.
this was in the period of some transition from free to charged for
software. at the time, there had been soem distinction that
application software could be charged for ... but kernel/system
software (as part of supporting the machine) was free.
the resource manager got to be the guinee pig for the first charged
for kernel software component ... with a new distinction that kernel
software that was directly related to hardware software would still be
free ... but other types of kernel software could be charged for.
a interesting paradox then showed up for the next release. the
resource manager shipped with the release prior to the release that
shipped smp support.
http://www.garlic.com/~lynn/subtopic.html#smp
however much of the SMP design and implementation was predicated on
various features that were part of the resource manager. the problem
was that SMP support was obviously directly supported hardware and
therefor was free ... but now had integral dependancies on features in
the resource managere ... which was priced.
--
Anne & Lynn Wheeler | http://www.garlic.com/~lynn/ |
|
| Back to top |
|
 |
Juhan Leemet
Guest
|
Posted:
Fri Nov 26, 2004 1:02 am Post subject:
Re: Systems software versus applications software definition |
|
|
On Thu, 25 Nov 2004 14:52:10 +0000, Matt wrote:
| Quote: | Hi Matt, I'm Matt too,
Great question, I always wondered that too. I met an embedded programmer in
San Diego years ago. He said the more down to the hardware level he got, the
more exciting it was. Also maybe somebody could explain this, I've seen a
lot of mainframe positions advertised as "system programmer"
|
I remember seeing a nice little table in Datamation many years ago:
relating the approximate difficulty of implementing software:
| single-user multi-user
----------------+----------------------------
application | 1 3
system | 3 9 <== HARDEST
[Dunno if that survived formatting?]
One may quibble with the numbers, but they are roughly representative. The
simplest thing to program is a little application, just for yourself. If
one uses that as a reference, then it is very roughly 3x harder to write
something that is multi-user (simultaneously) or system level. The most
complex is something that is both system level and multi-user (like an
operating system kernel). I had to scratch my head to think of what would
be single user system type software? I guess that could be a simple (not
multi-user) interface or driver (like a single serial or parallel port?
locked for exclusive use?) or perhaps some embedded software which does
only one thing (while dealing with the real world, interrupts, etc.). The
foreground/background control applications we used to write for DEC
PDP-11s under the RT-11 O/S (er, actually more like a program launcher
like CP/M) might be an example of that kind of thing (or CP/M "drivers"?).
The hardest thing to write (and get right) is a multi-user system level
software, like the Linux kernel, or on mainframes a transaction processing
monitor like CICS or even virtual terminal handling stuff like VTAM. Now
among the hardest of the hard, some are harder than others, so 9x
multiplier in the table is to be taken with appropriate grains of salt.
Anyway, that comparison table has helped my thinking.
As for "getting closer to the hardware"? Sounds like a control freak. I
guess anyone that likes to program (make machines do what you instruct
them to) is a control freak to some extent. Personally, I think we might
not be as extreme as some Skinnerian psychologists that I have known.
| Quote: | "Matt" <jrefactors@hotmail.com> wrote in message
news:ba8a039e.0411241600.3d00f9a1@posting.google.com...
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.
|
I would say a web server is typically a multi-user application. You could
write a single thread server that handles only one request (some tiny
embedded microcomputers have this), but then what is it supposed to do if
more than one request comes in? A real web server, with performance
enhancements should be designed multi-user, able to handle multiple
requests (pseudo)simultaneously. That is more complex than single-user,
maybe equivalent to simpler system level (i.e. not kernel) programming.
| Quote: | Please advise and discuss. thanks!!
|
Starting to smell like homework?
--
Juhan Leemet
Logicognosis, Inc. |
|
| Back to top |
|
 |
Nick Roberts
Guest
|
Posted:
Fri Nov 26, 2004 1:05 am Post subject:
Re: Systems software versus applications software definition |
|
|
"Matt" <jrefactors@hotmail.com> wrote in message
news:ba8a039e.0411241600.3d00f9a1@posting.google.com...
| Quote: | 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!!
|
I would define 'application software' as the programs which actually
directly do something which is actually useful to the user. This might be
formatting and printing a document, calculating the results in a
spreadsheet, or it may be compiling a program (if the user is in fact a
programmer). But I'd say it doesn't include, for example, a program for
setting the modem transmission speed, since this isn't really doing anything
directly useful to user (normally).
The 'system software' comprises all the programs (or modules or other bits
of software) necessary to enable the applications software to work.
Of course, there will be some programs which don't obviously fit into either
category. For example, what about Windows Explorer or an equivalent program?
Is file manipulation directly useful to the user? Not really; but it is,
sort of. So I think that's the kind of program which occupies a grey area
between 'application' and 'system'.
Obviously, this is a rough definition, but I don't think a more precise
definition would be appropriate.
--
HTH
Nick Roberts
[Cross-posted: comp.software-eng, comp.lang.c, comp.programming,
alt.os.development, comp.arch] |
|
| Back to top |
|
 |
Alex McDonald
Guest
|
Posted:
Fri Nov 26, 2004 1:24 am Post subject:
Re: Systems software versus applications software definition |
|
|
"Matt" <jrefactors@hotmail.com> wrote in message
news:ba8a039e.0411241600.3d00f9a1@posting.google.com...
| Quote: | 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?
--
Regards
Alex McDonald |
|
| Back to top |
|
 |
Anne & Lynn Wheeler
Guest
|
|
| Back to top |
|
 |
Andi Kleen
Guest
|
Posted:
Fri Nov 26, 2004 3:25 am Post subject:
Re: Systems software versus applications software definition |
|
|
Juhan Leemet <juhan@logicognosis.com> writes:
| Quote: |
I remember seeing a nice little table in Datamation many years ago:
relating the approximate difficulty of implementing software:
| single-user multi-user
----------------+----------------------------
application | 1 3
system | 3 9 <== HARDEST
[Dunno if that survived formatting?]
One may quibble with the numbers, but they are roughly representative. The
|
I would consider a state-of-the-art optimizing compiler to be of equal or higher
complexity than a kernel. But it would be 1 in your scheme.
There are probably lots of other counter examples. How about a single-user
application that solves some incredibly complex problem?
| Quote: | As for "getting closer to the hardware"? Sounds like a control freak. I
guess anyone that likes to program (make machines do what you instruct
them to) is a control freak to some extent. Personally, I think we might
|
If that was true then libraries would be a lot less popular than they are.
-Andi |
|
| Back to top |
|
 |
Juhan Leemet
Guest
|
Posted:
Fri Nov 26, 2004 5:28 am Post subject:
Re: Systems software versus applications software definition |
|
|
On Thu, 25 Nov 2004 14:31:20 -0700, Anne & Lynn Wheeler wrote:
| Quote: | Juhan Leemet <juhan@logicognosis.com> writes:
I remember seeing a nice little table in Datamation many years ago:
relating the approximate difficulty of implementing software:
| single-user multi-user
----------------+----------------------------
application | 1 3
system | 3 9 <== HARDEST
i've frequently claimed that to take a straight forward written
application and turn it into a "service" ... it takes 4-10 times the
code and ten times the work.
|
Thanks, that puts some meat on the bones.
Some interesting stuff there. You folks been busy!
--
Juhan Leemet
Logicognosis, Inc. |
|
| Back to top |
|
 |
|
|
|
|