    <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  :: C++ compilers for MSDOS / MSWindows</title>
        <link>https://members.accu.org/index.php/articles/603</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">Programming Topics + Overload Journal #6 - Mar 1995</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/c13/">Topics</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c65/">Programming</a>
<br />

                                            <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/c78/">Overload</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c177/">06</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/c65-177/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/articles/c65+177/">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;C++ compilers for MSDOS / MSWindows</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 27 March 1995 18:22:18 +01:00 or Mon, 27 March 1995 18:22:18 +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="d0e16" id="d0e16"></a></h2>
</div>
<p>Packages of C++ programming tools centred on a compiler are
becoming so big that it is no longer pos-sible to do a
comprehensive review of a single prod-uct let alone try to do a
comparative review.</p>
<p>The ubiquitous benchmarks are rather meaningless because they do
not compare like with like. Perhaps when the C++ language settles
down to a reasonably stable and mature language it will be possible
to pro-vide some sort of measure for comparison but for now any
benchmark that will run on all the major contenders will not be
doing the more up to date products justice.</p>
<p>For example, it is unfair to compare executable size between a
compiler supporting exceptions and RTTI with one that does not.
Actually many writers do not understand the issue of code size;
they think that you just need to look at the size of the executable
file. If you believe that this tells you anything about a pro-grams
resource requirements I suggest that you should go and do your
homework. It doesn't even tell you how much disk space you will
need for a fully functioning release version of the program (there
may be a whole bundle of support files needed by the ex-ecutable
such as DLLs)</p>
<p>When you buy a compiler with, possibly, other tools in the
package you need to know what you intend to do with it. Most
programmers will be working in a well defined area where they have
a need for some special facilities.</p>
<p>One of the things that puzzles me is that programmers do not
place a higher priority on reliable compilation. The hobbyist may
enjoy trying to identify bugs in the compiler but for the rest of
us they are an expensive menace. We need to be able to trust our
compilers to compile our code correctly. Bugs in a compiler are not
a joke, nor are compilers that are based on a misinterpretation of
whatever standard, working paper or draft that they claim to comply
with.</p>
<p>Another feature that must be important for C++ (though not for
C, as it is currently stable) is a belief that the compiler will
continue to develop and sup-port changes in the language. For
preference I would like my compiler to continue to compile legacy
code as it did before while supporting new code correctly. If it
cannot continue to support legacy code it should issue appropriate
error or warning messages.</p>
<p>What I want to do in the remainder of this article is to point
to those C++ compilers for MSDOS / MSWin-dows that I know about and
suggest reasons why some of you might want to look closer at
individual products. I would also like to hear from you about the
product you are using, particularly if I have left it out.</p>
<p>If you do not use MSDOS/MSWindows please write in about the
compiler package(s) you use on your platform highlighting any
particular features you find important.</p>
<p>Please note that I cannot possibly know all about even a single
product so just because I do not men-tion a specific feature does
not mean that it is missing from a package.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e36" id="d0e36"></a>Salford
Software C++</h2>
</div>
<p>Those of you involved in numerical computing probably know that
Salford Software are one of the World leaders among producers of
FORTRAN com-pilers and libraries. This means that they have an
ex-cellent understanding of the numerical specialists needs and
their C++ compiler has excellent facilities for using FORTRAN
libraries.</p>
<p>Unfortunately as a relatively small company they have not
involved themselves with C &amp; C++ stan-dards. This means that
they have sometimes got their C wrong and their C++ is based rather
too much on hearsay rather than hard facts.</p>
<p>Don't get me wrong - their product is good and the advantages to
numerical specialists are considerable but the rest of us might be
better off looking else-where.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e45" id="d0e45"></a>TopSpeed C++
(Clarion Software)</h2>
</div>
<p>The implementation team that came with the product when Clarion
absorbed JPI is one of the most tal-ented in the world and had an
excellent C++ compiler as well as some very innovative facilities.
You note that I have written in the past tense. Clarion's main
priority is their high quality Database Development package and
much of their recent development efforts have been in this
direction.</p>
<p>C++ has moved on over the last three years. The Clarion C++
package is still an excellent one but little has been done to it
recently. This goes to show just how able their implementation team
are - few C++ compilers could retain any value if left with only
minimal maintenance over the last couple of years.</p>
<p>The question that I have to ask is how long this situa-tion will
continue. With a stable language such as C their compiler will be
good for quite a number of years but this is not the case with C++.
Without sub-stantial work the C++ compiler is going to rapidly
loose ground over the next eighteen months.</p>
<p>If you are involved in database development work and can take
advantage of a well integrated database and compilers Clarion's
TopSpeed products are still worth the effort of mastering. If you
have a need for mixed Pascal, Assembler, Modula 2 and C/C++
pro-gramming the product is still on the must check list.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e56" id="d0e56"></a>G++</h2>
</div>
<p>The great advantage of the GNU C++ compiler is that it comes
with the complete source code. For the en-thusiast who wants to
tinker this is an outstanding property.</p>
<p>This is not the product for those who want a nice cheap compiler
to learn C/C++ programming. By the time you have paid for acquiring
it, paid for all the other tools you will need you will have spent
the sub-stantial part of &pound;100.</p>
<p>The GNU products are great value for money for those that have
the expertise to use them, for the rest they are a mountain of
frustration.</p>
<p>The other problem with G++ is that it is designed for easy
conversion to many platforms, but its starting place is on UNIX
type systems. This means that the design is for 32-bit flat memory.
You can guess that this needs more than a little fixing to work on
a stan-dard PC.</p>
<div class="sidebar">
<p>It should be noted that UNIX C++ developers are used to getting
GNU software for free although you can pay for professional support
if you wish, e.g., from Cygnus in the U.S. - Ed.</p>
</div>
<p>Definitely not for the inexperienced.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e72" id="d0e72"></a>Metaware High
C++</h2>
</div>
<p>Like G++ this is a multi-platform product with an expectation
that you will be using 32-bit flat memory. As a commercial product
the only acceptable fix is to provide a DOS-extender. Unfortunately
the DOS compiler needs an extender but it is not part of the
standard package.</p>
<p>This is a very high quality compiler but with very little else
in the package. It is one of the most up to date C++ compilers
available (the only commercial one that supports 'namespace' on a
DOS platform.</p>
<p>The front ends for a very wide range of platforms are as
identical as possible (sometimes a limitation of a platform results
in some resource having to be dum-mied) and for those that have a
need for multi-platform high quality development this is a product
that should be on the inspection list.</p>
<p>However, the product is very expensive by PC terms, though cheap
for UNIX. If you need versions for more than one platform you
should talk to Metaware about prices as they sell each version
separately.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e83" id="d0e83"></a>Watcom C++
10.0</h2>
</div>
<p>If you want a single package for the whole range of Microsoft
platforms as well as OS/2 then this is probably the most cost
effective solution. Watcom have always produced high quality
compilers coupled with a number of support tools. Until this last
release they have relied on command line use. Those with the
expertise to use an editor such as ED or MicroEmacs could integrate
much for themselves but the remain-der have had to flounder around.
Fine for the dedi-cated 'real programmer' but tough for the rest
who just want to knock together a quick solution to to-day's
problem.</p>
<p>With release 10 Watcom have done two important things. They
bundled all the versions for different platforms (DOS, OS/2,
MSWindows and Windows NT) on to one CD and provided support for
32-bit as well as 16-bit code and for provision of executables for
all the above as well as DOS text, DOS extended and WIN32s.</p>
<p>They have also provided their first cut at an IDE. Pretty
primitive still but at least a step in the direction that many
programmers want.</p>
<p>The price without printed manuals (you do get a 'Getting
Started' on paper) makes their product one worth spending time
on.</p>
<p>One outstanding feature of their compiler is its debug support
for release code. I wish all the others would emulate it.</p>
<p>Serious programmers should take some time to find out about this
product even if you eventually decide it is not for you.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e98" id="d0e98"></a>Symantec C++
(PC version)</h2>
</div>
<p>The ancestry of Symantec C++ should tell you to expect a really
innovative product, at least a year ahead of its rivals.
Unfortunately history will also lead you to expect a badly bugged
product. That Symantec (like Zortech whom they bought) has one of
the better technical support departments doesn't make up for lost
time discovering that the problem is not in your code but in the
compiler.</p>
<p>The new release which is about to come out (may be already out
by the time you read this) will be very attractively priced and
will include features that most programmers only dream of. A parser
that has been uncoupled from the compiler so that your code can be
parsed prior to compilation. After parsing an ex-cellent graphical
browser allows you to inspect your code much more effectively at
the time when such inspection is of most value. You can even modify
inheritance hierarchies in the browser and get auto-matic
modification of the code.</p>
<p>Incremental compilation and compilation distributed over a
network are just two more of the goodies that wait for you to
explore.</p>
<p>The one thing that I cannot know about is the reliability of the
compiler. If Symantec have got that right this time then this will
be the compiler that oth-ers will have to match.</p>
<p>The only problem is that it is only for Microsoft
plat-forms.</p>
<p>Symantec C++ 7.0 might be cost effective for nov-ices but that
will depend on the degree to which Sy-mantec have managed to clean
up their IDE.</p>
<p>Definitely one to watch. I hope this one succeeds be-cause it
has so much that I want to use.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e115" id="d0e115"></a>Borland C++
and Turbo C++</h2>
</div>
<p>I have no doubt that for the novice Turbo C++ or Turbo C++ for
Windows is the cost effective point of departure. You will get an
easy to use IDE and a very solid compiler. This is the product that
has been de-signed for such users and for those for whom cost is a
primary consideration. At the moment I just do not see another
competitor in the market. (I think that those who think that Visual
C++ standard edition meets such needs should look carefully at its
limita-tions - those that want to do pure Windows pro-gramming
simply should be looking at Visual Basic).</p>
<p>Borland C++ had become an excellent and very reli-able product
by the time it reached release 3.1. They then tried to do a single
massive leap forward and support almost all the contents of the C++
Working Paper as of Summer '93.</p>
<p>There were two dire consequences. They invested many resources
in trying to solve interpretation and definition problems that
WG21/X3J16 are still working on (this has an unfortunate
consequence that Borland now have a decided motivation in seeing
the WP adopt their solutions even if careful consideration suggest
a different one). The other problem was that they produced a
compiler that was buggy. I know that the compilers of most of their
rivals are also bug rid-den but the users of such products already
expected this. Users of Borland C++ 3.1 had come to expect a solid
and stable product and it has been a rude shock to enter the real
world of poor quality compilers - great features, a pity it doesn't
compile my code to run the way I wrote it.</p>
<p>Release 4.02 did much to fix the bugs but the damage had been
done. Many Borland devotees had lost con-fidence in the
product.</p>
<p>A new release, 4.5, is due to ship soon. It doesn't add very
much more apart from OLE2 support. What I hope is that it will put
Borland back on course as producers of reliable and easy to use
development tools.</p>
<p>Note that the Turbo products have retained their reli-ability
because they have not tried to be 'leader of the pack' with the
result that they are the leaders for those they are targeted
at.</p>
<p>I should say one other brief thing, and that concerns OWL. Both
the original product that was based on a method that WG21/X3J16
eventually rejected and the newer OWL2 were fine added value
products unfor-tunately they have not captured the third party
market which means that if you do not use a Borland com-piler you
will not use OWL 1/2. This makes switch-ing between compilers more
difficult.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e132" id="d0e132"></a>Visual
C++</h2>
</div>
<p>Up until the recent release of 2.0, VC++ has been based on a
rapidly dating specification for C++. This problem will remain for
those that want to continue programming in 16-bit environments.
They have no choice as 2.0 requires Windows NT 3.5 (or Chicago,
sorry, Windows 95 when that finally makes it out of the box). On a
long term basis Microsoft's strategy is perfectly sound. In three
years time we will be wondering how anyone ever dreamt of managing
with a DX33, 4 Mbytes of RAM and a paltry half gigabyte hard-drive.
Unfortunately we have to get from here to there. Most ACCU members
do not have the resources to run Windows NT 3.5 so VC++ 2.0 is not
available to them.</p>
<p>For C++ programmers, the earlier versions of VC++ do not support
language features that most of us now expect.</p>
<p>The strong point of these packages has been the growing adoption
of MFC by third parties. The early versions do a reasonable job of
encapsulating the Windows API. For technical reasons programs using
MFC are likely to leak resources. What's new? :-)</p>
<p>The newest versions of MFC are more robust and I would expect
them to work more reliably in an ex-ception handling
environment.</p>
<p>Microsoft tell me that something like 80% of their developers
use hardware that can run Windows NT 3.5. I am not sure what this
means as I would expect that a far smaller percentage of C++
programmers use such equipment. Perhaps that reflects the
differ-ence between being a C++ programmer and being an MSWindows
developer.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e145" id=
"d0e145"></a>Conclusion</h2>
</div>
<p>Well that's my best shot at C++ compilers for DOS/MSWindows.</p>
<p>I will need rather more help next time when I want to do a pass
over C++ compilers for OS/2. If you use one, could you write to me
and let me have your thoughts and experiences.</p>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
