David Brown said:
On 27/04/13 02:49, Tim Rentsch wrote:
[snip all but...]
I made a specific point about /small/ embedded systems. I didn't
define "small embedded systems" here, but Linux (or other OS's
capable of calling independent programs) do not count as "small" -
"small" system programs are free-standing rather than hosted.
I think you misunderstand what these terms mean as the Standard
defines them. A Linux kernel is a freestanding program, or more
accurately, it is compiled to run in a freestanding environment.
A Linux kernel is every bit as much a freestanding program, as
far as the Standard is concerned, as 47 byte programs running on
bare 8-bit processors with 256 bytes of RAM.
Yes, I realise that. But I think I was a little unclear here -
programs running under Linux are "big" (by my intentionally vague
definition) and "hosted" (by more rigid Standard definition),
while the kernel itself is "big" and "free-standing". My
distinction between "small" and "big" is more about the resources
available to the program, and the types of concerns you have when
creating efficient programs. Usually it is enough to simply talk
about "small" or "big" without defining any details.
It's rather maddening when someone understands what certain
words mean but won't make the effort to use them appropriately
or express what they mean accurately. The situation you mean to
talk about has nothing to do with embedded versus freestanding,
nor in fact "big" versus "small", but whether the hardware
environment is severely resource constrained for the program
in question. Say so.
I use "big" and "small" in reference to embedded systems (or rather,
the programs running on them). The terms are intentionally vague -
/I/ know they are vague, and I think it's clear to readers that they
are vague. I would rather use such terms rather than something that
has a clear definition (such as "freestanding" vs. "hosted" -
although in the embedded world, that is not clear-cut either). And
the term "resource constrained" /sounds/ like a nice solid term -
but does not say anything about which resources are constrained, and
in what way. I have worked with systems that I call "small",
despite having far more processor speed or memory than older PC's -
which are "big".
When I want to be specific, such as "on 8-bit systems" or "on
systems with expensive pointer handling" or "on systems where
dynamic memory is not allowed", then I try to do so. But for
general points, where there is no clear line, I don't want to draw
lines - all I want is an indicator of size.