Joe said:
OK, so two of you have just contradicted me sarcastically, which means
my post must have been wrong. In other words, there ARE ways to find
and fix race conditions with without using a language like Occam.
What are they, and where can I read up on them?
Sarcasm for sarcasm - if you set it up, don't be too astonished to receive it
back.
But the points you raised, as ours, were valid and useful if one is trained to
educe the point from Socratic discourse. I interpreted your post as a rather
brilliant diatribe against the same sort of rush to judgment I attacked in my
response, thus I believe us to be allies in championing an intelligent
approach. That is why I introduced my post, "I'm going to respond to your
/reductio ad absurdum/ as though you were presenting a serious argument." I
feel quite sure you were pointing out exactly the sort of flawed reasoning I
attacked in detail. Thus, you are providing the script for the young student,
naively thinking Occam will save the day, and I the for the crotchety teacher
attempting to impose a more engineering-oriented outlook.
That said, the universe of discourse admits of a lot of room besides "Occam is
our savior!" and "you can fix everything without Occam". I don't agree to
frame the discussion in the terms you propose because the world is not limited
to just the options you suggest. You asserted a conclusion that "there ARE
[sic] ways" based on the sole premise (and fact) that Occam is not a magic
bullet, without showing evidence or a chain of reasoning to link those
statements.
In fact, there ARE ways to find and fix race conditions, some with and some
without Occam; they comprise a whole mess of practices and approaches and
mindsets that are and likely always will be active topics of research and
discussion among partisans.
I shall forebear suggesting
http://lmgtfy.com/?q=Java+race+condition+detect+and+cure,
choosing instead to follow that link myself and come up with dozens of useful
leads that I read with pleasure.
I shall not forebear suggesting:
http://java.sun.com/docs/books/effective/
http://www.javaconcurrencyinpractice.com/
nor to scan through many of:
http://www.ibm.com/search/csass/search/?q=Goetz&Search=Search
Also, a scan upthread in this very discussion yields several answers to that
very question. I commend to your attention in particular Dr. Patricia
Shanahan's responses, which in a few short sentences lay the groundwork for
everything you need to know. In one post, she recommends preventing the bugs,
which is actually attainable by disciplined practice and thoughtful design.
In the other, she limns the essentials of troubleshooting such matters.
Your question is excellent, and seminal to the art of programming. If I may
rephrase:
How can one find, fix [and I'll add, prevent] race conditions, deadlocks, and
other such parallel-execution foobars?
Indeed, Grasshopper. Indeed.