File: burtch.html

package info (click to toggle)
lg-issue33 4-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 2,292 kB
  • ctags: 137
  • sloc: makefile: 34; sh: 34
file content (600 lines) | stat: -rw-r--r-- 21,856 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
<!--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>&nbsp;
<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>&nbsp;
<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>&nbsp;
<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>&nbsp;</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&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>gnat 3.09&nbsp;</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&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>20.68&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>0.36&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>0.23</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Long Int assignment&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>20.88&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>0.35&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>0.22</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Long Int multiply&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>29.50&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>0.38&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>0.23</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Array access&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>24.52&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>0.64&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>0.23</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Function Calls&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>15.63&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>1.07&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>0.22</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Strings Concatenation&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>19.29&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>0.35&nbsp;</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>&nbsp;<I><U>Summary of Common Features</U></I></FONT></CENTER>
<FONT SIZE=-1></FONT>&nbsp;
<TABLE BORDER CELLPADDING=7 WIDTH="696" >
<TR>
<TD VALIGN=TOP><B><FONT SIZE=-1></FONT></B></TD>

<TD><B><FONT SIZE=-1>C++&nbsp;</FONT></B></TD>

<TD><B><FONT SIZE=-1>Java&nbsp;</FONT></B></TD>

<TD><B><FONT SIZE=-1>Ada&nbsp;</FONT></B></TD>

<TD><B><FONT SIZE=-1>Delphi</FONT></B></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>&nbsp;<B>Feature</B></FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Objects &amp; Classes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>16-bit Characters&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>NO&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Short Circuiting&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>NO&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Overloading&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>some*&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>*no infix operators</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Inlining&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>NO&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Built-in Multithreading&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>NO&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes*&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>*has 2 kinds</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Multiple Inheritance&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>interfaces&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>NO&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>NO</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Polymorphism&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Private fields&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Built-in Distributed Processing&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>NO&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>NO+&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes*&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>NO&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>*requires free add-on&nbsp;</FONT>
<BR><FONT SIZE=-1>+not built-in, uses a class</FONT></TD>
</TR>

<TR>
<TD VALIGN=TOP><FONT SIZE=-1>Garbage Collection&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>NO&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes*&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>yes&nbsp;</FONT></TD>

<TD><FONT SIZE=-1>*not implemented by gnat</FONT></TD>
</TR>
</TABLE>
<FONT SIZE=-1>&nbsp;</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>&nbsp;</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>&nbsp;
<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>&nbsp;</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>&nbsp;
<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>&nbsp;
<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>&nbsp;
<H3>

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 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 ============================================================-->