03 is an object-oriented language developed with the explicit aim of providing a rational framework for extensive language customization. This framework goes as far as to support a different view of programming. According to this view, programming in 03 is a two-stage process: the first is a language construction process in which users design the structure and behaviour of the sorts of objects they need and the second is the normal language use process in which the custom designed language is being applied to model applications. 03 is implemented as layered reflective architecture clearly separating the kernel, interface and application levels. Reflective, self-modifying behaviour is acquired by dynamic, yet efficient dispatching to kernel operation protocols which programmers can use to create and integrate various language features. Experience in building 03 versions supporting the development and integration of significant languages and tools with stringent requirements is reported.
object-oriented languages, language extension, language construction, reflective languages, knowledge representation.