Anatoly Shalyto had offered a new paradigm of programming using an automate as a base abstraction. It was named as Automata Programming, Programming with Obvious State Dedication or a Switch-technology. This technology is based on projecting of systems and programs as a set of connected finite automata. Each automate is described by a connections scheme and a state transition graph. There is a formal and isomorphic way to generate a skeleton code for systems functionality implementation on the base of these two descriptions. This method doesn't depend on the platform, operating system or programming language. It can be implemented even on the microcontrollers with the available memory near 2Kb.
Traditional way of using automata in applied programming lies in tasks of language recognition, but in our method they are used for everything. Switch-technology programming is rather simple, useful. Programs which are written using suggested technology are easy to modify or enlarge, simply documenting and reporting. In this method automata has three aspects: they are used for specification, implementation and reporting. There are four fields for applying of Switch-technology: logical control, reactive systems, object-oriented tasks and calculating algorithms. We have complete examples of the following systems and solved tasks
- controlling system for tank for the Robocode game (sponsored by IBM). Our tank "Cynical" was decided to be one of the best in the world
- a lot of computer games (Lines, Bomber, Sea Wars and many others)
- calculator (like Stroustrup's, but better)
- controlling system for lift (like Knuth's, but better)
- conception of visualization of calculating algorithms
- method of object-oriented programming using automata (with obvious state extracting)
- task of synchronization of the chain of the shooters, task about "philosophers dinner"; task of Hanoi towers, task of knights move and other well-known algorithms
- creating of interactive sets of problems using Macromedia Flash
- 3D graphics engine
- controlling systems for semaphores, coffee-machine, turnstile, cars, valves and so on
- windows management systems
- controlling system for ship diesel generator
- controlling system for cold rolling shop
- and many many others.
We also made several investigations in the field of cellular automata
- invented the formalism of generalized coordinates for cellular automata grids
- begin to develop CAMEL (Cellular Automata Modeling Environment & Library) system, which is desired to be simple, extensible workspace for complicated cellular calculations. A part of CAMEL, named CADLib (Cellular Automata Developing LIBrary) is designing to present rich set of instrument for developers and researchers
- developed several examples of applying cellular automata to solve physics tasks
- studied simple fractal and self-reproducing cellular systems.
General advantage of our approach is in development of program documentation simultaneously with the implementation. So we declared a new trend in programming: Trend for Open Program Documentation, - as a logical evolution of Open Source (GNU project, GPL etc.) trend.