Protelis is a programming language designed for people who want to get resilient collective behavior from a complex network of heterogeneous machines. Protelis supports “aggregate programming” for applications like the Internet of Things or flocking robots. It lets you think about what you want the collection of machines to accomplish, rather than what you need each individual machine to do.
Programming growth of engineered mammalian cells into small 3D shapes
Is Protelis an agent-based modeling framework?
No. Although agent-based modeling (ABM) and aggregate programming both concern phenomena that occur when many individuals interact, they approach these phenomena in different ways. In ABM, you usually specify an individual’s behavior and interaction rules, and then simulate a collection of individuals to see what large-scale phenomena occur. In aggregate programming, you specify the desired collective action, which is then transformed into a distributed implementation for individual machines.
Development
Which programming languages is Protelis similar to?
Protelis is hosted in and integrated with Java, and looks somewhat like Java or C in terms of syntax.
However, Protelis is a pure functional language. Protelis grew out of Proto, which looked more like Lisp. Note that the aggregate programming mindset is a different way of thinking about problems. This mindset is language independent.
How is Protelis different from other programming languages?
Protelis helps guarantee some types of bounds on performance of distributed systems. Protelis is built to use the theory of “field calculus”, a way to mathematically establish such guarantees for some critical issues like scalability or performance degradation under stress.
Protelis has some operators and functions to support sending and comparing information across space and time, treating values across a region as a continuous field that is sampled at specific machine locations.