Short Description
Finili is a programming language for simple transformations of data.
Status
Design discussions and research are underway, with a formal design process expected to start around January 2011. Current work focuses on collecting a broad, representative set of use cases for using a programming language for simple transformations.
Products
- A programming language, “Finili,” for describing simple transformations of data. Examples of transformations:
- Converting an image file from one file format to another.
- Removing the hue information from a video stream.
- Computing new variables in a table of data.
- Upsampling or downsampling an audio stream.
- Converting a legacy Cobol file to an XML file.
- Displaying a data table as a graph.
- A scripting language, “Finscript,” that applies transformations to files. This might also be a component of the Finili language.
- A runtime environment (RTE) that manages the data files and program files of a Finili project.
- File formats for use within Finili projects.
- The ability to add on programs for common tasks, such as converting from and to specific file formats.
- Documentation for the Finili language and runtime environment.
- Training materials for the Finili language.
- Practical demonstrations of the Finili language.
Process and Quality Objectives
- A newly constructed language that is designed to be easy to teach and easy to read for the narrowly defined purpose of simple transformations of data.
- A degree of compatibility with the data objects and naming conventions of existing software and standards, including XML, HTML, SQL, relational databases, C, Max, R, and OpenOffice.org.
- A programming language that can be constructed in both plain text and XML formats, and losslessly converted between the two formats.
- A streamlined and relatively strict syntax so that the reader or programmer is not responsible for learning many alternate ways of expressing the same actions.
- Interfaces to appropriate scripting languages, including AppleScript.
- A project structure that works as a security zone, with limited ability to access files outside of the project directories from within a program.
- Robust visualization for a running program in the runtime environment.
- The ability to run on a range of computer platforms, and in foreground or background environments.
- A clean-room approach to coding to minimize the risk of outside code being copied into the code base. This objective would seem to preclude anonymous code contributions.
- A public approach to design, so that design ideas and suggestions can be contributed anonymously.