The purpose of a programming medium is to present a human-intelligible narrative of the mathematics performed by a computer. At present, this is done from an algebraic perspective: programs are made up of symbols which encapsulate data and functions which transform those symbols. This way of programming computers is effective when the goal is to manipulate data which is natively algebraic: text processing, numerical computation, and the like. However, it becomes cumbersome when working with data which is geometric in nature: visual relationships, physical objects, etc. The existing media support logical reasoning about the data and operation of a program, but are limited in their engagement of visual reasoning.
A geometric programming medium departs significantly from the constraints that define current programming practice. This geometric methodology relates to the patterns of creation and interaction familiar in architecture, design and the visual arts, much as the process of traditional programming draws upon methods from language and algebra. In particular, geometric programming is characterized by the following qualities:
- nonlinearity
- direct manipulation
- multidimensionality
- use of patterns and constraints
Construct is a implementation of a geometric programming medium using C++. Construct makes use of the OpenFrameworks graphics library suite. Its purpose is to demonstrate the feasibility of programming in a geometric way and also to showcase the benefits of such an approach to geometric problems.