Research Group for Applied Software Engineering
Forschungsgruppe für Angewandte Softwaretechnik

Tube - Graph Based Programming

A protoypical implementation of a graph-based programming language based on python with a prototypical IDE for Mac OS X 
The project started in 2004.



  • June, 27th 2004: Tube Editor 0.4 (kind of stable)
  • June, 24th 2004: This page goes online
  • June, 12th 2004: Starting implementation (Language and IDE)





  • The latest complete Tube working for Mac OS X


  • Tube Editor IDE: A prototype for a simple IDE for Tube, implementation for Mac OS X 10.3 and higher. 
  • Tube Interpreter: A python based implementation of a Tube - runtime environment.




The Development Environment (IDE)

As a prototypical development environment (IDE) we implemented the "Tube Editor". The application is built for Mac OS X and is based upon the Cocoa Framework.

The Tube Editor is a topic map browser and modification tool, that supports all of the introduced attributes and properties of the Tube programming language.

The Tube Editor lists topics and their associations with all attributes, properties and content. Additionally it provides a browserfor the children and delegate hierarchy. The user can add and remove topics, create associations between topics through drag-and-drop, remove associations and modify all properties and attributes. The programming code is edited and displayed in a textfield as a property for topics.

For persistence the Tube Editor uses an own simplified topic map format as an exchange format with the Tube Interpreter. Additionally there is an interface and export possibility to the GraphViz - application (an open source graph visualization tool) for a simplyfied visulization of the whole Tube topic map.



The Interpreter Backend

The back end is seamlessly integrated into the dynamic language Python which becomes the runtime environment of Tube: After having started the Python command line and imported the Tube Python module, one can load a serialized version of a Tube program generated by the Tube Editor. Executable code is always defined as a Python function.

>>> from tube import TubeEnvironment
>>> env = TubeEnvironment()
>>> env.readXML("examples/")
>>>"Hello World!")
>>> print env.toXML()