The goal of the Protelis language is to make it easier to build a resilient and well-behaved networked system out of an assortment of different potentially mobile devices. Protelis is designed for the paradigm of "aggregate programming", a way of thinking about and decomposing problems that can be solved with a network of distributed sensors and computers. Aggregate programming tries to produce reliable and robust collective behavior from uncoordinated local interactions between machines. That's hard to do, but Protelis helps!
Protelis was designed specifically to support aggregate programming:
- Protelis is a language, not just a library. Because it's a language, Protelis can handle some of the tough parts of distributed systems implicitly, preventing some common mistakes and problems.
- Protelis is hosted in and integrated with Java. It is lightweight and can take advantage of the large and well-established ecosystem of Java infrastructure and libraries.
- Although Protelis is not Java, it's designed to look similar. Developers who already know Java can more easily learn Protelis.
- Protelis can ensure safe and resilient composition because it is built on field calculus. Field calculus is a theoretical model of aggregate programming much like lambda calculus is for functional programming.