[SparForte][Banner]
[Top Main Menu] Intro | Tutorials | Reference | Packages | Examples | Contributors   [Back Page]      [Next Page]  

Vision

This is a presentation of the general vision of SparForte for volunteers who wish to contribute to this open source project.

[Excel]

SparForte is an Open Source project. It was developed by volunteers mostly in their spare time. Please support SparForte through actively contributing to SparForte, whether helping users with using their first Open Source program, translating the SparForte documentation to languages other than US-English or contributing source code as a programmer.

The latest stable SparForte source code is made available on the PegaSoft web site on the SparForte download page. There is also a Git repository which makes available the latest unstable development version but this is only made available to core SparForte developers. A copy of the development version can be made on request.

We welcome all contributions but please understand that we may reject a contribution if it conflicts with the design or goals of SparForte. Please contact us before beginning any large contributions to SparForte.

Three Languages under One Roof

The languages groups in SparForte are chosen for specific purposes.

GCC Ada provides the main foundation for SparForte (except where Ada's design is incompatible with a scripting language). Start with the power of Ada and then scale it down as needed, rather than starting with a wimpy language and trying to make it stronger.

Bourne shell commands are an alternate syntax. They should be considered an extension to, not a replacement for, the GCC Ada version of commands. These are provided for the command line shell.

SQL are parsed like Bourne shell commands, and support the Bourne shell operators like "|". These are an extension to the Bourne shell commands. These are provided so a database client is not required.

GCC Ada / GNAT: The Foundation of SparForte

Ada was the only Top 20 programming language meeting the requirements of SparForte.

The Ada FAQ describes Ada this way:


Ada is an advanced, modern programming language, designed and standardized to support and strongly encourage widely recognized software engineering principles: reliability, portability, modularity, reusability, programming as a human activity, efficiency, maintainability, information hiding, abstract data types, genericity, concurrent programming, object-oriented programming, etc.

All validated Ada compilers (i.e. a huge majority of the commercial Ada compilers) have passed a controlled validation process using an extensive validation suite. Ada is not a superset or extension of any other language. Ada does not allow the dangerous practices or effects of old languages, although it does provide standardized mechanisms to interface with other languages such as Fortran, Cobol, and C.

Ada is recognized as an excellent vehicle for education in programming and software engineering, including for a first programming course.

Ada is defined by an international standard (the language reference manual, or LRM), which has been revised in 1995. Ada is taught and used all around the world (not just in the USA). Ada is used in a very wide range of applications: banking, medical devices, telecommunications, air traffic control, airplanes, railroad signalling, satellites, rockets, etc.


In "Programming in Ada 95", John Barnes describes Ada as a language for large scale development that stresses integrity and readability. Some of Ada's key goals are readability (programs are read more than the are written), strong typing (preventing confusion between logically distinct items), "programming in the large" (encapsulation and library management), exception handling, data abstraction, object oriented and generic programming, tasking (multithreading) and interfacing with other languages. Ada is commonly used in industries like scientific research, areospace and robotics--areas where programs are large and there is a low tolerance of erros.

Ada was chosen as a language with a proven track record for large-scale, business applications.

General Design Goals

  • All aspects of SparForte should respect the problem of code longevity, should aid in bug removal and facilitate maintenance. SparForte implements concepts like readability, strong typing, safety/reliability, portability, catching the most mistakes possible at script start and features to support for very large programs and teams.
  • Within the limits described here, SparForte should conform to ISO standard Ada and/or GCC Ada. This will ease learning, allow SparForte to work in larger environments, allow for code evolution and reuse, and leverage the proven capabilities of Ada as much as possible.
  • When a feature is provided for convenience, it should either be restricted to the environment where it is a convenience or it should be optionally disabled.
  • Disabled features (like with pragma restriction) can not be "turned back on". Features should only become stronger and tighter, not weaker and looser.
  • As a general rule, make sure a features work with large programs and teams before implementing methods of breaking them as opposed to starting with something quick-and-dirty and trying to "scale it up".
  • Although SparForte is a general purpose language intended for a wide audience, it is recognizing that Ada is a language popular in aerospace, science, finance, robotics, embedded systems and as a language to teach computer science. SparForte should not neglect this support base in its effort to to alienate other clients.
  • SparForte is not a rewrite of the Bourne shell in Ada, nor is it a shell that speaks Ada for the sake of Ada enthusiasts. We want to avoid creating one shell with three full languages, overwhelming the user.
  • When considering features from other languages, such features must be fitted into the SparForte vision: they should avoid unnecessary assumptions, be redesigned to meet issues such as code longevity, and should permit the generalization of features. That is, features should not be copied from another language and dropped "as-is" into SparForte.
  • Anyone seeking to contribute to SparForte should have a good idea of Why SparForte Works.
 
[Right Submenu]

 Vision

 Roadmap

 Source Guide

 UNIX Ports

 Window Ports

 Bindings

[Back to Top] Back To Top [Small Forte Symbol]