Concept Oriented

The concept-oriented paradigm is a direction in computer science, which follows a set of the following fundamental principles:

Objects are living in space with complex structure and the space plays a crucial role in defining the system behaviour and functionality.

Representation and access are the most important functions of space, which are executed each time access request passes the space border

Objects are represented by means of references created for them by the space to be used outside

An elementary part of space is referred to as a concept, which generalizes such terms as class in programming, table/relation in databases, scope/environment in design.

These principles are used to develop more concrete directions such as Concept Oriented Programming, Concept Oriented Model and Concept Oriented Design.

More information on the concept-oriented paradigm can be found at the concept-oriented portal here conceptoriented.org and specifically in the concept-oriented FAQ here conceptoriented.org .


Some related disciplines include Object Capability Model (which achieves security via interface and Proxy Pattern, esp. applicable to Actors Model), Kell Calculus ('kell' is first-class locality atop Pi Calculus, hierarchical, intercepts messages to and from 'child' kells in the same manner as Concept Oriented Programming with its spaces). Neither of these definitions formalize the system of external names or references to local objects in the same manner as does Concept Oriented Programming.

Implementation may be a bit difficult... a collection of Button concepts might have an enormous variety of different Identifier types, each of which would have their own semantics associating them with an external space and the button within it.


This splitting of meaning into objects and concepts sounds interesting, especially that bit about the representation and access of an object being dependent on the concept (I take it to a synonym for context). But I am severely missing examples, anything to see how this is actually used. Everything on that website is just plain self-referential. Without any concrete connections or examples or a comparison of OO with matching CO code) I just cannot get a grasp of what is really meant. -- Gunnar Zarncke



[Walled Garden Discussion]


Like Gunnar Zarncke I'm piqued but perplexed by the circular definitions. I actually ended up here because I was looking for more information about Concept Programming and a search for Concept lured me into this Walled Garden. I did also find Concept Programming so was not completely thwarted. Concept Programming is explained in detail at xlr.sourceforge.net . From Alexandr Savinov (or someone else that understands Concept Oriented Programming), I'd like to see comparisons that illustrate the relationship between Concept Oriented Programming and the following: Concept Programming, Object Oriented Programming, Aspect Oriented Programming, Design Patterns, ... etc -- Brandon Cs Sanders

From what I've seen, Concept Programming and Concept Oriented Programming (the Concept Oriented Walled Garden) are not related at all. -- Jeff Grigg


Is there a tie in between this work and Cpp And Concepts? It might be a question of the implementation. In that case it will cease to be a Walled Garden. -- John Fletcher

No, there is no tie between Concept Oriented Programming (which formalizes some notion of distinct spaces by formalizing address/identity of objects and offering mechanisms to capture messages at space 'borders') and Cpp And Concepts (which provides advanced features for checking template applications, making error descriptions more tractable, and optimizing the adaptation of template-driven algorithm based on template-provided traits of the underlying structures over which those algorithms operate). The two are using the word Concept in completely disparate ways.

Thanks -- John Fletcher


Some related concepts(ideas):

IfYouLikeItYouMustUnderstandIt (or perhaps) If You Dont Like It You Dont Understand It

How are these related?


See original on c2.com