Konceptualno programiranje je programska paradigma fokusirana na to kako koncepti, koje je osmislio programer, mogu da se prenesu na reprezentaciju u vidu koda. Ovaj pristup je prvi put predstavljen 2001. godine od strane Kristofa de Dinečina u vidu XL programskog jezika.

Pseudo-metrika

Konceptualno programiranje koristi pseudo-metriku da oceni kvalitet koda. Zove se pseudo-metrika jer povezuje koncept prostora i prostor koda, sa jasnim razumevanjem da koncept prostora ne može da se striktno formalizuje dovoljno da bi se definisao u stvarnoj metrici. Pseudo-metrika konceptualnog programiranja uključuje: Sintaktični šum - koji meri odstupanja između koncepta i sintakse korišćene kako bi se sam koncept predstavio. Na primer, oznaka tačka zarez (;) na kraju svake linije koda u C-u može da se posmatra kao sintaktički šum, jer nema svoj ekvivalent u konceptu prostora. Semantički šum - koji meri odstupanja između očekivanog značenja ili ponašanja koncepta i stvarnog značenja ili ponašanja u kodu. Na primer, činjenica da može doći do overflowa integer tipova podataka je tip semantičke buke. Protok - meri koliko konceptualnog prostora dati kod može da prikaže. Na primer, preopterećen operator sabiranja u C-u ima veći protok nego ADD instrukcija u asembleru, jer operator u C-u može da predstavlja i sabiranje u okviru floating-point brojeva, ne samo u okviru celih (integer) brojeva. Odnos signala i buke - meri koja frakcija koda je korišćena za prikaz stvarnih koncepata, u suprotnosti sa implementacijom informacija.

Pravilo ekvivalencije, slom ekvivalencije

Pravilo ekvivalencije je dostignuto kada je ponašanje koda isto kao i originalni koncept. Ova ekvivalencija se može "slomiti" u mnogim slučajevima. Integer overflow slama ekvivalenciju između matematičkog koncepta celih brojeva i kompjuterizovane aproksimacije koncepta. Mnogi načini da se slomi ekvivalencija imaju specifična imena, jer su veoma česti: Greška domena je stanje gde se kod izvršava van domena ekvivalencije, što predstavlja domen u kom su koncept i implementacija identični. Ovo je na primer integer overflow. Koncept kastovanja (rekastovanja) je prepiska koncepta u vidu drugačijeg koncepta jer originalni koncept ne može da se prikaže uz pomoć alata. U C-u, korišćenje pokazivača za izlazne argumente ( jer C ne podržava eksplicitne izlazne argumente) predstavlja primer koncepta kastovanja. Inverzia prioriteta je forma sintaktičkog ili semantičkog šuma uvedena u nekim jezicima. Zove se inverzija prioriteta jer jezik ima prednost u odnosu na koncept. U Smalltalk programskom jeziku, sve je objekat, i to pravilo dovodi do neželjenih posledica, kao npr. da izraz 2+3*5 ne poštuje uobičajeni redosled operacija. U ovom slučaju Smalltalk će kao rezultat ovog izraza vratiti 25 umesto 17.

Metodologija

Kako bi se pisao kod, konceptualno programiranje predlaže sledeće korake:

Identifikovati i definisati relevantne koncepte u konceptualnom prostoru. Identifikovati tradicionalnu notaciju za koncepte, ili smisliti upotrebljivu notaciju. Identifikovati kombinaciju programskih konstrukcija koje dozvoljavaju da koncepti budu predstavljeni u vidu koda, što uključuje pronalaženje notacije koda koja se poklapa sa notacijom identifikovanom u prethodnom koraku sto je bliže moguće. Napisati kod koji čuva, što je više moguće, očekivano ponašanje i semantiku relevantnih aspekata originalnog koncepta.

Jezici

XL je jedini programski jezik do sad koji je eksplicitno kreiran za konceptualno programiranje, mada konceptualno programiranje može da se primeni u bilo kom jeziku, sa različitim merama uspeha. Lisp i Forth, i svi njihovi naslednici, su primeri jezika koji su postojali pre same ideje konceptualnog programiranja, a koji se mogu koristiti za konceptualno programiranje.

Slični radovi

Postoje projekti koji koriste sličnu ideju da se napravi kod višeg nivoa apstrakcije. To su: Namerno programiranje Jezički orijentisano programiranje Bukvalno programiranje Arhitektura vođena modelom

Vidi još Programske paradigme Automatsko programiranje Artefaktur Apstraktno sintaksno drvo Semantičko drvo donošenja odluka Domenski-specifični programski jezici

Literatura Concept programming presentation XL programming language

Категорија:Програмирање