Category:FormulaOne
This programming language may be used to instruct a computer to perform a task.
Official website |
---|
Execution method: | Compiled (bytecode) |
---|---|
Garbage collected: | No |
Parameter passing methods: | By reference |
Type strength: | Weak |
Type expression: | Implicit |
Type checking: | Dynamic, Static |
Lang tag(s): | FormulaOne |
See Also: |
|
FormulaOne is the name of the language, implementation, and environment.
FormulaOne integrates procedural, declarative and database programming into one highly efficient language. Procedural programming shows weakness when faced with problems concerning logic reasoning. FormulaOne, being a declarative language as well, has the tools built into its inference engine, which organizes information and then, when queried, finds a way to logically interpret and process that information.
If you are a problem solver, FormulaOne's truly unique implementation of constraints will be invaluable. They work readily with FormulaOne's highly structured and modular nature to produce better code. "Better" code means more readable, more error-free and easier to maintain and change.
FormulaOne is also a complete programming environment. At the heart the language itself, extended to cover the paradigms of database languages (fourth generation) and logic languages (fifth generation). FormulaOne has the readability and efficiency of third-generation languages like BASIC, C, and Pascal, and the database update and query capabilities of fourth-generation systems. These features are all brought together by the powers of symbolic computing and logic programming with backtracking search - the same power as in fifth-generation languages like Prolog.
Along with the FormulaOne language comes a complete visually oriented IDE environment. In the FormulaOne system, users can edit, compile, and run programs; build, query, and update database files; and create interlocking structures of program modules and databases of any desired complexity.
FormulaOne is a relatively new programming language, so it's useful to compare and contrast it to other popular programming languages. The foundations of FormulaOne are most like those of Prolog. Like Prolog, FormulaOne is based on mathematical logic, with a precise declarative semantics; programs are run by asking questions rather than giving commands. It is able to handle symbolic variables, whose values are determined by backtracking search. However, FormulaOne recognizes the deficiencies of Prolog in areas where languages like Pascal do better.
As in Pascal, FormulaOne has a clear but concise nested program structure, rather than the difficult-to-read clauses of Prolog; 'if' and 'case' constructs that improve readability; produce fast, compact, non-backtracking code when desired.
The type structure of FormulaOne is more like that of C. You can build arrays, structures, lists, and unions which are implemented as efficiently as they are in C. And as in C, terms of one type can be recast into terms of another type, when needed (and possible). FormulaOne also has many advanced features which are not found in either Prolog, Pascal or C. These include a leading-edge decision procedure for systems of constraints composed of arithmetic formulas, built into the language itself; a database file query system which is fully integrated with programs; variable modes, which allow the language to check the data flow in programs for correctness; useful data types not found in most languages, such as relations and injections; a module system which supports incremental compilation, linking, and loading of program modules.
The basic unit of programming in FormulaOne is the formula. A formula is a statement about the world, phrased in a language similar to mathematical logic. When we enter a formula into the query window of the FormulaOne system, it is interpreted as a query; the system will respond by stating whether the query is true, or by stating the conditions under which it's true.
- Execution method/Compiled/Bytecode
- Garbage collection/No
- Parameter passing/By reference
- Typing/Weak
- Typing/Expression/Implicit
- Typing/Checking/Dynamic
- Typing/Checking/Static
- Programming Languages
- Programming paradigm/Imperative
- Programming paradigm/Procedural
- Programming paradigm/Functional
- Programming paradigm/Generic