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:

  1. Identifikovati i definisati relevantne koncepte u konceptualnom prostoru.
  2. Identifikovati tradicionalnu notaciju za koncepte, ili smisliti upotrebljivu notaciju.
  3. 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.
  4. Napisati kod koji čuva, što je više moguće, očekivano ponašanje i semantiku relevantnih aspekata originalnog koncepta.

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:

Vidi još

уреди

Literatura

уреди
  1. Concept programming presentation
  2. XL programming language