Парадигма на програмиране
Парадигмата на програмиране, парадигма за програмиране или програмна парадигма представлява фундаменталния стил на програмиране. Има множество програмни парадигми, но основните сред тях са: обектно ориентирано, императивно, функционално и декларативно .

Парадигмата на програмиране предоставя (и определя) начина, по който програмистът гледа на изпълнението на програмата. Например, в обектно ориентираното програмиране програмистът може да разглежда програмата като съвкупност от взаимодействащи си обекти, докато при функционалното програмиране програмата може да бъде разглеждана като последователност от изчисления на функции, които нямат свои състояния.

Различните програмни езици препоръчват различни парадигми на програмиране. Някои езици са проектирани да поддържат някоя определена парадигма на програмиране – SmallTalk и Java поддържат обектно ориентираното програмиране, докато Lisp поддържа функционалното програмиране. Някои езици за програмиране поддържат повече от една парадигма – C++ поддържа и обектно ориентирано програмиране, и процедурно програмиране.

Много парадигми на програмиране са познати повече с това какво забраняват, от колкото с това какво препоръчват. Например функционалното програмиране забранява използването на странични ефекти, структурното програмиране забранява употребата на goto. Заради това новите парадигми обикновено се приемат като твърде сурови и ограничаващи от програмистите, свикнали вече с някакъв предишен стил на програмиране. Но трябва да се отбележи, че избягването на определени техники може да подпомогне доказването на коректността на програмата или просто да улесни разбирането на поведението ѝ, като при това не ограничава приложимостта на програмния език.

Отношението между парадигмите на програмиране и програмните езици може да бъде доста сложно, тъй като един език може да поддържа повече от една парадигма. Например C++ е проектиран да поддържа елементи от процедурното програмиране, обектно ориентираното програмиране, обектно базираното програмиране и родовото програмиране. Един C++ програмист може да напише чисто процедурна програма, или чисто обектно ориентирана програма, а може да напише и програма, която обединява елементи и от двете парадигми.

Примери 
 Структурно програмиране, сравнено с Безструктурно програмиране
 Императивно програмиране, сравнено с Декларативно програмиране
 Процедурно програмиране, сравнено с Функционално програмиране
 Обектно ориентирано програмиране
 Обектно базирано програмиране
 Аспектно-ориентирано програмиране

Източници