Introduction

Natura is a new programming language meant to provide a better medium of expression for basic mathematical computations than is presently available using open source tools. Given the considerable scope of this goal, the language must be extended with functionality incrementally so that viable releases can be submitted to the public with some frequency. Thus, the language has begun by taking a C-like structure and extending this structure with features and functions of use in basic number theoretic studies. The features currently incorporated into the language are arbitrary precision integers, search calls, many common mathematical functions and a context designed for modular arithmetic along with operators dependent on this context for their interpretation. When this subset performs reliably, we will begin incorporating another basic field of mathematical operations and operands: the rational numbers or the real numbers seem good possibilities. We hope to continue this incremental approach abritrarily, eventully producing a language tailored to the expressed needs of its users.

As such, your comments on the language are much needed. If there are bugs in the language's implementation (or inherent in its structure), please tell us. If there are features which seem necessary to you, please tell us. If there is anything you think you can contribute, please tell us. We truly hope to make the language as useful as possible and to do so fully we need to be told what is useful.

Natura's History

Natura began as a class project for Al Aho's Programming Languages and Translators class at Columbia during the Spring of 2004. It was originally designed and implemented by a team of five members: John Myles White, Lyuba Golub, Mike Wasserman, Adam Cooper and Ludvig Ungewitter. Because of the class's requirements and the short timeframe in which the project had to be completed, Natura was implemented as a language that would translate into Java using the ANTLR translator-generation system. This approach has benefits, of course: Natura is highly portable and reasonably efficient. It does, though, also have difficulties. All Natura constructs require a fairly intuitive translation into Java (though we may extend Java with abritrary classes) to allow translation using ANTLR.

The original running translator for the language was submitted for grading and comments during May 2004. After submission, we discovered that the language's implementation of its basic operations had a small flaw: the gcd operation failed to test its operands to insure they could be used in the Euclidean algorithm and hence crashed when 0 was submitted as an operand. This proved to be disastrous as 0 was submitted as an operand to any search call using gcd or one of the many other functions that required gcd.

Natura's Near Future

Considering Natura's imperfect beginnings, we have had to clean up the language a bit before releasing it to the general public. The sourcecode for the language as it stood upon submission in May 2004 is already on CVS; by the time this website is posted we hope to have the sourcecode for a fixed translator on CVS. When the translator is fixed, we will publicly release the sourcecode for the translator, a pre-compiled copy of the translator and the necessary documentation for using the translator. This will be called the v0.1 release and we hope that it will receive some notice from others who will attempt to employ Natura for their own needs.

Contact

If you'd like to help, get in touch with John. His site is www.johnmyleswhite.com and his email is jmw@johnmyleswhite.com.

last updated: 10.14.2004

project hosted by Sourceforge