-
Notifications
You must be signed in to change notification settings - Fork 6
/
intro_whyworks.html
464 lines (412 loc) · 28.5 KB
/
intro_whyworks.html
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/transitional.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META NAME="description" CONTENT="SparForte language documentation">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SparForte - Intro - Preface</title>
<link rel="StyleSheet" type="text/css" media="screen" href="art/sparforte.css">
</head>
<body bgcolor="#FFFFFF"><a name="top"></a>
<table width="100%" cellspacing="0" cellpadding="0" summary="page layout">
<tr><td align="left"><img src="art/sparforte.png" alt="[SparForte]"></td><td align="right"><img src="art/header_cloud.png" alt="[Banner]"></td></tr>
<tr><td background="art/header_border.png" height="10" colspan="2"></td></tr>
<tr><td colspan="2"><table width="100%" border="0" cellspacing="0" cellpadding="0" summary="top menu">
<tr>
<td width="10"><img src="art/menu_left.png" alt="[Top Main Menu]"></td>
<td width="85" background="art/menu_border.png" align="center"><a class="menutext" href="intro_preface.html"><b>Intro</b></a></td>
<td background="art/menu_border.png" align="center"><span class="menutext">|</span></td>
<td width="85" background="art/menu_border.png" align="center"><a class="menutext" href="tutorial_1.html">Tutorials</a></td>
<td background="art/menu_border.png" align="center"><span class="menutext">|</span></td>
<td width="85" background="art/menu_border.png" align="center"><a class="menutext" href="ref_adascript.html">Reference</a></td>
<td background="art/menu_border.png" align="center"><span class="menutext">|</span></td>
<td width="85" background="art/menu_border.png" align="center"><a class="menutext" href="packages.html">Packages</a></td>
<td background="art/menu_border.png" align="center"><span class="menutext">|</span></td>
<td width="85" background="art/menu_border.png" align="center"><a class="menutext" href="../examples/index.html">Examples</a></td>
<td background="art/menu_border.png" align="center"><span class="menutext">|</span></td>
<td width="85" background="art/menu_border.png" align="center"><a class="menutext" href="cont_vision.html">Contributors</a></td>
<td background="art/menu_border.png" align="center"> </td>
<td background="art/menu_border.png" align="right"><a href="intro_preface.html"><img src="art/left_arrow.png" width="27" height="24" alt="[Back Page]" border="0"></a><span class="menutext"> </span><a href="intro_compare.html"><img src="art/right_arrow.png" width="27" height="24" alt="[Next Page]" border="0"></a></td>
<td background="art/menu_border.png"> </td>
</tr></table></td></tr>
</table>
<noscript>
<a href="#submenu">[Jump to Submenu]</a>
<hr />
</noscript>
<table width="100%" border="0" cellspacing="0" cellpadding="0" summary="content and right submenu">
<tr>
<td align="left" valign="top">
<!-- Content Area -->
<h2>Why It Works</h2>
<h3>How It Started</h3>
<p><b>An Age of Hype</b></p>
<img class="padded_left" src="pictures/bugs_bunny_punch.gif" width="128" height="96" alt="[Bugs Bunny]" \>
<p>In the book "Facts and Fallacies of Software Engineering", long-time software
design researcher Robert L. Glass discusses many myths of running a computer
division in a modern company. The reality of computing is that most new
techniques, bureaucratic processes, advanced tools and management methods simply
don't live up to their promises. Glass describes it in this way:</p>
<p><i>"Hype is the plague on the house of software. Most software tools and
technique improvements account for about 5 to 35 percent increase in productivity
and quality. But at one time or another, most of those same improvements have
been claimed by someone to have 'order of magnitude' of benefits".</i></p>
<p>There's been any number of so-called "magic bullets": smarter editors, extreme programming, agile programming, CASE tools, object-oriented programming, Service Oriented Architecture, etc. Some of these had no improvement in productivity, others small improvements. But none of these were the break-though techniques that would improve productivity by a factor of 10 or more.</p>
<p>Even the optimistic value of 35%, according to Mr. Glass, was not achieved through some new technique. That's the improvement gained by code reuse--breaking your program up into reusable subroutines by defining plain old functions or classes.</p>
<p>A little common sense would back that up. Consider programming languages. Java was designed as an improved version of C++. Problems are expressed in the same way as C++. The fundamental syntax is the same, with the same well-known flaws. Java and C++ (and C# for that matter) are tools of the same category. So one should not expect Java to make exponential productivity improvements over C++. The same is true of PHP versus Perl as PHP was based on Perl.</p>
<p>So where does that leave my claims about SparForte as a better way to develop software? Is it hype like extreme programming?</p>
<p><b>Old Software Never Goes Away...</b></p>
<p>Unlike Java, SparForte was not designed to remove annoying quirks in a programming language. It was not intended to be an enhanced Bourne Shell or to solve the problems of Ada 95, the language it is based on. SparForte was designed to solve problems in software management problems in businesses environments.</p>
<p>I was perplexed with the problem that I refer to as code aging. I once worked in a company that had created a simple shell script to print a Windows spreadsheet on a UNIX printer. This shell script grew and grew until it became a web-based report generator with thousands of lines of programming.</p>
<p>But the programming was all written in shell scripts. Shell scripts use a different programming paradigm than other programming languages. Shell variables do not function like variables in other languages. Shell if statements do not function like if statements in other languages. To convert a shell script into a standard programming language, the solution would have to be constructed in a different way. That means a total rewrite of the software. What was needed was a shell that used the same paradigm as another, more popular programming language.</p>
<p>There are plenty of shells based on My Favourite Language. What I needed was a language to solve the code aging problem: something designed to handle small programming that could evolve and grow to millions of lines of code maintained by dozens of developers without falling apart under the language's limitations. The only top-20 programming language to meet that criteria was Ada. Ada is a language designed from the ground up for large teams, large-scale development and high reliability. Projects scale up over time and Ada was a language designed to be scalable. It was the only suitable language on which to base SparForte (Is Ada Good for My Business?, Aonix White Paper).</p>
<p><b>Why No Bullets?</b></p>
<p>This problem of software failing to be maintained as it grows or changes is not new. Author Jaron Lanier expressed the same concerns in the "Wired 24/7" episode of TV Ontario's current affairs program, "The Agenda". Lanier pointed out that hardware follows the predictable pattern of Moore's Law while software does not.</p>
<p>"Sometimes," Mr. Glass writes, "I think what is happening is a kind of 'hardware envy'. Our computer hardware brethren have made remarkable progress in a few decades that computer hardware has been produced. Cheaper/better/faster happens over and over again in that hardware world. Friends who study the history of technology tell me that progress in the computer hardware field is probably faster than that in any other field, ever. Perhaps we in software are so envious of that progress that we pretend that it is happening--or can happen--to us."</p>
<p>I would also agree with Mr. Glass that the software industry lacks a lot of serious, objective evaluations of claims. The problem is not limited to the software industry. In Wired magazine (Wired Home Page), researcher David Eddy discusses the problem of getting good evidence in medical trials. In the late 1980's, Eddy recommended that insurance companies not fund a new and risky cancer treatment on the grounds that it had no solid proof of results. "The dispute ignited the national media. 'The country was in a furor," Eddy says. 'We held the line and stopped a dangerous treatment,' he says. 'The first rule is Thou Shalt Have Evidence.'" ("The Body Synthetic", Wired December 2009). The cancer treatment was later proven to be a failure.</p>
<p><b>Different Approach, Different Results</b></p>
<p>The Stephen F. Zeigler study (Comparing Development Costs of C and Ada, Rational White Paper, also referenced in "Business Shell: Critics say 'I Don't Get It'", Lone Coder), which shows Ada delivers projects with many times less bugs that the leading conventional language, and with 50% less cost, is based on only one project (although that project had nearly two million lines of code and had large teams of skilled developers). It also hasn't be repeated, to the best of my knowledge, with tools developed in the last few years.</p>
<p>True, the Business Shell is only version 1.0 and there's a lot more I would do with it if I had time, funding or an active development community. I think there is a lesson here. The SparForte approach has a lot of surface improvements over conventional languages ("Doing it Right with the Business Shell", Lone Coder). However, what makes the Business Shell more than hype is that it is designed to tackle big, enduring projects. It requires a different way of thinking about software. That's what it takes to invent truly revolutionary software technology. Can the SparForte approach improve productivity by a full order of magnitude? That's not feasible for any software tool or management technique. Yet there are valid studies that suggest it could greatly improve quality and cut production costs by half over the long term. That's a lot better than CASE tools, Extreme Programming, Agile Programming or even object-oriented programming have deliver. This is because it looks at the big picture.</p>
<p>Software tools and methodologies often focus on short-term issues for product delivery, not the long-term problem of managing software. The software industry needs more people working to solve the big problems and we need more unbiased evidence to qualify how we can put these techniques and tools to best use.</p>
<p>Ken Burtch<br />
The Lone Coder: The Business Shell in an Age of Hype<br />
December 23, 2009<br />
http://www.pegasoft.ca/coder_december_2009.html</p>
<h3><a name="day"></a>A Programmer's Day</h3>
<center>
<table cellspacing="0" cellpadding="0" width="80%" border="0">
<tr>
<td><p><b>Pointy-haired Boss</b>: I've decided to standardize the department on a new programming language.<br />
<b>Dilbert</b>: With all due respect, that sort of decision should be made by someone who knows his mass from a black hole.<br />
<b>Pointy-haired Boss</b>: The vendor warned me that you couldn't be objective.</p>
</tr>
</table>
</center>
<p>A typical programmer views his day as doing productive coding or sitting
in toxic meetings.</p>
<p><img src="pictures/programmers_day.png" alt="[Pie Graph of Programmers Day - Wrong]" width="481" height="289"></p>
<p>If this view is true, a good language is one that makes coding faster.
One that automates work, reduces keystrokes. But in "No Silver Bullet",
an essay by Fred ("I invented the 8-bit byte") Brooks, Brooks claims that
no programming language produces more than a 5% improvement over another.
This doesn't match up with the view of a programmer's day, where there's a
lot of time spent coding and a small improvement in any of it should give a
good reward.</p>
<p>The graph above is how a programmer <i>feels</i> their time was spent.
It's "gut level reasoning", how it feels in their emotions.
Video tapes of programmers show that they spend very little time typing
at all. When you're working on solving tough problems, you may not be
aware of what you are actually doing. Programmers are terrible at
evaluating how they spend their time. When you scientifically examine
the work done over the life of a project, the results will vary depending
on the project, but on average a programmers's time looks like this:</p>
<p><img src="pictures/programmers_real_day.png" alt="[Pie Graph of Programmers Day - Right"><br>Source: Facts and Fallacies of Software Engineering</p>
<p>In this view, it's clear why most scripting languages (including PHP,
Perl, Ruby and Lua) are really all the same: they all focus on a tiny
slice of the programmer's day, the time spent typing. What they should
be focusing on are the big slices of time: maintenance/studying old code,
designing/thinking and debugging/testing. The language that saves you
the most here will save you the most time over a project.</p>
<p>As projects get larger, these issues become more important. They
also get more important as a project ages. (Code Complete 2)</p>
<h3><a name="tech"></a>Why SparForte is Different</h3>
<p>SparForte doesn't aim to minimize keystrokes. It targets solutions
to what studies show are real problems in today's software teams:</p>
<ul>
<li><b>Programming-in-the-Large</b> - scaling up for large projects and
teams, following existing standards where possible. SparForte chooses
proven technologies in these areas and adapts them for scripting.</li>
<li><b>Architecture</b> - features that control the overall scope or
shape of a project, including the ability to enable/disable language
features for a project or enforce high-level design requirements.</li>
<li><b>Code Reuse</b> - source code should be sharable between the client or server,
templates or applications, or other software developers by adopting some
standard syntax and semantics.</li>
<li><b>Training</b> - by adopting a base standard syntax and semantics,
the learning curve for software developers is reduced.
This leads to less confusion and allows more peer review.</li>
<li><b>Modal Thinking</b> - software developers are proned, when
using similar languages, to use the syntax of one language when progrmming in a
different language. This results in statements that are semantically correct
but syntactically wrong for a particular tool. SparForte addresses this
issue with compatibility with common standards, such as the ability to run
SQL queries on the command line.</li>
<li><b>Code Aging</b> - related to architecture and code reuse, script
tend to evolve over time
outstripping the capabilities of the original languages. These legacy
scripts need to be ported to a different environment which often requires
a complete rewrite into a different language. SparForte starts with a
design to address this problem and contains tools to help scripts grow and
evolve.</li>
<li><b>Design Standardization</b> - what I refer to as the "Kitchen
Sink Syndrome". Many scripting languages have begin as a project to solve a
particular issue. For example, Python was created to be easy to use and Perl
was an amalgamation of several UNIX tools. As the languages age,
new features are added that corrupt the original design goals. Python is no longer easy
to use. Perl's syntax conflicts with the original UNIX tools that inspired it.
This is results in similar but incompatible tools with unclear goals.
SparForte starts with an advanced, proven design and modifies it for
scripting. It emphasizes modularity and orthogonality--doing the most
with the fewest, well-designed, targetted features.</li>
<li><b>Reliability</b> - many scripting tools have poor error checking and
error-prone syntax which require longer testing times and greater chances
of latent run-time errors. Testing applications in these languages require
testing not only high-level functionality but also additional tests for
low-level language issues. Error reduction is a key goal in SparForte.</li>
<li><b>Maintenance</b> - SparForte uses an easy-to-read syntax, with
data hiding, modularity and program restrictions to oversee the design of
a project, while maintaining portability and quality.</li>
<li><b>Programming-by-Contract</b> - By using custom data types, developers
can focus on business data requirements instead of low-level bytes and ints.</li>
</ul>
<p>By tackling these issues, SparForte attempts to greatly reduce the
cost of software development and maintenance and improve the overall
quality of the work.</p>
<h3><a name="abee"></a>A Strong Foundation</h3>
<img class="padded_right" src="pictures/bridge_under_construction.jpg" width="128" height="96" alt="[Bridge Under Construction]" \>
<p>As long as the command prompt, compiled applications, web templates and
scripts remain in fundamental dischord, these issues will be difficult to
solve. These development tools cannot agree even on basic issues as
to what constitutes a boolean, the working of a for loop, or the syntax for
an associative array. There needs to be some structural design agreement
between the development tools in order to create an enterprise-wide, open
source software environment standard.</p>
<p>SparForte is part of a set of tools built around the ISO
Ada standard to create a standardized framework for create applications.
The other tools include:
</p><ul>
<li><b>GCC/GNAT</b> - to create compiled applications</li>
<li><b>JGNAT</b> - to create JVM byte code</li>
<li><b>A#</b> - to create .Net applets</li>
<li><b>SparForte</b> - command prompt, template engine and scripts</li>
</ul>
<p>Together, these tools compose a standardized framework for developing web
templates, server applications, client side JVM and .Net applets, scripts
and enterprise-wide computing. In all cases, the basic data types,
control structures and libraries available to the developer have the same
names, the same syntax and the same semantics. A boolean at the command
prompt is like a boolean in a script is like a boolean in an HTML template
and so forth. There is agreement at a fundamental structural level between
the development tools. This agreement promotes code reuse, simplifies
training and peer review, reduces modal thinking errors, makes code age-able
and scalable.</p>
<p>In order to achieve standardization, ABEE uses the Ada 95 language.
Ada 95 is the only open source language that provides all of the following
functionality:</p>
<ul>
<li><b>Standardized</b> - Ada is an ISO standard which gives the language
long life and compatibility between different vendors.
</li><li><b>Enterprise Features</b> - Ada is a language designed to handle large,
complex applications. It has extensive features for structuring and testing
multi-developer projects.</li>
<li><b>Strong Error Checking</b> - Ada puts a strong emphasis on catching as
many errors as possible at compile-time, reducing run-time errors and improving
reliability</li>
<li><b>Widely Available</b> - GCC has native Ada support and is included with
most versions of BSD's and Linux.</li>
<li><b>Easily Read and Understood</b> - The syntax of the language avoids
cryptic symbols and promotes code review.</li>
<li><b>Good Performance</b> - GCC Ada binary executables runs at comparable
speeds to GCC C.</li>
<li><b>Open Source</b> - The source code to GCC and SparForte is freely available.</li>
<li><b>Industry Recognized</b> - GNAT Pro, the commercially supported version
of GCC Ada, was a runner up for the <u>Datamation's Enterprise Linux Product of
the Year Award for 2005</u>.<p></p>
</li></ul>
<h3><a name="abee"></a>Across a Business: An Enterprise Solution</h3>
<p>The following chart shows how SparForte, JGNAT, A# and GCC Ada/GNAT
form a multi-tier web development framework comparable to Java's J2EE:</p>
<p>
</p>
<center>
<p><img src="pictures/bush2ee.gif" alt="[Ada-SpareForte Enterprise Model]" height="350" width="425"></p>
</center>
<p><i><b>Figure</b>: A Multitier Enterprise Application Model with SparForte (BUSH)
</i></p>
<p><b><span style="font-weight: bold;"><span style="font-weight: bold;">Client-Side
Presentation</span></span></b><br>
</p>
<p>On a user's desktop, native Ada 95 applications can be
created with the Win32 version of Ada Core Techologies'
GNAT (another name for GCC Ada) or one of the commercial desktop Ada
compilers. Alternatively JVM applications can be created with Ada
Core Technologies' <b>JGNAT</b> Java byte code compiler.
Or create .Net applications using <b>A#</b>, the Ada .Net
compiler. You
can also create JVM or .Net applets to run in a client's web
browser. In all these cases, using Ada means that developers need
to know only one core language.</p>
<p><b><span style="font-weight: bold;">Server-Side Presentation<br>
</span></b></p>
<p>The web server can use SparForte web
templates to create web pages with embedded AdaScript code. Like
JSP, ASP, PHP and similar products, SparForte can connect to databases and
generate new web content dynamically. SparForte templates can
communicate to the other layers by opening TCP/IP sockets (for remote
machines) or by files (on local machines). Using AdaScript for
your templates means that developments use the same core language as
used in the other layers.<br>
</p>
<p><b><span style="font-weight: bold;">Server-Side Business Logic<br>
</span></b></p>
<p>To manage and cache information, compiled applications and server
software can be built using GCC Ada. The server software gain the
speed advantage of binary code for the host machine while still being
able to communicate with the other tiers through files, TCP/IP
sockets. Cluster computer can be done using GCC Ada's GLADE
environment: GLADE partitions a single application over multiple
computers without worrying about the underlying operating system.
You can also share objects using Ada's CORBA implementation.
Process control and information flow can be coordinated by SparForte scripts.</p>
<p><b><span style="font-weight: bold;">Enterprise Information Systems<br>
</span></b></p>
<p>SparForte has integrated support for SQL so there usually no reason to
reply
on a database client program. The stored procedure language for most
databases is very similar to AdaScript and is intuitive to learn and
use
if developers are already familiar with SparForte. The database package with
SparForte
is also available with GCC Ada applications.</p>
<p></p>
<p>
At each layer, developers will need to know only one core language,
with the same basic constructions and types. For example, a "for
loop" is written the same way in any tier, whether for a .Net
application or a SparForte web template. This reduces training costs
and makes source code portable between the tiers over solutions that
require different languages at each tier. In addition, the same
core packages are available (string handling, math, lock file handling,
I/O, and others).</p>
<p><b><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;"></span></span></span></b>
</p>
<p>In comparison, consider Sun's <b>Java 2 Enterprise Edition</b>
(J2EE) environment.
Java "components" (small
applications)
can be distributed across an information system using secure
connections
to negotiate with one another. Ignoring Sun's marketing buzzwords, you
can see that the open source SparForte approach is as good as or superior to
J2EE:
</p>
<ul>
<li> <b>multitiered applications</b> - Ada applications and SparForte
scripts
can
be distributed across multiple machines and accessed using secure
connections
using proven technologies. Ada applications can be multithreaded
and can multiplex requests from multiple sources the same way as Java
applications.
Scripts can handle multiple requests through multiple user
sessions--SparForte
features such as the Lock_Files package can ensure coordinated access
to
files.</li>
<li> <b>J2EE applications</b> - Java can partition large
applications
across
multiple machines transparently. So can GCC Ada using the GLADE
distributed
application tool.</li>
<li> <b>Java servlets</b> - GCC Ada and SparForte both have support for
creating
servlets (web server applications).</li>
<li> <b>EJB (Enterprise Java Beans)</b> - the tools to implement
secure
communication
between processes and machines have long been available under Linux,
adhering
to industry standards such as CORBA and not requiring proprietary
systems
like the ones Java uses.</li>
</ul>
<p>J2EE is not your only solution for writing multitiered enterprise
applications.
The SparForte strategy offers the same advantages as solutions offered by
Sun.
Reusable components, client interaction using HTML/XML/HTTP,
scalability
and high availability over a network are all possible with a SparForte
strategy. Ada-SparForte allows applications to be written once and run
everywhere,
supports CORBA technology to interface with existing enterprise
resources,
and creates a single standard that can be use effectively throughout an
enterprise. Plus you get to use a truly scalable language system that
cuts
down training expenses and allows applications to be "scaled up" with
minimum
effort.</p>
<h3><a name="comm"></a>Commercial Options</h3>
<p>GCC Ada is available in an award-winning, commercial, supported edition
called GNAT Pro.</p>
<p>Aonix produces a commercial Ada compiler for Linux and other platforms.</p>
</p>
<h3><a name="prob4"></a>How SparForte Manages Code Aging: The Progressive Development Model</h3>
<p>SparForte recognizes a fundamental problem in business programming.
Programmers
with limited time and resources are often required to write up quick
scripts
to solve pressing business problems. Once the script is written, they
have
no time to return to the script to write a "proper" solution. Scripts,
designed for rapid and simple solutions, continue to grow and mutate,
becoming
rapidly unreadable and easily broken, leaving a complete rewrite in a
different
language as the only way to upgrade the software.</p>
<p>To combat this problem, SparForte scripts can be developed using a
progressive
development model.
</p>
<p>In its native mode, SparForte provides a quick and easy environment to
write
short Linux programs. Like BASH, Perl, PHP or Python, variables can be declared anywhere and
can be typeless. Although its structure is relaxed compared to a
compiled
programming language, SparForte's syntax is both easy to read and
provides much more security against typing errors. Common
errors in these other scripting languages such as missing a quotation or spelling mistakes on
variable
names are quickly caught.
</p>
<p>As an SparForte script grows over time, becoming longer and carring more
responsibility, the structure of the script can be improved by using
"pragma
ada_95". This SparForte directive disables many of the "lazy" features
such as typeless variables and requires closer conformation to GCC Ada.
A programmer can "tighten" his code as part of his regular duties,
add type checking, and ensure that the script's structure is sound and
the source is readable without resorting to a complete rewrite. Some
important scripting features, like running commands in the background
with "&", are still allowed.
</p>
<p>Finally, if the SparForte script continues to grow and is no longer
suitable
as a script, the script can be compiled with minimum changes as an Ada
program. With other shells and scripting languages, a developer would
have
no choice but to rewrite the script "from scratch".
</p>
<p>SparForte also has built-in obsolecense control using "pragma deprecated"
(or "pragma depreciated"). This marks obsolete scripts or templates being
phased out of a project, allowing them to be removed in a controlled manner
without disrupting the project.</p>
</td>
<td bgcolor="#d3c7f8" width="150" align="right" valign="top"><noscript><hr /></noscript><img src="art/right_menu_top.png" width="150" height="24" alt="[Right Submenu]"><br><a name="submenu"></a>
<p class="rmt"><a class="rightmenutext" href="intro_preface.html"> Preface</a></p>
<p class="rmt"><a class="rightmenutext" href="intro_whyworks.html"> <b>Why It Works</b></a></p>
<p class="rmt"><a class="rightmenutext" href="intro_compare.html"> Comparisons</a></p>
<p class="rmt"><a class="rightmenutext" href="intro_sffaq.html"> FAQ</a></p>
</td>
</tr>
<tr>
<td bgcolor="#d3c7f8" align="left" valign="middle"><a href="#top"><img src="art/up_arrow.png" width="24" height="27" border="0" alt="[Back to Top]"><span> Back To Top</span></a></td>
<td bgcolor="#d3c7f8" align="center" valign="middle"><img src="art/forte_small.png" width="26" height="32" border="0" alt="[Small Forte Symbol]"></td>
</tr>
</table>
</body>
</html>