TiViPE - Tino’s Visual Programming Environment Tino Lourens Honda Research Institute Japan Co. Ltd. 8-1 Honcho, Wako-shi, Saitama, 351-0114, Japan E-mail: tino@jp.honda-ri.com Abstract TiViPE [4] is a component based visual programming environment (VPE) that enables users to build programs by construction of a network of components interactively. A single module (component), represented by a graphi- cal icon, is a computational unit. Multiple icons can be connected to each other to yield a directed graph (a net- work) that represent a program. TiViPE is, in appear- ance similar to programs such as AVS [9], Vee [3, 1], OpenDX [6], Khoros [12], LabVIEW [7], NeatVision [10], and ViPEr [8], but presents some fundamental differences. TiViPE integrates documentation with an existing routine call (that has been programmed in C++, C, Fortran, or Java), and automatically generates C++ code that is com- piled to stand-alone program. This program is able to exe- cute the specified routine, provide a graphical icon, or give html-formatted documentation about the routine. Hence, within TiViPE there is no textual programming for the user. TiViPE strongly re-uses code, which is inherent to visual programming, and automatic code regeneration by com- pounding a network of modules to a single module, which leads to faster programming. TiViPE supports network- ing and parallel processing in a natural way, and allows the user to modify an activated network. TiViPE also aims at rapid prototyping which demands user friendliness, pro- gramming by existing modules for basic users, and focuses on the documentation of a module. TiViPE has been used in the field of computer vision, robotics, and computational neuroscience. 1 Introduction Visual programming has been proven to be more effi- cient than classical textual programming. There is a strong increase in program development (up to five times faster) [1]. It increases the productivity of both researchers and ap- plication developers regardless of their programming expe- rience [12]. One aspect of increased efficiency is that a vi- sual notation provides a intuitive organization and can make information explicit [11]. It also is due to natural software re-use, i.e., by using the same (graphical) module multi- ple times. Another advantage is the possibility to bring ex- isting programs and routine calls programmed in different textual programming languages, together into a consistent, standardized, and cohesive environment. The number of users of visual programming languages, however, is negligible compared to the users of textual pro- gramming languages, like C++, C, Java, etc., despite the ad- vantages. Domain specific visual programming languages (VPLs) such as LabVIEW which allows to import existing textual code [7] have been more successful than general- purpose VPLs like Prograph [2]. A VPL that conforms to a textual language standard has a much greater likelihood of acceptance. An important reason that visual programming has hampered is due to the migration process from a tex- tual program to a visual program. The concept of TiViPE is to make such migration process simple. TiViPE wraps any routine into a graphical module by filling out a few forms about the routine. By pushing a single button all code is generated, compiled, and integrated in the environment, without additional programming. This makes the migra- tion process fast and easy. It makes TiViPE a component based visual programming environment (like, for instance, Java studio) that employs an information flow with unlim- ited programming capabilities. The paper is organized as follows: Section 2 provides an overview of several different VPEs. Section 3 introduces TiViPE, elaborates on the concept of visual programming, and gives an overview of the modules that are currently available within TiViPE. The paper finishes with a discus- sion. 2 Overview of Visual Programming Environ- ments A widely used graphical programming environment is LabVIEW [7] which is especially oriented to hardware. Its G programming language which is used to construct block