[ snip quoted signature ]
We have to read this post in conjunction with your stunning level of
ignorance about computer science and lack of real qualifications, Mr.
Seebach:
1. The "heap" is NOT an MS-DOS artifact
Did he ever actually say it was? Well, perhaps I don't understand
what you mean by "artifact" here. What Seebs actually said, in his
Web page critiquing Schildt's book(s), was that "heap" was "a DOS
term", and he clarified in message ID
<
[email protected]>
as follows:
None of that strikes me as a display of "stunning ignorance". ?
It is in fact a display of stunning ignorance, because the C language
standard, as opposed to a textbook, is silent on how to implement C.
This is in part what a standard should be (although a mathematical
intuitionist would say that it's a good idea to define things
"constructively", and the rough equivalent in programming is defining
a language by means of a reference interpreter).
It is also a conscious decision of the standards team. I believe it
was a pretense of scientific asceticism (deliberately eliminating
discourse in a half-understood application of Ockham's razor) where
the real agenda was corporate (preserving the profits of vendors).
TW Adorno (a sociologist) noticed how this asceticism actually works
and is used in organizations. The Socratic pose (of knowing nothing)
is easy if you're in fact ignorant (let's say a psych major who
decided to enter programming not having taken ANY computer science
classes, and unwilling to rectify that aporia):
"The more intelligent of them have an inkling of what ails their
mental faculties, because the symptoms are not universal, but appear
in the organs, whose service they sell. Many still wait in fear and
shame, at being caught with their defect. All however find it raised
publicly to a moral service and see themselves being recognized for a
scientific asceticism, which is nothing of the sort, but the secret
contour of their weakness. Their resentment is socially rationalized
under the formula: thinking is unscientific."
The C standards people were in fact unable to create a new form of C
with sensible semantics. But in their "fear and shame" they were
reassured that they could pose as "scientific ascetics" who wouldn't
have to define how C actually works. They wouldn't have to forbid left
to right, random, or right to left evaluation of procedure parameters.
Thinking is after all "unscientific", especially in corporations,
since it might be disruptive.
Unfortunately, this doesn't help working programmers at all to
understand how C works, and Schildt was rectifying this by giving a
concrete example of how C would work. Because Seebach had NO computer
science education, and little math, he did not realize that in CS as
in a math class, concrete examples have to be used.
Furthermore, the "heap" is just not a DOS term. Seebs' statement was
factually inaccurate and highly misleading and much worse than
anything in Schildt.
Are you using the term "atomic semaphores" to mean something different
from semaphores as proposed by Dijkstra and discussed in textbooks on
operating systems? Just curious.
I'm also curious about why an operating system has to implement
semaphores, as opposed to some other synchronization mechanism --
or perhaps you're using "semaphores" here in a rather generic
sense that would include equivalent mechanisms such as monitors
(as proposed by Hoare and Brinch Hansen)?
This is not an area of my expertise. However, I would not say that
Windows and Linux are wildly divergent at the computer scientific
level. Just as we've seen that SOME form of stack is implied by
function call, some form of semaphore lock is needed when multiple
processes are accessing memory.
The idea that "there might be wildly divergent forms of science" is
basically the sort of break room fantasies that half- and un- educated
programmers are fond of.