Концептуално програмирање

Концептуално програмирање је програмска парадигма фокусирана на то како концепти, које је осмислио програмер, могу да се пренесу на репрезентацију у виду кода. Овај приступ је први пут представљен 2001. године од стране Кристофа де Динечина у виду XL програмског језика.

Псеудо-метрика

уреди

Концептуално програмирање користи псеудо-метрику да оцени квалитет кода. Зове се псеудо-метрика јер повезује концепт простора и простор кода, са јасним разумевањем да концепт простора не може да се стриктно формализује довољно да би се дефинисао у стварној метрици. Псеудо-метрика концептуалног програмирања укључује:

  • Синтактични шум - који мери одступања између концепта и синтаксе коришћене како би се сам концепт представио. На пример, ознака тачка зарез (;) на крају сваке линије кода у C-у може да се посматра као синтактички шум, јер нема свој еквивалент у концепту простора.
  • Семантички шум - који мери одступања између очекиваног значења или понашања концепта и стварног значења или понашања у коду. На пример, чињеница да може доћи до оверфлоwа интегер типова података је тип семантичке буке.
  • Проток - мери колико концептуалног простора дати код може да прикаже. На пример, преоптерећен оператор сабирања у C-у има већи проток него АДД инструкција у асемблеру, јер оператор у C-у може да представља и сабирање у оквиру флоатинг-поинт бројева, не само у оквиру целих (интегер) бројева.
  • Однос сигнала и буке - мери која фракција кода је коришћена за приказ стварних концепата, у супротности са имплементацијом информација.

Правило еквиваленције, слом еквиваленције

уреди

Правило еквиваленције је достигнуто када је понашање кода исто као и оригинални концепт. Ова еквиваленција се може "сломити" у многим случајевима. Интегер оверфлоw слама еквиваленцију између математичког концепта целих бројева и компјутеризоване апроксимације концепта. Многи начини да се сломи еквиваленција имају специфична имена, јер су веома чести:

  • Грешка домена је стање где се код извршава ван домена еквиваленције, што представља домен у ком су концепт и имплементација идентични. Ово је на пример интегер оверфлоw.
  • Концепт кастовања (рекастовања) је преписка концепта у виду другачијег концепта јер оригинални концепт не може да се прикаже уз помоћ алата. У C-у, коришћење показивача за излазне аргументе ( јер C не подржава експлицитне излазне аргументе) представља пример концепта кастовања.
  • Инверзиа приоритета је форма синтактичког или семантичког шума уведена у неким језицима. Зове се инверзија приоритета јер језик има предност у односу на концепт. У Смаллталк програмском језику, све је објекат, и то правило доводи до нежељених последица, као нпр. да израз 2+3*5 не поштује уобичајени редослед операција. У овом случају Смаллталк ће као резултат овог израза вратити 25 уместо 17.

Методологија

уреди

Како би се писао код, концептуално програмирање предлаже следеће кораке:

  1. Идентификовати и дефинисати релевантне концепте у концептуалном простору.
  2. Идентификовати традиционалну нотацију за концепте, или смислити употребљиву нотацију.
  3. Идентификовати комбинацију програмских конструкција које дозвољавају да концепти буду представљени у виду кода, што укључује проналажење нотације кода која се поклапа са нотацијом идентификованом у претходном кораку сто је ближе могуће.
  4. Написати код који чува, што је више могуће, очекивано понашање и семантику релевантних аспеката оригиналног концепта.

Језици

уреди

XL је једини програмски језик до сад који је експлицитно креиран за концептуално програмирање, мада концептуално програмирање може да се примени у било ком језику, са различитим мерама успеха. Лисп и Фортх, и сви њихови наследници, су примери језика који су постојали пре саме идеје концептуалног програмирања, а који се могу користити за концептуално програмирање.

Слични радови

уреди

Постоје пројекти који користе сличну идеју да се направи код вишег нивоа апстракције. То су:

Види још

уреди

Литература

уреди
  1. Цонцепт программинг пресентатион
  2. XL программинг лангуаге