The NiMo Project
What is NiMo?

Introduction

Examples

Publications

Applications

NiMoToons

Videos

News blog

Contact

What is NiMo?
A graphic multi purpose development language based on a blend of functional and data flow paradigms

Approach

NiMo (Nets in Motion) is a totally graphic language for the incremental development, debugging and tuning of process networks. The language can be seen as a graphical equivalent for Haskell because it provides higher order, polymorphism, partial application, non-strict evaluation and static type inference.

NiMo is not a visual interpreter for a textual language since there is no textual code at all.

NiMo programs are created with a graph editor that guarantees type-safeness by construction by means of an also graphic and incremental type inference system. Solutions of growing complexity are built by combining a set of predefined processes, which are well suited for stream programming. The system acts as an online tracer and debugger. At each execution step the net evolves showing the full state and any data or process can be dynamically changed or completed, steps can be undone and the current net can be stored as a new program at any step. Also the evaluation policy is dynamically customisable, allowing to exploit parallelism in a very flexible and intuitive way.

Why NiMo is unique

Synchronization is part of the language so maximum parallel execution is guaranteed and natural. No need to define forks and joins. A NiMo program can exploit multiple physical available processors at same time. There are also many ways to define evaluation modes to get more or less parallelism in different parts of the program, especially useful for debugging.

A NiMo program is a network composed with a mix of basic and user defined processes that can be implemented in a single computer or on a computer network (many computers) in one step at same time. This approach raises the abstraction level of the programmer from a traditional single computer vision to a network vision within the same single NiMo program converting NiMo to the first network programming language (NPL) and well suited for cloud computing. Connections between processes inside a computer or across different ones is transparent for the programmer. So programming many computers is now easier than ever.

Plus: Being interpreted, allows step by step execution and also stop-modify-run sequences. Also it can roll-back one step, save intermediate computations and restart from them in any other moment. Simbolic evaluation, distributed execution, intuitive top-down and botom-up and more.
Optimized for FireFox/MSIE/Chrome (1024x768) - Jun/2011
Silvia Clerici - Cristina Zoltan - Guillermo Presti