    <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  :: A Personal View</title>
        <link>https://members.accu.org/index.php/articles/746</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>




<div class="xar-mod-head"><span class="xar-mod-title">CVu Journal Vol 11, #1 - Nov 1998</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/articles/">All</a>

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

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

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c134/">111</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;A Personal View</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 06 November 1998 13:15:28 +00:00 or Fri, 06 November 1998 13:15:28 +00:00</p>
<p><strong>Summary:</strong>&nbsp;</p>
<p><strong>Body:</strong>&nbsp;<div class="section" lang="en">
<div class="titlepage">
<h2><a name="d0e18" id="d0e18"></a></h2>
</div>
<p>I was surfing the WWW the other day when I came across an
interesting site - www.cs.ucsb.edu/conferences/java98. Among the
conference papers was one on the faults in the current
implementation of floating point types in Java. It is titled
&quot;<i class="citetitle">How Java's Floating-Point Hurts Everyone
Everywhere</i>&quot;. It is co-authored by Prof. W Kahan and Joseph D.
Darcy. If you are purely interested in Java you should probably
balance this paper by reading Dr James Gosling's keynote address of
the previous day: &quot;Extensions to Java for Numerical Computation.&quot;
However what particularly interests me is the general problems with
numerical computing that Kahan and Darcy highlight.</p>
<p>If asked to name a language in which you could safely do
numerical work the odds strongly favour selecting Fortran. To my
surprise I see that Kahan considers that the Fortran implementation
of Complex is bugged. Of course regular users of Fortran have got
their work-rounds well honed and probably justify the problem as
being an inherent problem with computers.</p>
<p>This does not appear to stand up because the formulation of
Complex that will be provided by the next release of C9X does not
suffer from the specific problem (read the paper if you want to
understand the problem).</p>
<p>However before everyone goes rushing off to hype up C9X
numerical facilities you should be aware that not all numerical
experts are happy about other aspects of the numerical extensions
to C that are making it into C9X.</p>
<p>Before the C++ aficionados get a glowing feeling of superiority
I should mention that valarray has come under severe criticism as
being badly designed and unsuitable for the purpose for which it
was designed.</p>
<p>I guess the Smalltalk enthusiasts will claim superiority but
they fall at the first post because Smalltalk has no top-level
concept of a value. Without that, numerical programming becomes
exceptionally difficult to even think about.</p>
<p>I am not even going to comment on COBOL, and rest assured that
Pascal also has its problems. I am not sure about APL because I
have never had the time to study it.</p>
<p>Do these flaws in the numerical facilities for World's most
popular computing languages matter? Actually I think it does. We
are increasingly reliant on computers to support numerically
intense computations. The results are used in everything from the
design of secure escape routes from burning buildings to projecting
the behaviour of nuclear reactors. Our entire world is built on a
foundation of numerically intense computations. However our
computer languages cannot handle the boundary cases correctly.</p>
<p>It is bad enough that we have to trust flaky hardware and buggy
software but apparently we have yet to provide a high-level
language that does not contain inherent flaws. Of course, if all
programmers are aware of the problems and understand the
mathematical theory well enough to work round them all might still
be safe. But in fact the C++ Standards Committees could not even
retain the services of a numerical expert to get valarray sorted
out. His employer needed his expertise. Those that understand the
problems are working too hard to have time to remove them from the
fundamental tools.</p>
<p>In the real world we have a big enough problem with programmers
who do not understand such simple things as 'order of evaluation'
or who believe that sequence points provide an unambiguous
definition of the how side effects work (there are no gradations of
sequence points, yet a full specification of behaviour needs some
such specification). We learn to stay away from the edges of cliffs
but sometimes such potentially lethal boundaries have to be
handled.</p>
<p>Consider standing on the edge of a cliff when you loose your
balance. The direction in which you loose it is the difference
between life and death. So, in numerical terms is the difference
between infinitesimally more or less than zero.</p>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
