Jag läste en intressant artikel under titeln ”Informal Introduction into the Concept-Oriented Programming” av Alexandr Savinov, där det stod om något som kallas för Concept oriented programming eller CoP. Jag skulle själv inte kalla mig en expert på just aspekt orienterad programmering (AoP), men kombinationen mellan AoP och Objektorienterad programmering (OOP) påminner lite om CoP men dock finns väsentliga skillnader när man tittar lite noggrannare.

Ett koncept består av en referens och en klass. En beskrivning av detta skulle kunna vara att världen består av entiteter. Entiteter är refererade med en identitet. Alltså en identitet kan vara mitt namn ”Roy” men jag är även en entitet, alltså ett objekt kallad människa. I OOP så väljer vi att säga att mitt namn tillhör ett objekt vilket är sant men det används även som referens till mig av andra människor. Alltså andra människor (objekt) refererar till mig (även ett objekt) via mitt namn (en referens). Detta är ett naturligt sätt för människor att förhållla sig på till varandra. När det gäller andra objekt (T ex datorer) kan andra typer av referenser användas istället som är mer passande för en specifik domän. I ett nätverk så identifierar vi en dator med en IP adress men det är onaturligt för oss och till följd av detta så skapades DNS (domain name system). Alltså valde man att abstrahera det hela så man kan använda sig av en enklare typ av referenser till datorer på internet.

I CoP talar man om komplexa referenser till skillnad från tidigare primitiva referenser som vi är vana vid när vi hackar javakod. Ett objekt refereras i java via sin logiska minnesadress som vi får under körning av koden. Via virtuell adressering kan vi skapa komplexa referenser och då finns det även möjlighet att skjuta in beteende/funktion vid access på ett implicit sätt. Här kan vi se likheter med problematik AoP försöker lösa men i detta fall så är mer naturligt än att ha en definierad punkt där man skjuter in kod hur som helst.

För tillfället känner jag inte till någon implementation av CoP men om intresset finns så kommer kanske tomten med en rykande färsk kompilator.

Jag har bara skrapat lite på ytan när det gäller CoP och läs gärna mer på följande hemsida: http://conceptoriented.com/ Titta gärna in igen på vår blogg för det finns mycket intressant kring detta ämnet och sista ordet är nog inte sagt. Lämna även mer än gärna kommentarer kring detta spännande koncept ;)