The Joel on Software Discussion Group (CLOSED)

A place to discuss Joel on Software. Now closed.

This community works best when people use their real names. Please register for a free account.

Other Groups:
Joel on Software
Business of Software
Design of Software (CLOSED)
.NET Questions (CLOSED)
TechInterview.org
CityDesk
FogBugz
Fog Creek Copilot


The Old Forum


Your hosts:
Albert D. Kallal
Li-Fan Chen
Stephen Jones

Concept-oriented programming

My apologies in advance if the information I seek is in a different thread here.

1. Are there any languages that directly support this paradigm?

2. If not, can this paradigm be sufficiently simulated and/or wrapped in an OO language? Any known attempts?

3. What is your opinion on the paradigm itself and how suited it is for commercial development?

Thank you kindly for the replies.
MoffDub Send private email
Saturday, July 05, 2008
 
 
How is this different than aspect-oriented programming? Most of these are just abstractions on top of other methodologies, which makes their utility somewhat limited.
The Original Henry
Saturday, July 05, 2008
 
 
From what I understand, concept-oriented programming is similar to OO except it replaces the platform-specific references to objects with programmer-defined references to concepts.

So instead of referring to your instance of the Account class as having memory address 0xFF32BA, you refer to it by the account number and bank name, for example. And this reference type is valid across all contexts, so it doesn't matter if this Account resides in memory, on disk, or on another network.
MoffDub Send private email
Saturday, July 05, 2008
 
 
http://conceptoriented.org/faqs/cop-faq.html

OK. This does remind me of AOP, which is just a very small thing, but proclaims itself a "new programming paradigm", a principle around which your entire language is built.

It's not a new programming paradigm though so building a new language to support it is a waste of effort and only provides a language that is not better except for some very narrow niche.
Tony Chang
Saturday, July 05, 2008
 
 
I too wouldn't call this a "new programming paradigm".  It is just a narrowing of the reference model.

I would imagine it would be useful for various types of crud programming where flexibility and customization are not high on the list of requirements.
.
Saturday, July 05, 2008
 
 
From the linked CoP page:

"Concept-oriented programming (CoP) is a new programming paradigm, which generalizes object-oriented programming"

In other words, it abstracts OOP into something that apparently makes sense to the person that created it.

I'm skeptical about it's utility as a general-use concept. It looks more like the result of someone who is trying to reshape the programming universe around his own limited understanding of the tools already available.
The Original Henry
Saturday, July 05, 2008
 
 
It can't both generalize OOP and abstract OOP at the same time.

Generalizing would mean that it would address a larger set of things, while abstracting would mean it addresses things from a higher (less general) level.  From the explanation I have read CO is basically a high-level "look-up reference" mechanism.

That is in C/C++ you have addresses to structures/objects, C++ and Java you can have references to addresses of objects, and in CO languages you name your objects and reference them by a name space.

Since people have been doing similar things with tables and databases for decades now I'd say that this is not very unique.  What might be slightly interesting though would be the more formal explicit first-class mechanisms to support this.

The formalization of it would probably be good for where traditional applications languages and database languages would intersect.  With it one wouldn't need to switch between C++ or Java and SQL.

Any how I don't see it as anything really new or exciting.
Afrin
Saturday, July 05, 2008
 
 
class Concept:
    def generate_unique_id(self):
        # generate a storage independent id using
        # this objects attributes (i.e. self.account_name)
        raise NotImplementedError


class Concept_store:
    def get_item(concept_identifiers):
        # return an item matching the concept identifiers.
        raise NotImplementedError


Isn't that it?
PeterR
Saturday, July 05, 2008
 
 
Peter: I was thinking something similar. CoP seems like a multi-data-source Repository from Domain-Driven Design with an Identity Map pattern supporting it.
MoffDub Send private email
Sunday, July 06, 2008
 
 
Actually, it might be more like Ruby on Rails - database creation based on class declarations, and all that jazz.
PeterR
Sunday, July 06, 2008
 
 
Concept oriented programming is just that - a concept. It is an idea without substance, without physical form, therefore it does not exist.
Tony Marston Send private email
Monday, July 07, 2008
 
 
Fred Brooks expressed the same sentiment about our entire industry.
MoffDub Send private email
Monday, July 07, 2008
 
 
Looking at the FAQ on their website it looks like someone took an OOP/Java page and ran %s/object/concept %s/class/concept on it.
Brian
Monday, July 07, 2008
 
 
"Concept oriented programming is just that - a concept. It is an idea without substance, without physical form, therefore it does not exist."


Does anything in software have substance or physical form?
The Original Henry
Monday, July 07, 2008
 
 
Software exists. It works. I am using software right now.

Please direct me to concept oriented languages, IDEs, books, conferences.

Right now it is every bit as real as HG Wells' Time Machine.
Tony Chang
Monday, July 07, 2008
 
 
What is working right now is the hardware of the computer, which is able to function because of a particular sequence of bits enables it to do so. Those bits are represented physically in hardware in some form, on disk or memory or whatever.

But what those bits mean is ethereal. And that part is what is "only slightly removed from pure thought-stuff."
MoffDub Send private email
Tuesday, July 08, 2008
 
 
Unclear what the original poster meant by "concept oriented programming". There's an effort underway to put "concepts" into a future version of C++. There, "concepts" are a template gimmick which allows the template to be instantiated to be chosen based on expressions evaluated at compile time. I tend to think of this as a feature useful to few and likely ot be used productively and correctly by fewer.

Here's a draft of the proposed standard:

http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1886.pdf
John Nagle Send private email
Wednesday, July 09, 2008
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz