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
ConceptOrientedProgramming,
ConceptOrientedModel and
ConceptOrientedDesign.
More information on the concept-oriented paradigm can be found at the concept-oriented portal here
http://conceptoriented.org and specifically in the concept-oriented FAQ here
http://conceptoriented.org/faqs/co-faq.html.
Some related disciplines include
ObjectCapabilityModel (which achieves security via interface and
ProxyPattern, esp. applicable to
ActorsModel),
KellCalculus ('kell' is first-class locality atop
PiCalculus, hierarchical, intercepts messages to and from 'child' kells in the same manner as
ConceptOrientedProgramming with its spaces). Neither of these definitions formalize the system of external names or references to local objects in the same manner as does
ConceptOrientedProgramming.
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. --
GunnarZarncke
[WalledGarden Discussion]
Like
GunnarZarncke I'm piqued but perplexed by the circular definitions. I actually ended up here because I was looking for more information about
ConceptProgramming and a search for Concept lured me into this
WalledGarden. I did also find
ConceptProgramming so was not completely thwarted.
ConceptProgramming is explained in detail at
http://xlr.sourceforge.net/concept/top.html. From
AlexandrSavinov (or someone else that understands
ConceptOrientedProgramming), I'd like to see comparisons that illustrate the relationship between
ConceptOrientedProgramming and the following:
ConceptProgramming,
ObjectOrientedProgramming,
AspectOrientedProgramming,
DesignPatterns, ... etc --
BrandonCsSanders
From what I've seen, ConceptProgramming and ConceptOrientedProgramming (the ConceptOriented WalledGarden) are not related at all. -- JeffGrigg
Is there a tie in between this work and
CppAndConcepts? It might be a question of the implementation. In that case it will cease to be a
WalledGarden. --
JohnFletcher
No, there is no tie between
ConceptOrientedProgramming (which formalizes some notion of distinct
spaces by formalizing address/identity of objects and offering mechanisms to capture messages at space 'borders') and
CppAndConcepts (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 --
JohnFletcher
Some related concepts(ideas):
How are these related?
CategoryInformationEngineering