Grasshopper 3D is a visual programming language developed by David Rutten at Robert McNeel & Associates. Grasshopper runs within the Rhinoceros 3D CAD application. Programs are created by dragging components onto a canvas. The outputs to these components are then connected to the inputs of subsequent components. Grasshopper is used mainly to build generative algorithms. Many of Grasshoppers components create 3D geometry. Programs may also contain other types of algorithms including numeric, textual, audio-visual and haptic applications.