When software designers write software (for the Unix/Linux/OSX worlds), they want it to run in as many environments as possible, and with a minimum of fuss. (
Read:
expen$e!)
Their software might find itself running on a Windows machine, a Macintosh, a Linux computer, an IBM Mainframe, or a
##CLASSIFIED## (no kidding...), and the designers simply want it to "just work" in all cases.
So... the software development community builds
libraries that "do all sorts of useful things," and they "port" those libraries to all the various environments (including
##CLASSIFIED##) where they need to be able to "do all of these sorts of useful things."
In all of these various environments, these libraries present exactly the same,
consistent, "friendly face" to every application program that comes calling. Their
implementation, from one particular set of hardware to another (and from one operating system to another!) will of-course "be totally different," but the very-essential point is: because of the library,
the application program does not have to care!
Quote:
"Oh... 'this' library-function is implemented by 'that' system-call on 'that' particular piece of hardware? Uhh... cool!"
"And your point is???"
"Isn't the name of this game that I do not have to care about 'this' particular piece of hardware...?"
|
If the application directs all of its requests only to "the library," and is able to take for granted that "the library" exists, and that it is properly installed for whatever environment (including
##CLASSIFIED##) it happens to be running in, then ... "it 'just works.'"
And
that, I assure you, saves
many hair-follicles!
Remember: Linux, right out of the box, runs on
more than twenty distinctly-different varieties of (non-
##CLASSIFIED##...) hardware!
