    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: Francis' Scribbles</title>
        <link>https://members.accu.org/index.php/journals/669</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>


        <h2>Journal Articles</h2>


<div class="xar-mod-head"><span class="xar-mod-title">CVu Journal Vol 16, #3 - Jun 2004 + Francis' Scribbles from CVu journal</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c102/">163</a>
                    (11)
<br />

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c184/">Journal Columns</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c181/">Francis' Scribbles</a>
                    (29)
<br />

                                            <a href="https://members.accu.org/index.php/journals/c102-181/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/journals/c102+181/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;Francis' Scribbles</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 09 June 2004 13:16:04 +01:00 or Wed, 09 June 2004 13:16:04 +01:00</p>
<p><strong>Summary:</strong>&nbsp;</p>
<p><strong>Body:</strong>&nbsp;<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e21" id="d0e21"></a>The ACCU Spring
Conference 2004</h2>
</div>
<p>At the very successful ACCU Spring Conference 2004 (Yes, the
committee that replaced me did a pretty good job, apart from
ensuring that I could not participate in the only item that I did
not want to miss) I took on a new mantle by volunteering to video
the keynotes.</p>
<p>The first of these was 'World Domination: The First Five Years'
by Eric Raymond. He is one of those speakers who presents off the
cuff and does not use slides. I have a lot of sympathy for that and
have been known to opine that 'if I need slides to hold your
interest, I cannot be doing a very good job.' Anyway back to the
point.</p>
<p>We had obtained Eric's permission for videoing and I set up the
camera and continued with my apprenticeship for yet another trade.
About twenty minutes in Eric opened up for questions from the
audience. I had several (well when don't I?) and put up my hand.
Seeing it, Eric asked if there was a problem. I said no, I just
wanted to ask a question. He said he would get back to me in a
moment and then explained to the audience that he thought the video
guy needed a moment to fix some equipment problem but it seemed he
wanted to ask a question.</p>
<p>Clearly the ACCU Conferences are of such high calibre that even
the video technicians ask technical questions about software
development. If you missed the event, you missed another extremely
enjoyable one with a vast range of presentations and many other
activities. On the second day we were interrupted by the fire alarm
and had to make an orderly exit. Fortunately it wasn't raining and
we all got a few minutes of fresh air and Spring sunshine.
Apparently a workman had but a drill through some critical
wiring.</p>
<p>The grandiosely titled &quot;Speakers' Banquet&quot; was a very enjoyable
evening that I very nearly missed; I did not realise that the
person I was talking with in the bar wasn't going. I just managed
to get in after all the other speakers had been seated. It was
after one o'clock in the morning when another fire alarm dragged
sixty or so of us that were still socialising out into the street.
I am not sure whether the hotel decided to annoy its more normal
guests in order to get us out of the ballroom but I never did hear
an explanation for the alarm going off.</p>
<p>I realise that the cost is fairly high for those that have to
pay their own way but next year treat yourself to a special four
days by attending the ACCU Spring Conference 2005. You will find a
wide range of people who are not only intelligent and very
knowledgeable about software development but are often great fun
and potentially good friends. Which leads me to:</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e36" id="d0e36"></a>ACCU in
Melbourne</h2>
</div>
<p>My intensive three weeks of Standards meetings started in
Melbourne. Those of you who have flown to Australia will know that
the most common flights to Melbourne and Sydney start at around
nine in the evening and reach their destination some time before 6
in the morning. In our (my wife and I) case we left on Sunday
evening to arrive at 5.45am on Tuesday (flying against the sun
means that you lose a day somewhere). Alec Clews, a long-term
member of ACCU, now lives in Melbourne with his wife and two
children. He had noticed my itinerary and had volunteered to pick
us up at the airport and take us to our hotel. This he did despite
being in the throes of having his employer considering sending him
for a six week job somewhere in the US. Had that come off he would
have been flying out of Melbourne on the Friday. I do not know
about you, but I would have been preoccupied by all the necessary
arrangements. As it happened the job fell through so we had a
pleasant dinner with Alec later in the week. He then took time out
to reschedule our flight from Melbourne to Sydney (I had not been
paying attention in the Travel Agent's and had managed to accept a
6am flight thinking it was 6pm - and had not been able to change
the booking from the UK end) and then drive us out for our
plane.</p>
<p>This kind of friendship is common in such communities as Science
Fiction Fandom and it is nice to find that it has transplanted
itself into the programming community as exemplified by ACCU.
Indeed a couple of conference delegates independently commented
that our conferences were more like Science Fiction Conventions
than most technical conferences. I am glad that is so because that
was my model for ACCU during my decade at the helm.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e43" id="d0e43"></a>Sydney</h2>
</div>
<p>Our two weeks in Sydney started out with a day spent with one of
my oldest friends, David, who was my best man and his wife Sheila
who was my wife's best friend at college. Entirely by chance their
two months touring Australia happened to place them in Sydney at a
time that overlapped our visit by a few days. I had to get on with
Standards meetings on Sunday evening but David and Sheila took my
wife off to stay overnight with the friends who were putting them
up before going to visit the Blue Mountains. I gather they had a
great time.</p>
<p>I did get some time to look around Sydney and it's a pleasant
enough place with pleasant weather but I remain unimpressed by
Bondi Beach (nothing that special, there are many better beaches
round the world) and perhaps it is just ennui but give me Clifton
Suspension Bridge over Sydney Harbour Bridge.</p>
<p>Anyway we did get a lot of work done in both WG21 and WG14.
Several of the six papers I presented to the C++ evolution group
were very well received and I was basically told to go and add some
more and then bring them back for further consideration. The paper
on forwarding constructors that I co-authored with Herb Sutter was
interesting in that Herb and I did not agree on one important
issue: when an object should be deemed to be alive. Herb wanted it
to be only on completion of the whole chain of constructors whilst
I was representing the UK view that it should be when the final
delegated to constructor had completed.</p>
<p>When it came to our usual straw poll (strongly in favour, weakly
in favour, weakly against, strongly against) the UK view prevailed
by a substantial margin. The interesting point was that Herb was
one of those giving strong support to the UK view. Technical
arguments do win the day if put clearly. That paper is the first
Evolution Work Group item to go to ready status. That is, we think
we know what we want and what changes need to be made to the
Standard to achieve the objective. There is now a six month cooling
off period after which, if there are no objections, the working
paper will be modified to incorporate the proposed wording.</p>
<p>Now I have to work hard at my other two major proposals
(unifying the initialisation syntax for object definitions, and
providing an 'explicit class' in which the compiler is not allowed
to implicitly generate code for such things as default
constructors.)</p>
<p>My second week in Sydney was spent at WG14 meetings. As I have
said before, this is a much smaller group with a somewhat different
work structure. This is further highlighted by the fact that at the
five-year review point it chose to reaffirm its Standard. That
means that currently there is no work being done on a new C
Standard. While WG14 could start work on a new Standard any time
that it wanted to it is actually unlikely to do so for several
years.</p>
<p>However this does not mean that there is no work to do. Quite
apart from handling defect reports (i.e. fixing bugs in the
Standard) it is also working on a number of technical reports.
These do not have the force of a Standard but are strong statements
about how we would like to see specific things done, and attempt to
provide a path for extensions so that compilers remain close. We
have just moved the second Technical Corrigendum (formal errata for
a Standard) to ready status (i.e. we think it is right but want to
take a few more months before putting it out to vote). We intend to
ask that TC1 &amp; TC2 be incorporated into the Standard and that a
new corrected edition be published (as did WG21 with the C++
Standard). Note that Wiley published the C Standard corrected by
TC1 though this is officially the collation of two distinct ISO
documents. The difference is that next time ISO will publish a new
document that is the result of applying both TC1 and TC2 to C99 as
a single document ISO/IEC 9899:2005 (or perhaps 2006).</p>
<p>I was tasked with drafting the WG14 response to the longest
outstanding Defect Report. Having listened to the Committee
discussion it was clear that their well considered opinions were
actually different from a commonly held view. The core of the issue
is whether the bit-patterns representing a value can change without
explicit access. The simple surprising answer is that WG14 is
intending to stipulate that they can as long as the value does not
change. The most extreme case is where an object has indeterminate
value. In such a case all bit patterns are of equal status. WG14
intends to state that using arrays of unsigned char to examine the
bit pattern of an indeterminate value twice does not require that
the two patterns be identical.</p>
<p>Their reason is that it is an unnecessary burden to require that
the bit patterns of indeterminate values be preserved (e.g. when
paging out memory). What about determinate values? Well there are
times when these can have alternate representations; the
implementation is allowed to arbitrarily change between
representations (e.g. it can normalise a floating point value
whilst idling for input, or more specifically, at a time when it is
only accessing the object for reading a value.)</p>
<p>None of this should affect the working C programmer but it does
have implications for compiler developers.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e66" id="d0e66"></a>Worse is
Better</h2>
</div>
<p>During a newsgroup discussion of how to study C++ we got into a
few exchanges on the subject of Dijkstra prognostications, in
particular EWD 498, 'How do we tell truths that might hurt'. (for
more start at: <a href=
"http://www.cs.utexas.edu/users/EWD/indexEWDnums.html" target=
"_top">www.cs.utexas.edu/users/EWD/indexEWDnums.html</a>)</p>
<p>I have some fairly strong opinions on some of the things
Dijkstra said and a feeling that despite his good intentions the
way he addressed the problems often put people off. During the
course of the dialogue I wrote:</p>
<div class="blockquote">
<blockquote class="blockquote">
<p>Yes, and it does not work. Practically every successful language
has been developed pragmatically. Algol (both versions) were
probably better designed than the contemporary FORTRAN. I hear all
kinds of reasons why functional languages, Pascal, Modula (all
versions), Ada, Scheme etc. are better tools but they have mostly
remained in academia.</p>
<p>On the other hand, languages designed by those who wanted to
program may be theoretically flawed but they are used. Instead of
telling us (or researchers) that they should be doing a better job'
it might be more effective to determine why those actually doing
productive work choose something else.</p>
</blockquote>
</div>
<p>One respondent gave the following url: <a href=
"http://www.dreamsongs.com/WorseIsBetter.html" target=
"_top">http://www.dreamsongs.com/WorseIsBetter.html</a></p>
<p>I think many of you might find a little surfing starting there
would challenge your thinking. Please take a little time to visit
the site and follow some of the links and then, if you find them
thought provoking share your thoughts with the rest of us. Unless
you want to settle down to writing a full scale article on the
subject I think that a letter to the editor would be appropriate
and would give our new C Vu editor a helping hand.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e87" id="d0e87"></a>Making
Contact</h2>
</div>
<p>Once again lost email has surfaced, this time from Brett
Fishburne, a longterm quiet contributor to ACCU. Here is some of
what he had to say:</p>
<div class="sect2" lang="en">
<div class="titlepage">
<h3><a name="d0e92" id="d0e92"></a>Spam and Personal
Data</h3>
</div>
<p>I'm so very disappointed. In one section you call for our ISPs
to parse all of our mail and in the next you decry a loss of
privacy. Well, as GMail has shown, anyone parsing everyone's mail
(for any reason) would be considered &quot;invading privacy.&quot;</p>
<p>Now, suppose that all these ISPs got busy and started parsing
mail and pulling out viruses. What is their liability if they miss
one? What if they don't meet the requirement for &quot;identifiable&quot; for
some reason (perhaps they use Macafee instead of Norton and are an
hour behind)? The ISP's job is to deliver the mail. This is like
expecting the post-office to intercept chain letters. The
presumption is that it would be OK for them to peruse our mail in
the hopes that chain letters are removed. Now, you could make the
argument that it is the post office's responsibility to prevent
bombs from going through the mail, but my understanding is that
they do not take this responsibility. They generally prevent bombs
from going through the mail out of the interest of protecting
postal workers. Similarly, if you wrote a mail program that
forwarded all of your SPAM to your ISP requesting that the sending
offender be blocked, perhaps all people using that mail program
could effect a &quot;denial of service&quot; to your own ISP and (assuming
that alone wasn't sufficient for your ISP to cut you off
personally), perhaps your ISP would determine that, in the interest
of preserving itself, it would prevent such viruses from ever
getting to your mail program. A longshot at best. Perhaps, if a
government were to make it illegal for an ISP to forward a &quot;known&quot;
virus...but there, again, we trip over privacy. [<span class=
"editorial">Privacy is not an absolute.</span>]</p>
<p>I certainly don't understand why companies don't do this at the
firewall. It makes no sense. Given that there are lots of people
with corporate accounts and corporations are the ones who get
dinged when networks get trashed, I would think that corporations
would be very, very touchy on this issue and not leave it to each
individual PC.</p>
<p>Perhaps the reason this doesn't work at ISPs is due to
performance. Can you imagine how bad Internet telephony would be if
every packet was parsed for a virus? What about innocent
applications (like telephony) which may contain byte codes that
could be a virus if executed, but are never intended to be executed
(ditto for any binary source)?</p>
</div>
<div class="sect2" lang="en">
<div class="titlepage">
<h3><a name="d0e106" id="d0e106"></a>Tools</h3>
</div>
<p>I really like TextPad. I use it for everything and have gladly
paid the price requested. I like that I don't give up EXREGEXPs for
my searching and replacing and I especially like the &quot;block select&quot;
mode which lets one select columns of data instead of just
rows!</p>
</div>
<div class="sect2" lang="en">
<div class="titlepage">
<h3><a name="d0e111" id="d0e111"></a>Commentary on
Problem 13</h3>
</div>
<p>You make so many obvious mistakes that I can only assume that
this was done for effect. Nonetheless, I will address them:</p>
<div class="orderedlist">
<ol type="a">
<li>
<p>You treat the pointer to the structure in the compare function
like they are structure objects. You would need to use an arrow
&quot;-&gt;&quot; instead of the period, &quot;.&quot;.</p>
</li>
<li>
<p>In the call to qsort, you refer to sixeof(X) which has both a
typo and an error and should be sizeof(struct X).</p>
<p><span class="editorial">The original was in C++ and I forgot to
change that line.</span></p>
</li>
<li>
<p>In the version of qsort() I use, it is necessary to supply the
number of elements in the array as the second parameter. I can only
assume that this was an oversight on your part.</p>
<p><span class="editorial">Again a careless conversion problem from
a C++ <tt class="literal">sort()</tt>.</span></p>
</li>
<li>
<p><tt class="function">compare</tt> is required to return an
<span class="type">int</span>, but the addition and subtraction in
the final return statement could possibly exceed an <span class=
"type">int</span>.</p>
</li>
<li>
<p>The <tt class="function">compare</tt> statement doesn't handle a
NULL pointer (although that shouldn't happen).</p>
</li>
</ol>
</div>
</div>
<div class="sect2" lang="en">
<div class="titlepage">
<h3><a name="d0e152" id="d0e152"></a>Cryptic</h3>
</div>
<p>Here is my clue: The millenium problem in 4 digits in the
correct ascending order and, of course, bookending but not
naught.</p>
<p>The millenium problem centered around using the last two digits
of a year and the problem that occurred when these were sorted. 01
was sorted in front of 99 when the desired sort was 99 then 01. The
millenium in two digits is &quot;00&quot; or naught, but the years we want
are just before &quot;99&quot; and just after &quot;01&quot; (bookending).</p>
<p>Another clue: What you get when you see and take away one
followed by the reflection of a Downing Street address (4
digits).</p>
<p>&quot;See&quot; is a pun for the roman numeral &quot;C&quot; which is 100. 100 - 1 =
99. The Downing Street address is, of course, #10, which can be
reflected in a mirror to &quot;01&quot; if the number one is written as a
single line (implied by the reflective symmetry you mentioned).</p>
</div>
<div class="sect2" lang="en">
<div class="titlepage">
<h3><a name="d0e163" id="d0e163"></a>Thanks</h3>
</div>
<p><span class="editorial">Thanks, Brett, for the time spent and I
am only sorry that it did not arrive in a timely fashion. Now
perhaps a few more of you could get into the dialogue. By the way,
Brett also sent me 3 items for my project repository. Isn't it time
you wrote up and sent in your contribution?</span></p>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e169" id="d0e169"></a>Commentary on
Problem 14</h2>
</div>
<p>Somehow under the pressure of getting half a dozen papers
proposing future developments for C++ it got left out. Which is
fortuitous because I am about out of space.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e174" id="d0e174"></a>Problem
15</h2>
</div>
<pre class="programlisting">
#include&lt;iostream&gt;
#include&lt;cstdio&gt;
using namespace std;
main() {
  int n;
  int waste;
  char name[51];
  cout &lt;&lt; &quot;Enter any integer number...\n&quot;;
  cin &gt;&gt; n;
  cout &lt;&lt; &quot;Enter your name...\n&quot;;
  cin &gt;&gt; waste; // 'gets' does not read the
                // name if this line is omitted
  gets(name);
}
</pre>
<p>A little examination will tell you that the above should not
work. Why did it?</p>
<p>No space for cryptic clues this time so try:</p>
<p>Sounds like a perfect result when a score dine together. (2
digits)</p>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
