| Author |
Message |
Juhan Leemet
Guest
|
Posted:
Fri Nov 26, 2004 5:44 am Post subject:
Re: Systems software versus applications software definition |
|
|
On Thu, 25 Nov 2004 23:25:48 +0100, Andi Kleen 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
[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?
|
Sure, there are always counterexamples, like there is always sniping.
BTW, it is not my scheme. I attributed it to Datamation (from decades ago,
the prehistoric mainframe age, as many today seem to think of it?).
The much simplified table was just something to start (from nothing) to
get an understanding of the flavour of distinctions. Counter-examples
don't really help anyone understand anything, because there is not yet any
structure to counter with the example(s). Do you have any rules and/or
generalizations to help the OP? It does no good to say "complicated,
complicated, you couldn't possibly understand" when someone asks for help.
I would be inclined to "cheat" if/when trying to classify your
counter-examples, which still would not do them justice, but might lessen
the disparity. Most people would consider compilers to be system level
stuff: because they deal with interfaces? to device models? file systems?
in their generalities, and not for just one specific application. One
might even argue that they are kind of multi-user, in that they have to
solve a wide class of problems, using the same approach(es). In fact, they
are sort of multi-user in that programmers compile using each others
shared dynamic data (headers, libraries, etc.). Whatever...
BTW, I am not sure that an optimizing compiler is more complex than a
(good) operating system kernel. There's a lot of tricky stuff in both.
For the "incredibly complex problem" we should probably be careful. Are
they incredibly complex because scientific research is lacking? theory is
lacking? new paradigms have yet to be designed? That is no longer
"programming" as the OP was asking about. I consider programming to be the
design and implementation of generally known methods to specific problems.
Like implementing a random number generator for a specific application,
using one of Knuth's texts. Otherwise one is doing research (like for a
PhD, or for a "real" patent, not a software hoax). Wouldn't you agree? Not
trying to be insulting, but I would consider programming generally to
require cleverness, not genius. Otherwise, most of us would be unemployed.
However, your definitions may differ... How would you help the OP?
| 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.
|
Huh? What kind of libraries? What does that have to do with someone
wanting to control things (as opposed to wanting to control people). Why
does someone start programming? Certainly not to solve world hunger.
--
Juhan Leemet
Logicognosis, Inc. |
|
| Back to top |
|
 |
Richard Steiner
Guest
|
Posted:
Fri Nov 26, 2004 6:57 am Post subject:
Re: Systems software versus applications software definition |
|
|
Here in comp.lang.c,
"Alex McDonald" <alex_mcd@btopenworld.com> spake unto us, saying:
| Quote: | Systems programmers count in hex.
[Snip]
Application programmers count in decimal.
|
I count in octal -- what does that make me? :-)
--
-Rich Steiner >>>---> http://www.visi.com/~rsteiner >>>---> Smyrna, GA USA
OS/2 + eCS + Linux + Win95 + DOS + PC/GEOS + Executor = PC Hobbyist Heaven!
WARNING: I've seen FIELDATA FORTRAN V and I know how to use it!
The Theorem Theorem: If If, Then Then. |
|
| Back to top |
|
 |
Nick Landsberg
Guest
|
Posted:
Fri Nov 26, 2004 7:20 am Post subject:
Re: Systems software versus applications software definition |
|
|
Richard Steiner wrote:
| Quote: | Here in comp.lang.c,
"Alex McDonald" <alex_mcd@btopenworld.com> spake unto us, saying:
Systems programmers count in hex.
[Snip]
Application programmers count in decimal.
I count in octal -- what does that make me? :-)
|
Almost as old as I am?
NPL
--
"It is impossible to make anything foolproof
because fools are so ingenious"
- A. Bloch |
|
| Back to top |
|
 |
Juhan Leemet
Guest
|
Posted:
Fri Nov 26, 2004 9:33 am Post subject:
Re: Systems software versus applications software definition |
|
|
On Thu, 25 Nov 2004 20:57:44 -0500, Richard Steiner wrote:
| Quote: | Here in comp.lang.c,
"Alex McDonald" <alex_mcd@btopenworld.com> spake unto us, saying:
Systems programmers count in hex.
[Snip]
Application programmers count in decimal.
I count in octal -- what does that make me? :-)
|
antediluvian? (like me?)
FWIW, I seem to recall being able to multiply hex digits (rote memory, I
know) when I was crawling through IBM mainframe dumps as a uni student. I
had a professor who joked about how I was playing the front panel switches
of a PDP-8 "like a piano" when I toggled in the bootstrap loader. Ah...
p.s. hated octal, esp. on 8-bit byte machines like PDP-11 ! or VAX ?!?
--
Juhan Leemet
Logicognosis, Inc. |
|
| Back to top |
|
 |
Anne & Lynn Wheeler
Guest
|
|
| Back to top |
|
 |
Richard Steiner
Guest
|
Posted:
Fri Nov 26, 2004 11:07 am Post subject:
Re: Systems software versus applications software definition |
|
|
Here in comp.lang.c,
Juhan Leemet <juhan@logicognosis.com> spake unto us, saying:
| Quote: | On Thu, 25 Nov 2004 20:57:44 -0500, Richard Steiner wrote:
I count in octal -- what does that make me? :-)
antediluvian? (like me?)
|
Harumph!
| Quote: | p.s. hated octal, esp. on 8-bit byte machines like PDP-11 ! or VAX ?!?
|
It works very well in the 36-bit word-oriented environment I still play
in at work, though. 9-bit ASCII bytes. :-)
--
-Rich Steiner >>>---> http://www.visi.com/~rsteiner >>>---> Smyrna, GA USA
OS/2 + eCS + Linux + Win95 + DOS + PC/GEOS + Executor = PC Hobbyist Heaven!
WARNING: I've seen FIELDATA FORTRAN V and I know how to use it!
The Theorem Theorem: If If, Then Then. |
|
| Back to top |
|
 |
Guest
|
Posted:
Fri Nov 26, 2004 11:14 am Post subject:
Re: Systems software versus applications software definition |
|
|
jrefactors@hotmail.com (Matt) writes:
| 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!!
|
Well, our prof. counted couples of software to be the system level:
0. Operating Systems.
1. Sofwares which widely use system calls. (socket is a kind of system
call, and thats why we talk about web servers as system softwares)
2. Compilers and interpreters.
hopes it helps.
--
Lin Mi (Rin Fuku)
Faculty of Environmental Information
Hagino-Hattori Laboratory
Keio University. |
|
| Back to top |
|
 |
dandelion
Guest
|
Posted:
Fri Nov 26, 2004 1:59 pm Post subject:
Re: Systems software versus applications software definition |
|
|
"Richard Steiner" <rsteiner@visi.com> wrote in message
news:Y2opBpHpvStZ092yn@visi.com...
| Quote: | Here in comp.lang.c,
"Alex McDonald" <alex_mcd@btopenworld.com> spake unto us, saying:
Systems programmers count in hex.
[Snip]
Application programmers count in decimal.
I count in octal -- what does that make me? :-)
|
obsolete? |
|
| Back to top |
|
 |
Nick Maclaren
Guest
|
Posted:
Fri Nov 26, 2004 2:39 pm Post subject:
Re: Systems software versus applications software definition |
|
|
In article <m3d5y1d0r7.fsf@averell.firstfloor.org>,
Andi Kleen <freitag@alancoxonachip.com> wrote:
| Quote: |
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 is internal complexity and interface complexity, and it is
the latter that generally causes more trouble, needs more design,
and usually gets less of both.
The most optimising compiler has very little more interface complexity
than a basic compiler, and the interface can be anything from simple
to fiendishly complex, depending. For example, under IA-64, it is
necessarily at least of medium complexity.
Similarly, a kernel for some of the more extreme microkernel system
designs can be very simple, both internally and at its interface,
but one for POSIX and derivatives necessarily has a fiendish
interface complexity.
Regards,
Nick Maclaren. |
|
| Back to top |
|
 |
Chris Croughton
Guest
|
Posted:
Fri Nov 26, 2004 3:59 pm Post subject:
Re: Systems software versus applications software definition |
|
|
On Thu, 25 Nov 2004 23:25:48 +0100, Andi Kleen
<freitag@alancoxonachip.com> 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
[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.
|
Yes, it would, because that is the definition. A multi-user
state-of-the-art optimizing compiler would be three times as difficult
as a standalone one, a compiler which had to handle hardware
('compiling' directly into an ASIC for instance) would be about the
same, etc.
| Quote: | There are probably lots of other counter examples. How about a single-user
application that solves some incredibly complex problem?
|
Same thing. The multi-user version of that would be three times as
hard (probably worse, having worked on some distributed applications).
| 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.
|
Well, he's right in that sense, when we program we do indeed want to
make the machine do what we want, and we get annoyed when they don't do
it, which is pretty much the definition of "control freak". I get
especially annoyed when libraries don't do what they say they are
supposed to do...
(Note followups and override if desired)
Chris C |
|
| Back to top |
|
 |
Andi Kleen
Guest
|
Posted:
Fri Nov 26, 2004 4:03 pm Post subject:
Re: Systems software versus applications software definition |
|
|
nmm1@cus.cam.ac.uk (Nick Maclaren) writes:
| Quote: | In article <m3d5y1d0r7.fsf@averell.firstfloor.org>,
Andi Kleen <freitag@alancoxonachip.com> wrote:
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 is internal complexity and interface complexity, and it is
the latter that generally causes more trouble, needs more design,
and usually gets less of both.
|
The interface of a compiler is much more complex than
the input language and the command line options.
An optimizing compiler consists of many passes that talk to each other
using complex data structures and even a special intermediate
language. Or rather multiple ones when the program is step by step
lowered to machine language. The "interface complexity" between these
passes is quite high. Since it is a big enough project that it likely
needs to be written by multiple persons or even multiple groups the
interfaces must be well defined and documented too. Another similar
case would be to write a new backend for a existing compiler to port
it to a new architecture or new frontend to reuse an existing
optimizer and backend. All of this involves dealing with very
complex interfaces.
-Andi |
|
| Back to top |
|
 |
Chris Croughton
Guest
|
Posted:
Fri Nov 26, 2004 4:04 pm Post subject:
Re: Systems software versus applications software definition |
|
|
On Thu, 25 Nov 2004 20:57:44 -0500, Richard Steiner
<rsteiner@visi.com> wrote:
| Quote: | Here in comp.lang.c,
"Alex McDonald" <alex_mcd@btopenworld.com> spake unto us, saying:
Systems programmers count in hex.
[Snip]
Application programmers count in decimal.
I count in octal -- what does that make me? :-)
|
Old, like me <g>.
(If I'm counting on my fingers I use Gray code...)
Chris C |
|
| Back to top |
|
 |
wolfgang kern
Guest
|
Posted:
Fri Nov 26, 2004 4:15 pm Post subject:
Re: Systems software versus applications software definition |
|
|
Matt asked:
| 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...?
I see two main parts of 'system' code, the first covers all the
hardware needs (the drivers).
The other part holds OS/FS-specific code and it depends on the
'security level' of an OS, which functions are to be protected
from user- and/or admin-access and included in the system.
Network protocols are well known in detail, so there are many
different web-browser applications around, even they just call
system functions for password-cache and connection.
Compilers often just use API-functions and libraries for a
certain target-OS/CPU pair and are limited to user level,
but a few tools also allow to write 'unprotected' system code.
| 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'd name it as the level of being paranoid for security :)
| 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.
If you don't mean 'net-linkers' within an GP-OS like windoze:
I have no experience with web-servers, but I think they would be
well advised to use their very own system rather than a GP-Os.
__
wolfgang
http://web.utanet.at/schw1285/KESYS/index.htm |
|
| Back to top |
|
 |
Nick Maclaren
Guest
|
Posted:
Fri Nov 26, 2004 4:59 pm Post subject:
Re: Systems software versus applications software definition |
|
|
In article <m3ekigc1o6.fsf@averell.firstfloor.org>,
Andi Kleen <freitag@alancoxonachip.com> writes:
|> nmm1@cus.cam.ac.uk (Nick Maclaren) writes:
|>
|> >>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 is internal complexity and interface complexity, and it is
|> > the latter that generally causes more trouble, needs more design,
|> > and usually gets less of both.
|>
|> The interface of a compiler is much more complex than
|> the input language and the command line options.
Of course. I was primarily referring to the external interfaces,
but they include the code generated, the calling conventions, the
object file formats and so on.
|> An optimizing compiler consists of many passes that talk to each other
|> using complex data structures and even a special intermediate
|> language. ...
Yes, but at least that is within a single product. It gets much
hairier (managerially and technically) when the interfaces are
between separate products, perhaps even developed by separate
organisations.
Regards,
Nick Maclaren. |
|
| Back to top |
|
 |
Wayne Woodruff
Guest
|
Posted:
Fri Nov 26, 2004 5:44 pm Post subject:
Re: Systems software versus applications software definition |
|
|
| Quote: |
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"
|
Well, as chips become more and more complex, the embedded people who
deal directly with the hardware need to learn the "personality" of the
chip, e.g. how various register settings affect each other and which
register combinations do not work, etc. Some of these chips have
hundreds of registers, each bit controlling a different aspect. It
can be quite a challenge to learn the chip.
I can be fascinating to work at this level.
Wayne Woodruff
http://www.jtan.com/~wayne |
|
| Back to top |
|
 |
|
|
|
|