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
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
('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
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
, ... 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.
Some related concepts(ideas):
How are these related?