On 05/14/2018 04:34 AM, bol...@cylonHQ.com wrote:
> On Sat, 12 May 2018 13:51:58 -0700 (PDT)
>
james...@alumni.caltech.edu wrote:
>> On Wednesday, May 9, 2018 at 11:12:27 AM UTC-4,
bol...@cylonhq.com wrote:
>> The key issue isn't the meaning of "standard", but the meaning of
>> "language". In context, I would assume that "language standard
>> libraries" refers to libraries whose existence is mandated by a
>> language standard, such as the C and C++ standards, both of which
>> mandate the existence of libraries. With that interpretation, neither
>> the Win32 nor the POSIX APIs qualify. I'm curious - what role did you
>> understand the term "language" to play in that context, or did you
>> simply ignore it?
>
> The posix API libraries come with every C/C++ compiler installed on every
> unix system since god knows when. IMO that makes them standard.
Well, of course:
"In the late 1980s, an open operating system standardization effort now
known as POSIX provided a common baseline for all operating systems;
IEEE based POSIX around the common structure of the major competing
variants of the Unix system, publishing the first POSIX standard in
1988. In the early 1990s, a separate but very similar effort was started
by an industry consortium, the Common Open Software Environment (COSE)
initiative, which eventually became the Single UNIX Specification (SUS)
administered by The Open Group. Starting in 1998, the Open Group and
IEEE started the Austin Group, to provide a common definition of POSIX
and the Single UNIX Specification, which, by 2008, had become the Open
Group Base Specification."
<
https://en.wikipedia.org/wiki/Unix#Standards>
So it's not particularly odd that unix systems have POSIX API libraries.
And, as I said above, there's nothing wrong with calling the "Open Group
Base Specification" a standard. However, it's an OPERATING SYSTEM
standard. C and C++ have LANGUAGE standards, which is a very different
thing. There's plenty of implementations of C and C++, targeting
platforms that don't conform to the Open Group Base Specification, which
therefore do not provide POSIX API libraries. which doesn't prevent them
from fully conforming to the relevant LANGUAGE standard, because those
libraries are not LANGUAGE standard libraries. It's the distinction
between operating system standard libraries and language standard
libraries that you have refused to acknowledge. The meaning of
"standard" has nothing to do with what's wrong with your statements.
Also, you seem to have the connections between those standards somewhat
backwards. The current version of the Open Group Base Specification
describes a command line utility named C99 which "shall accept source
code conforming to the ISO C standard" (a requirement that is far less
constraining than it might appear to be - but I won't go into that).
Previous versions of the standard(s) called it C89, and the standard
explicitly promises that it will exist in future versions of the
standard with a name that reflects (in a currently unpredictable manner)
changes to the C standard.
Despite nominally having been unified, the "Open Group Base
Specification" has several varieties of optional features, and as a
result, has the following to say about c99:
"On systems providing POSIX Conformance (see XBD Conformance), c99 is
required only with the C-Language Development option; XSI-conformant
systems always provide c99."
Therefore, a system that conforms to the Open Group Base Specification,
but is not XSI-conformant, or which conforms to POSIX without the
C-Language Developement option, need NOT provide C99. And the Open Group
Base Specification doesn't even mention C++, so any C++ standard
libraries that you happen to find on a unix system are not POSIX API
libraries
>>> ... Try writing anything useful in C/C++ on those OS's without them.
>>
>> I've tried it - it's not very difficult. I've spent most of the last 22
>> years writing C code that makes little or no use of POSIX-specific
>> features (because it has no need to) or Win32 (because it wasn't being
>
> So in other words you have written anything particularly complex since you
> won't have created or read directories or other filesystem operations more
> complex than file I/O, you won't have written any networking code, any code
> that involves multi process or multi threading , any memory management more
> complex than malloc or new, regular expressions, signals pipes, timing blah
> blah blah.
>
> But I'm sure it was a fantastic Hello World program that you ended up with.
"They", not "it" - I'm not describing a single program, but many
different programs. I'm not sure "fantastic" would apply, but they do a
lot more than "Hello World". They run 24/7 on thousands of different
systems located in the Goddard Space Flight Center, processing data
transmitted to the ground that was collected by the MODIS instruments on
the Terra and Aqua satellites, and by the VIIRS instruments on the Suomi
NPP and NOAA-20 satellites. They read input files, reformat the data and
perform calculations based upon the data, writing the reformatted and
newly calculated data to output files. Portability of the files is
handled mainly by a third-party library that I'm required to use, which
is built on top of XDR. The directories are created and destroyed by the
production system. There's no GUI code, or indeed any kind of user
interface - the operators use a GUI to control the production system,
but my programs interact only with the production systems, through their
command lines, file I/O, and return status. There's no networking code,
no multi-processing or multi-threaded code. Text processing is
completely negligible and has no need of internationalization.
It's just pure data processing, for which I have no need (and no
permission!) to go outside the range of facilities provided by pure C or
C++ and POSIX. I'm explicitly prohibited from using large parts of the
POSIX API, so as to prevent my programs from interfering with use of
those same facilities by the production system. But it's an awful lot of
data processing.
I'm well aware of the existence of many other kinds of programming very
different from what I'm doing - but programming like what I'm doing is
still very much alive. My programs constitute only a small fraction of
all the programs that run under the production systems I described;
there's hundreds of other programs built to operate under the same
restrictions, written by thousands of other programmers, and there's
many other production systems all over the world that are similarly
designed. Were you aware of that fact?