Factor project is a language based around a programming paradigm that encourages simple, testable and reusable code.
Factor's main influences are Joy for the syntax, Forth for the implementation techniques, and Lisp for the object model. The source is released under a BSD-style license. Share it freely.
Here are some key features of "Factor":
· Runs on FreeBSD, Linux, Mac OS X and Windows.
· Native code compiler for x86 and PowerPC.
· Minimal postfix syntax with an extensible parser.
· Image-based environment offering orthogonal persistence.
· Polymorphism through predicate-based dynamic dispatch.
· Language support for delegation-based design patterns.
· Data structures include linked lists, vectors, and hashtables.
· User-defined types, known as tuples.
· Rich math library including big integers, floating point, ratios, complex numbers.
· Profiling, tracing, single-stepping, browsing.
· Static stack effect inference.
· HTTP server and continuation-based web framework.
· C library interface.
· SDL graphics library interface.
· Focus on interactive and test-driven development.
· A plugin for the jEdit text editor offers a powerful development environment.
Factor is defined in terms of itself as much as possible. Every layer of the system is inspectable and editable at runtime. Everything in the system carries consistent object semantics, and every object can be queried for its type and shape.
A powerful meta-level takes advantage of the duality between code and data. The object system, and even tools such as steppers, browsers, inspectors and profilers are built within the language framework.
Nothing is hidden from the programmer. Factor is designed not as a black box, but a tool box. The programmer is encouraged to mold the language to fit the problem.
Everything is as simple as possible. The system should be small enough that one person can study the code and understand it completely. Unnecessary code and features are not included.