MATHS Is Not A Programming Language.
- MATHS is not for "writing programs." MATHS uses the characters of ASCII
to express logical and mathematical formulae. Some formulae can be
implemented as systems, objects, data bases, or hardware. It does not depend
on any implementation. MATHS describes ideas that are not algorithms. It
helps all parts of the software process. MATHS stands for "Multi-purpose
Abstractions, Terminology, Heuristics and Symbols."
MATHS is a low-cost improvement to the software process.
- MATHS is designed to make formal methods a part of the software process.
MATHS does not require expensive hardware. MATHS does not need complex
software. A laptop computer with an ASCII editor and printer is all that is
needed.
- MATHS decreases the overhead of making a "good" documentation "look
good." Rigorous specifications in MATHS can be pre-processed, without
additional marking up, ready for a text processor to prepare publication
quality documentation. Many figures can be generated automatically since many
MATHS formulae have a definite graphic representation.
- MATHS minimizes training costs by borrowing from well known notations. It
builds on ideas of Computer Science - EBNF, programming languages, data
bases.... It is simple to set up local electronic help systems for
practitioners.
- MATHS includes features to make documentation and source code reusable.
It enables the creation of an electronic repository of ideas, data and code
ready for reuse. MATHS lets you refer to any published
document or public Internet document and then make use of its content.
- MATHS is not "Artificial Intelligence" but "Intelligence Amplification."
It uses the existing skills and knowledge of its users but makes the
recording of thoughts a computer aided process.
MATHS is not a method. It fits many methods.
- It will support many methods and fit with any flavor of programming.
- Methods::= Equational ADT specifications
| Data directed design (eg LCP, JSP, ...)
| Dynamic analysis and design(eg JSD, CSP, ...)
| Data analysis(Codd, Bachman, Chen...)
| Structured analysis and design(eg Yourdon, SSADM, ... )
| Backtrack Programming
| Expert Systems
| Rapid prototyping
| Flavor programming
- | ... ,
where
- Flavor::=
- ( hacked | literate | structured | disciplined | object_oriented |...)
- & ( low_level | high_level | very_high_level | 4GL | meta | ...)
- & ( spaghetti | functional | recursive | modular | concurrent | logic |...)
- ~ ( linear | quadratic | dynamic | integer |... ).
MATHS documents are modular and reusable.
- The MATHS user can describe complex things piece by piece. Instead of one
complex description MATHS makes it possible to define each part of the problem
independently of the rest. There are rules for combining the pieces into a
whole. Research and practice shows that multiple descriptions are better than
a monolithic description.
- MATHS encourages working from what is, to what should be, and then to
detailed design. Understanding, documenting, and solving problems replaces 90%
of what has been called "programming." Research and practice shows how to use
MATHS to express syntactic and semantic structures and translate them into
code. Experience shows that such systems are easier to understand, validate,
and maintain.
- MATHS shows how to recognize and parse the formal parts of documentation.
The formal parts can be organized, summarized, indexed and checked. MATHS
documents are compatible with Electronic mail and BBS systems. There can be
repositories and encyclopedia of ideas.
Current Status
A prototype exists. Most of College Algebra, Discrete Mathematics,
etc. plus descriptions of C, Ada, EBNF, Floating and integer arithmetic, nroff
macros, etc have been expressed in MATHS. A formal definition is being
developed. Prototype tools are being designed and tested.
History
- I've been working on the notation since I first tried to prepare a set
of notes on grammar theory on a Frieden Flexowriter... It has developed
through a about 20 or 30 prototypes since then. A necessarily incomplete
prototype for the World-Wide-Web is publically available at
[ http://cse.csusb.edu/dick/ ]
Acknowledgements and Disclaimers.
- MATHS would not have come to being without the support provided by the
Computer Science and Engineering Department of the
California State University, San Bernardino.
- MATHS is the sole invention and
construction of Richard J. Botting. It may not reflect the opinions, policies
or beliefs of any other being, system, or organization with which he has been
associated.
- This document describes an idea and not a product or service. There is no
guarantee of positive results since MATHS requires intelligence, knowledge and
skill to be used well. It comes from scientific research with the primary
goal of increasing knowledge. I will modify it as its defects are found.
Copyright
- This manifesto is a snapshot of work in progress taken on November 26th 1994.
- This manifesto is not in the "public domain" but it can be copied and
distributed for any purpose as long as this section is included in its
entirety. Permission is given for parts to be quoted if this paragraph is
included. This manifesto may not be changed but suggestions for improvements
sent by Electronic Mail are welcome. Up to date copies are available free by
Electronic Mail from rbotting at CSUSB.
- Any improvements, corrections, additions, or examples in the description
of MATHS should be submitted to me by Electronic Mail. They will be reviewed
and may be returned for improvement or rejected outright. If acceptable then
an acknowledgement of the contribution will be EMailed back. In future
versions the contribution will be acknowledged.
- A similar copywrite holds for published examples of MATHS documentation -
namely that it can be reused (given due acknowledgement), but not altered
without the current owner's permission. Any improvements, corrections,
additions, or examples should be submitted to the current owner of that
document by Electronic Mail. If acceptable they should be acknowledged and
the contribution documented in later versions.
. . . . . . . . . ( end of section Copywrite) <<Contents | End>>