Програмерска парадигма
Програмерска парадигма е стил на програмирање (слично како што методологијата, е стил на практикување на софтверското инженерство).
Програмерската парадигма го овозможува (и определува) начинот на кој програмерот го гледа извршувањето на програмот. Така на пример, во објектно ориентираното програмирање, програмерите ја гледаат програмата како колекција на објекти кои меѓу себе си дејствуваат, додека во функционалното програмирање програмот може да се замисли како низа на функции. Кај програмирање на компутери или системи со повеќе процесори, процес ориентирано програмирање, програмерите апликациите ги замислуваат како процеси кои се одвиваат по некоја логика врз заедничка структура на податоци.
Слично како во софтверското инженерство различни групи предлагаат различни методологии, така и различни програмски јазици налагаат различни програмерски парадигми. Некои програмски јазици се дизајнирани да подржуваат одредена парадигма(Smalltalk и Java подржуваат објектно ориентирано програмирање, додека Haskell и Scheme подржуваат функционално програмирање), а некои програмски јазици подржуваат повеќе програмерски парадигми (Common Lisp, Python, Ruby и Oz).
Познато е дека одредени програмерски парадигми подржуваат одредени техники а некои не. Пример, чисто функционално програмирње не допушта користење на странични ефекти; структурното програмирање не допушта користење на наредбата goto.
Врската помеѓу програмерските парадигми и програмските јазици може да биде комплексна бидејќи програмскиот јазик може да подржува повеќе парадигми. Пример, C++ е дизајниран да подржува елементи на процедурално програмирање, објектно ориентирано програмирање, објектно базирано програмирање, агент ориентирано програмирање и генеричко програмирање. Се разбира, дизајнерите и програмерите одлучуваат како ќе го кодираат програмот, со користење на која парадигма. Некои програми во C++ можат да бидат напишани чисто процедурално, некои чисто објект ориентирано, некои со комбинација на овие две парадигми.
Примери[уреди | уреди извор]
- Анотативно програмирње (како во Flare јазикот)
- Аспект ориентирано програмирање (како во AspectJ)
- Атрибут ориентирано програмирање (може да биде исто како анотативното програмирање) (како во Java 5 Анотации, пре-процесирано со XDoclet класата; C# Атрибути )
- Програмирање базирано на класи, во корелација со Порграмирање базирано на прототипи (во контекст на објект ориентираното програмирање]
- Концепт ориентирано програмирање е базирано на користење на концепти како главно програмерски конструкции.
- Constraint програмирање, споредено со Логичко програмирање
- Data-directed програмирање
- Dataflow програмирање (како во Spreadsheet-ови)
- Flow-driven програмиарње, споредено со Event-driven програмирање
- Функционално програмирање
- Императивно програмирање, споредено со Декларативно програмирање
- Интенционално програмиарње
- Логичко програмиарње (како во Mathematica)
- Message passing programming, споредено со императивно програмирање
- Објект ориентирано програмирање (како во Smalltalk)
- Pipeline програмирање (како во UNIX командна линија)
- Policy-based програмирање
- Процедурално програмирање, споредено со Функционално програмиарње
- Процес ориентирано програмирање модел на паралелно програмирање.
- Рекурзивно програмирање, споредено со Итеративно програмирање
- Рефлективно програмирање
- Скаларно програмирање, споредено со Array programming
- Компонент ориентирано програмирање (како во OLE)
- Структурирано програмирање, споредено со Неструктурирано програмирање
- Subject-oriented programming
- Tree programming
- Value-level programming, споредено со Function-level programming