COORDS: What is it?

COORDS is an acronym for:

C/C++ Object-ORiented Data/Development/Design System.

Purpose: Extend C++ with run-time defined types and objects

Sample applications:

COORDS is motivated by both practical and abstract goals.

COORDS can be characterized as:

COORDS design goals:

DATATALK - Run-time type interface language

DataTalk is inspired by the SmallTalk object-oriented operation of accessing an attribute (or sending a message) to an object:

Object Attribute [arguments ... ]

They are accessed or set uniformly using the attribute name. Setting an attribute only requires adding a colon and the value, which must conform to the attribute's previously defined type. There is no distinction between attributes and functions except the possible need for arguments.

Although actually imperative, DataTalk has a declarative flavor. In the example below, the effect is to define a new type "cartesian_point" and then a point instance "aPoint." Note, "Def" is an attribute (function) taking two arguments, attribute name and type.

	point Type: cartesian_point
			Def x REAL
			Def y REAL
			Def z REAL

	cartesian_point Type: aPoint
		x: 3.4
		y: 5.2
		z: 9.3

In COORDS types, all attributes whether type or data values or functions, are internally represented and externally accessed in a uniform way, an object-oriented principle called "abstraction." Both C++ defined class types and dynamically defined types may be used interchangeably for subtyping and member access.

The COORDS kernel classes are sufficient to permit general modelling of a wide range of data schemas without further extension. Additional classes may be added to create special applications. Also, it is possible to take a dynamically defined type and recast it as a compile-time C++ class (similar to the other base classes) to add speed and security to an application.

The DataTalk facility is provided by the COORDS type which serves as an interpreter model. Its subthypes can be used either interactively or in batch mode. By interpreter, we do not just mean how it is implemented internally, to read source text, but also, that the "COORDS" (sub)type functions as an intermediary (i.e., translator) between the external user and the run-time COORDS types (both kernel and user defined). It understands DataTalk syntax, passes along messages to its current receiving type object, and then returns any response.

For the theoretically minded, we note that COORDS has what is called a "Type: Type" or second order type system, where all types are also values (and more radically, all values are also types!) The distinction between instance and subtype then becomes one of usage only.

We hope this brief overview gives some flavor of COORDS. A new version of COORDS called PLATO is currently under study.