601 lines
21 KiB
HTML
601 lines
21 KiB
HTML
<!--startcut ==========================================================-->
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
|
<META NAME="Generator" CONTENT="Microsoft Word 97">
|
|
<TITLE>Gnat and Linux: C++ and Java Under Fire LG #33</TITLE>
|
|
</HEAD>
|
|
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#A000A0"
|
|
ALINK="#FF0000">
|
|
<!--endcut ============================================================-->
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<CENTER>
|
|
<H1><font color="maroon">Gnat and Linux: C++ and Java Under Fire</font></H1>
|
|
<H4>By <a href="mailto:ken@tiamet.vaxxine.com">Ken O. Burtch</a></H4>
|
|
</center>
|
|
<P> <HR> <P>
|
|
|
|
<CENTER>
|
|
<FONT SIZE=-1><U>Quick Index</U>: <A HREF="#Newer">Newer than Java </A>/
|
|
<A HREF="#Under">Gnat: gcc understands Ada</A> / <A HREF="#Features">Features
|
|
and Compatibility</A> / <A HREF="#Install">Installation</A> / <A HREF="#Avail">Availability
|
|
and Commercial Support</A> / <A HREF="#Java">Java Byte Code and Distributed
|
|
Processing</A> / <A HREF="#Gripes">Gripes</A> / <A HREF="#Recommend">Recommendations</A>
|
|
</center>
|
|
<BR>
|
|
<HR WIDTH="100%">
|
|
|
|
<P><FONT SIZE=-1>Long sessions.</FONT>
|
|
<BR><FONT SIZE=-1>Awkward environments.</FONT>
|
|
<BR><FONT SIZE=-1>Convoluted rules.</FONT>
|
|
<BR><FONT SIZE=-1>Missile guidance systems.</FONT>
|
|
|
|
<P><FONT SIZE=-1>This is the computer language that many people know as
|
|
Ada. Today's Ada looks more like Inprise's Delphi than its caveman ancestor,
|
|
and soon will produce Java applets that you can drop into your web sites.
|
|
However, does it stack up against other languages available for Linux?</FONT>
|
|
<BR>
|
|
<H3>
|
|
|
|
<HR WIDTH="100%"><A NAME="Newer"></A><FONT SIZE=-1>Newer than Java</FONT></H3>
|
|
<FONT SIZE=-1>The new Ada standard is known as Ada 95. Two years younger
|
|
than Java, this is the first object-oriented programming language to be
|
|
internationally standardized. This means that all Ada compilers and their
|
|
libraries should work exactly the same on any operating system, giving
|
|
Linux programmers an extra level of portability.</FONT>
|
|
|
|
<P><FONT SIZE=-1>C++ is the de facto standard for Linux programming. After
|
|
all, the kernel itself is written in C. However, C++ is not suitable for
|
|
all kinds of projects because different computer languages have different
|
|
strengths and weaknesses. Ada was designed for team development and embedded
|
|
systems, leading to advantages over C in development time and debugging.
|
|
An in-depth 1995 study by Stephen F. Zeigler (http://sw-eng.falls-church.va.us/AdaIC/docs/reports/cada/cada_art.html)
|
|
showed that development in Ada costs about half that of C++. It also suggests
|
|
that Ada produces "almost 90% fewer bugs for the final customer".</FONT>
|
|
|
|
<P><FONT SIZE=-1>The test bed compiler for Ada 95 was gnat.</FONT>
|
|
<BR>
|
|
<H3>
|
|
|
|
<HR WIDTH="100%"><A NAME="Under"></A><FONT SIZE=-1>Gnat: gcc understands
|
|
Ada</FONT></H3>
|
|
<FONT SIZE=-1>The Ada compiler produced by Ada Core Technologies (ACT),
|
|
gnat is available for free for Linux. Gnat is also available for other
|
|
platforms, including Sun Solaris, Silicon Graphics, DEC Alpha and Microsoft
|
|
Windows.</FONT>
|
|
|
|
<P><FONT SIZE=-1>Gnat was developed closely with gcc, the native C
|
|
compiler for Linux. Unlike some compilers that translate a program into
|
|
C and then feed the C program into gcc, gcc has built-in support for the
|
|
Ada language. Like g++, gnat works with with gcc, allowing
|
|
it to produce fast, quality executables without any intermediate steps.</FONT>
|
|
|
|
<P><FONT SIZE=-1>This integration gives a lot of flexibility to programmers
|
|
who want or need to support multiple languages. Gnat has an extensive set
|
|
of features for trading variables and function calls between Ada and C/C++.
|
|
It can import C/C++ items into Ada, export Ada items to C/C++. You can
|
|
also link Ada functions indirectly into Java, using Java's ability to import
|
|
C++ functions.</FONT>
|
|
|
|
<P><FONT SIZE=-1>Gnat comes with over 140 standard libraries. These include
|
|
numeric and string libraries, file operations, hash tables and sorts. If
|
|
you would rather work directly with Linux C libraries, a variety of "binding"
|
|
libraries exist, available for download from the Public Ada Library or
|
|
The Home of the Brave Ada Programmers. These include bindings for POSIX
|
|
(that is, the kernel), X Windows, Motif, TCL and WWW CGI applications.</FONT>
|
|
|
|
<P><FONT SIZE=-1>Although gnat is distributed under the GPL license, gnat
|
|
and its libraries may be used in commercial applications.</FONT>
|
|
<BR>
|
|
<H3>
|
|
|
|
<HR WIDTH="100%"><A NAME="Features"></A><FONT SIZE=-1>Features and Compatibility</FONT></H3>
|
|
<FONT SIZE=-1>Last year I ran some simple time trials on gnat, the Java
|
|
Development Kit, and gcc.</FONT><p>
|
|
|
|
<CENTER><I><U><FONT SIZE=-1>Language Performance Comparision</FONT></U></I></CENTER>
|
|
|
|
<CENTER><I><FONT SIZE=-1>(Pentium 90, 10 million iterations, results in
|
|
CPU Seconds)</FONT></I></CENTER>
|
|
|
|
<CENTER> </CENTER>
|
|
|
|
<TABLE BORDER CELLPADDING=7 WIDTH="696" >
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1></FONT></TD>
|
|
|
|
<TD><B><FONT SIZE=-1>Java</FONT></B></TD>
|
|
|
|
<TD><B><FONT SIZE=-1>Ada</FONT></B></TD>
|
|
|
|
<TD><B><FONT SIZE=-1>C</FONT></B></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1></FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>JDK 1.0.1 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>gnat 3.09 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>gcc 2.7.2.1</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD><B><FONT SIZE=-1>Test</FONT></B></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Constant assignment </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>20.68 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>0.36 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>0.23</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Long Int assignment </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>20.88 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>0.35 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>0.22</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Long Int multiply </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>29.50 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>0.38 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>0.23</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Array access </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>24.52 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>0.64 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>0.23</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Function Calls </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>15.63 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>1.07 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>0.22</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Strings Concatenation </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>19.29 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>0.35 </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>2.75</FONT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
<FONT SIZE=-1></FONT>
|
|
|
|
<P><FONT SIZE=-1>Gnat performed well against gcc. Inspite of gnat's extensive
|
|
run-time error checks, the test programs ran on average only a third slower
|
|
than gcc. With these checks disabled, you should get performance comparable
|
|
with C. As an interpreted language, Java ran several times slower than
|
|
either Ada or C.</FONT>
|
|
|
|
<P><FONT SIZE=-1>The following table presents a summary of some common
|
|
features, compared with others languages (including Delphi):</FONT><p>
|
|
|
|
<CENTER><FONT SIZE=-1> <I><U>Summary of Common Features</U></I></FONT></CENTER>
|
|
<FONT SIZE=-1></FONT>
|
|
<TABLE BORDER CELLPADDING=7 WIDTH="696" >
|
|
<TR>
|
|
<TD VALIGN=TOP><B><FONT SIZE=-1></FONT></B></TD>
|
|
|
|
<TD><B><FONT SIZE=-1>C++ </FONT></B></TD>
|
|
|
|
<TD><B><FONT SIZE=-1>Java </FONT></B></TD>
|
|
|
|
<TD><B><FONT SIZE=-1>Ada </FONT></B></TD>
|
|
|
|
<TD><B><FONT SIZE=-1>Delphi</FONT></B></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1> <B>Feature</B></FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Objects & Classes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>16-bit Characters </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>NO </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Short Circuiting </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>NO </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Overloading </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>some* </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>*no infix operators</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Inlining </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>NO </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Built-in Multithreading </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>NO </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes* </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>*has 2 kinds</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Multiple Inheritance </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>interfaces </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>NO </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>NO</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Polymorphism </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Private fields </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Built-in Distributed Processing </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>NO </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>NO+ </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes* </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>NO </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>*requires free add-on </FONT>
|
|
<BR><FONT SIZE=-1>+not built-in, uses a class</FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP><FONT SIZE=-1>Garbage Collection </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>NO </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes* </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>yes </FONT></TD>
|
|
|
|
<TD><FONT SIZE=-1>*not implemented by gnat</FONT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
<FONT SIZE=-1> </FONT><p>
|
|
|
|
<p><FONT SIZE=-1>As you can see, Ada holds its own against Java.</FONT>
|
|
|
|
<H3>
|
|
|
|
<HR WIDTH="100%"><A NAME="Install"></A><FONT SIZE=-1>Installation</FONT></H3>
|
|
<FONT SIZE=-1>Because gnat is integrated with gcc, the gnat binaries are
|
|
compiled for a specific version of gcc and will only work with that version.
|
|
The latest public version from ACT is 3.10p, which has been compiled for
|
|
gcc 2.7.2.1. If you have this version, the installation program allows
|
|
you to install gnat directly on your system. This will overwrite your copy
|
|
of gcc with one that has Ada support enabled.</FONT>
|
|
|
|
<P><FONT SIZE=-1>If you don't have gcc 2.7.2.1, you can specify a separate
|
|
directory where gnat will install itself and its personal copy of gcc 2.7.2.1.
|
|
To make gnat available, you have to perform two additional steps:</FONT>
|
|
<OL>
|
|
<LI>
|
|
<FONT SIZE=-1>The installation program creates a shell script containing
|
|
environment variables that you can copy to your shell startup script (under
|
|
bash, this is your .profile file). Gnat uses these variables to locate
|
|
important files.</FONT></LI>
|
|
|
|
<LI>
|
|
<FONT SIZE=-1>Include the gnat directory in the front of your path to prevent
|
|
gnat from using the gcc that came with your Linux distribution. (Only do
|
|
this when you want to run gnat.)</FONT></LI>
|
|
</OL>
|
|
<FONT SIZE=-1>When I attempted to install gnat on RedHat, I ran into a
|
|
number of problems. According to ACT, they are aware of the problems of
|
|
running gnat under RedHat and instructions on how to get it working are
|
|
found in the gnat chat and comp.lang.ada archives. Nevertheless, ACT says
|
|
they will be releasing a RedHat 5.1 compatible public version of gnat in
|
|
the relatively near future.</FONT>
|
|
|
|
<P><FONT SIZE=-1>Once you have the binaries installed, the more adventuresome
|
|
can recompile gnat for their version gcc:</FONT>
|
|
<OL>
|
|
<LI>
|
|
<FONT SIZE=-1>You need a copy of the gcc sources in order to build a copy
|
|
of gcc that's compatible with gnat. These should be available with your
|
|
Linux distribution. The minimum version is 2.7.2.</FONT></LI>
|
|
|
|
<LI>
|
|
<FONT SIZE=-1>Download a copy of the gnat sources, which are available
|
|
for download from the gnat download site and its mirrors.</FONT></LI>
|
|
|
|
<LI>
|
|
<FONT SIZE=-1>Recompile gcc and gnat. Make sure you follow gcc's instructions
|
|
for activating Ada support.</FONT></LI>
|
|
</OL>
|
|
<FONT SIZE=-1> </FONT>
|
|
<H3>
|
|
|
|
<HR WIDTH="100%"><A NAME="Avail"></A><FONT SIZE=-1>Availability and Commercial
|
|
Support</FONT></H3>
|
|
<FONT SIZE=-1>The compiler sources and executable for the general public
|
|
are available for free from <A HREF="ftp://cs.nyu.edu/pub/gnat">ftp://cs.nyu.edu/pub/gnat</A>
|
|
and its mirrors.</FONT>
|
|
|
|
<P><FONT SIZE=-1>Similar to Samba, ACT can provide comprehensive commercial
|
|
support, but it costs several thousand dollars. The support includes priority
|
|
bug fixes and the latest version of gnat (compiled against whatever version
|
|
of gcc you are using). The commercial support is not strictly required
|
|
for serious projects for the same reason that Samba isn't. Technical assistance
|
|
is available on the Internet, and since the compiler adheres to the international
|
|
standard and has been well-tested, the public release is as well-built
|
|
and reliable as gcc itself. The commercial support is aimed at substantial
|
|
projects that need high level support, such as projects critical to the
|
|
success of a business or department.</FONT>
|
|
|
|
<P><FONT SIZE=-1>Gnat comes with extensive documentation in HTML format
|
|
that you can browse with lynx or Netscape. This includes complete coverage
|
|
of all of gnat's unique features and options. Unfortunately, no tutorial
|
|
for Ada is included.</FONT>
|
|
<BR>
|
|
<H3>
|
|
|
|
<HR WIDTH="100%"><A NAME="Java"></A><FONT SIZE=-1>Java Byte Code and Distributed
|
|
Processing</FONT></H3>
|
|
<FONT SIZE=-1>In the past year, ACT announced that their next release of
|
|
gnat would be able to produce not only executable programs but Java executables
|
|
(called "byte code") as well. A gnat program will be able
|
|
to run on any Java interpreter, such as web site applets running under
|
|
a Java-enabled browser. This gives Linux web programmers an alternative
|
|
to using the Java.</FONT>
|
|
|
|
<P><FONT SIZE=-1>ACT also provides a free gnat add-on called "Glade", which
|
|
enables Ada 95's built-in distributed processing support. Programs using
|
|
Glade can work with each other transparently over a network.</FONT>
|
|
|
|
<P><FONT SIZE=-1> </FONT>
|
|
<H3>
|
|
|
|
<HR WIDTH="100%"><A NAME="Gripes"></A><FONT SIZE=-1>Gripes</FONT></H3>
|
|
<FONT SIZE=-1>I came across a few problems while working with gnat.</FONT>
|
|
|
|
<P><FONT SIZE=-1>When testing gnat, I found a minor problem related to the
|
|
<I>normalize_scalers</I> pragma. This is a compiler directive
|
|
that helps to detect variables used before they are initialized. The directive
|
|
worked fine except in a package containing object definitions. All other
|
|
language features I tested appeared to work properly under Linux, including
|
|
multitasking.</FONT>
|
|
|
|
<P><FONT SIZE=-1>Gnat's executables can be several times the size of a
|
|
gcc executable. Gnat provides compiler directives to reduce a program's
|
|
size, but if a small footprint is an important issue, you may want to avoid
|
|
gnat.</FONT>
|
|
|
|
<P><FONT SIZE=-1>Gnat also lacks an IDE, but this is a common problem for
|
|
Linux languages.</FONT>
|
|
|
|
<P><FONT SIZE=-1>My biggest complaint isn't with the language: it's ACT's
|
|
uneven customer support. Although I've always received prompt replies from
|
|
ACT, they are not always courteous or helpful, and I've often been more
|
|
frustrated than enlightened.</FONT>
|
|
|
|
<P><FONT SIZE=-1>Once I went to my local photocopy shop to make copies
|
|
of the gnat manual, and they refused because the manuals contain a copyright
|
|
notice. I emailed ACT and they were quick to respond that the copyright
|
|
notice would be changed in the next edition. It's been over a year since
|
|
they updated their FTP site, and I'm still waiting to see this simple
|
|
change.</FONT>
|
|
|
|
<P><FONT SIZE=-1>On another occasion, my software company was investigating
|
|
gnat's suitability as a development platform for Linux. As far as we knew,
|
|
ACT could have been run out of Robert Dewar's basement. We wanted to know
|
|
that there would be future releases of gnat before we committed
|
|
ourselves to developing a software base and suffer the stigma of
|
|
programming in Ada. At first we were told we shouldn't consider developing
|
|
in gnat unless we had their commercial suppport. Then we were told that
|
|
they wouldn't provide commerical support for a fledgling company like
|
|
ourselves. If ACT would have given us a straight answer on the commercial
|
|
support, told us that we would still be supported on a non-priority
|
|
basis, and wished us luck on our future endevours, we would have been
|
|
more than happy. Instead, we felt that they had been dishonest with us and then
|
|
told that we were dirt when we had gone out on a limb to consider gnat
|
|
in the first place.</FONT>
|
|
|
|
<p><FONT SIZE=-1>No company should be rude or disrespectful to its clients.
|
|
They deserve straight-forward answers, timely fixes, and a "please" and
|
|
"thank you" now and then to show their interest is appreciated.</FONT>
|
|
|
|
<BR>
|
|
<H3>
|
|
|
|
<HR WIDTH="100%"><A NAME="Recommend"></A><FONT SIZE=-1>Recommendations</FONT></H3>
|
|
<FONT SIZE=-1>Without a doubt, gnat holds its own against other Linux development tools.
|
|
I would recommend gnat and Ada for the following:</FONT>
|
|
<UL>
|
|
<LI>
|
|
<FONT SIZE=-1>Any project requiring a team environment, multiple computer
|
|
languages or high accuracy. Ada excels over C++ and Java on these issues.</FONT></LI>
|
|
</UL>
|
|
|
|
<UL>
|
|
<LI>
|
|
<FONT SIZE=-1>It is a cost-effective alternative for universities and colleges.
|
|
Ada's strong structure, rich features and easy to read syntax make it ideal
|
|
for introductory courses in computer science.</FONT></LI>
|
|
</UL>
|
|
|
|
<UL>
|
|
<LI>
|
|
<FONT SIZE=-1>Anybody who's more comfortable using a Pascal-style language,
|
|
such as a Delphi or BASIC programmer new to the world of Linux.</FONT></LI>
|
|
</UL>
|
|
<FONT SIZE=-1>Also, anybody doing Java development for Linux should investigate
|
|
the next release of gnat.</FONT>
|
|
|
|
<P><FONT SIZE=-1>Robert Dewar, the head of ACT, assured
|
|
me that "ACT is committed to providing high quality Ada 95 products for
|
|
Linux. We have a number of serious Ada users using Linux today, and we
|
|
intend to continue to serve the Linux market for such users."</FONT>
|
|
|
|
<P><FONT SIZE=-1>When speaking of Linux's exponential growth over the last
|
|
two years, Mr. Dewar was quick to point out that the gnat Linux market
|
|
is currently small. ACT is not interested in promoting the Ada 95 standard.
|
|
They would rather spend their time improving their products and selling them
|
|
to the existing Ada markets. That the Linux
|
|
community has largely overlooked gnat is not surprising.</FONT>
|
|
|
|
<P><FONT SIZE=-1>The difference between a successful project and a failure can
|
|
often hinge upon choosing the right development tool for the job, and gnat
|
|
has a lot to offer. Gnat brings a versatile development environment to Linux,
|
|
an efficient compiler and a rich set of development tools, and that is
|
|
something the Linux community cannot ignore. Whether or not gnat has a
|
|
bright future in Linux is anybody's guess, but it would be a shame if a
|
|
high quality piece of free software should be overlooked. This is a lesson
|
|
that all Linux enthusiasts have learned very well.</FONT>
|
|
<BR>
|
|
<H3>
|
|
|
|
<HR WIDTH="100%"><A NAME="Resources"></A><B><FONT SIZE=-1>Resources</FONT></B></H3>
|
|
<U><FONT SIZE=-1>Web Sites</FONT></U>
|
|
|
|
<P><FONT SIZE=-1>Ada Core Technologies (ACT): <A HREF="http://www.gnat.com/">http://www.gnat.com</A></FONT>
|
|
<BR><FONT SIZE=-1>Ada Information Clearinghouse (AIC): <A HREF="http://sw-eng.falls-church.va.us/">http://sw-eng.falls-church.va.us/</A></FONT>
|
|
<BR><FONT SIZE=-1>Gnat FTP Site: <A HREF="ftp://cs.nyu.edu/pub/gnat">ftp://cs.nyu.edu/pub/gnat</A></FONT>
|
|
<BR><FONT SIZE=-1>Home of the Brave Ada Programmers (HBAP): <A HREF="http://www.adahome.com/">http://www.adahome.com</A></FONT>
|
|
<BR><FONT SIZE=-1>Public Ada Archive (PAL): <A HREF="http://www.wustl.edu/">http://www.wustl.edu</A></FONT>
|
|
<BR><FONT SIZE=-1>Samba: <A HREF="http://samba.anu.edu.au/samba/">http://samba.anu.edu.au/samba/</A></FONT>
|
|
|
|
<P><U><FONT SIZE=-1>Books</FONT></U>
|
|
|
|
<P><FONT SIZE=-1><U>Professional Java Fundamentals</U>. Cohen, Shy et al.
|
|
Wrox Press, 1996.</FONT>
|
|
<BR><FONT SIZE=-1><U>Programming in Ada 95</U>. Barnes, John. Addison Wesley,
|
|
1996.</FONT>
|
|
<BR><FONT SIZE=-1><U>C++ for Professional Programmers</U>. Blaha, Stephen.
|
|
Int'l Thomson Computer Press, 1995.</FONT>
|
|
<BR>
|
|
<H3>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Ken O. Burtch <BR>
|
|
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./nelson.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./gm.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
<!--startcut ==========================================================-->
|
|
</BODY>
|
|
</HTML>
|
|
<!--endcut ============================================================-->
|