Класифікація парадигм програмування 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Класифікація парадигм програмування



Крім чотирьох основних парадигм таких як: процедурна, функціональна, алгебраїчна і логічна, які принципово відрізняються способами представлення даних і алгоритмів в програмах, існує багато похідних від них парадигм.

Перш ніж ми перейдемо до обговорення конкретних парадигм, розглянемо різні підходи до їхньої класифікації [2] (рис.1.1).

На самому вищому рівні виділяють:

– парадигми прикладного і теоретичного програмування;

– парадигми основні (Процедурна, Функціональна, Алгебраїчна і Логічна) і вищі, які базуються на основних(Паралельного, Об'єктно-орієнтованого, Агентного програмування);

– парадигми, які відрізняються способом декомпозиції задачі (Імперативного, Декларативного, Об'єктно-орієнтованого, Сценарного програмування);

– парадигми, які відрізняються глибиною і спільністю опрацьовування технічних деталей організації процесів комп'ютерної обробки інформації (Машинно-орієнтоване, Системне, Логічне, Трансформаційне, Високопродуктивне/паралельне програмування) тощо.

Стислі визначення парадигм, які ще не повністю сформувалися:

Узагальнене програмування (generic) – парадигма програмування, яка полягає в написанні алгоритмів, які можна застосовувати до різних типів даних.

В C++ - базується на понятті шаблону (template).

В Java – контейнери,

С#- узагальнення (generic, обобщения).

Метапрограмування (meta-programming) – створення програм, які породжують інші програми як результат своєї роботи. Інша назва парадигми – програмування за шаблоном (шаблони проектування).

Реалізації – препроцесор С та шаблони C++, мова R# - на платформі.Net.

 

Рис. 1.1. Парадигми і стилі програмування


Парадигми

Возможность Язык
Ada C C++ C# D Eiffel Erlang Prolog F# Groovy Java JavaScript Haskell Common Lisp Nemerle Perl PHP Python Ruby Scala Smalltalk Tcl VB.NET Delphi OCaml PureBasic
Императивный + + + + + + - - + + + + + [1] + + + + + + + + + + + + +
Объектно-ориентированный + - + + + + - [2] - + + + + [4] - [5] + + + + + + + + + + + + -/+
Функциональный - - -/+ +/- +/- +/- + + + + - + + + + + +/- +/- + + + + +/- -/+ + +/-
Рефлексивный - - - -/+ - ? + + -/+ -/+ -/+ + - + -/+ +/- + + + -/+ + + -/+ -/+ - ?
Обобщенное программирование + - + + + +/- + + + + + + + + + + + + + + + - + + + -/+
Логический - - - - - - - + - - - - +/- [6] +/- [7] +/- - - - - ? +/- - - - - ?
Декларативный - - - -/+ [8] -/+ ? + + + + - - + + [9] + -/+ [10] + + + + +/- - +/- - + +/-
Распределенный + [11] +/- [12] +/- [12] -/+ [13] - + + + - -/+ + - + [14] +/- - - - -/+ -/+ ? +/- ? - - - -
  Ada C C++ C# D Eiffel Erlang Prolog F# Groovy Java JavaScript Haskell Common Lisp Nemerle Perl PHP Python Ruby Scala Smalltalk Tcl VB.NET Delphi OCaml PureBasic

Объектно-ориентированные возможности

Возможность Язык
Ada C C++ C# D Eiffel Erlang F# Groovy Java JavaScript Haskell Common Lisp Nemerle Perl PHP Python Ruby Scala Smalltalk VB.NET Delphi OCaml PureBasic  
Интерфейсы ? - +/- + + ? x + ? + ? x x [128] + +/- [129] + + ? ? ? + + + x  
Мультиметоды - - - -/+ [130] - - x - ? - [131] - x + - - [131] [132] - - [131] - [131] - - - - - x  
Mixins ? - - - + ? x ? ? - ? x + ? ? ? ? + + + ? + [133] ? x  
Переименование членов при наследовании ? x - - ? + x - - - ? x - - -/+ - - ? ? - - - ? x  
Множественное наследование ? x + - - + x - - - ? x + - + - + ? ? - - - + x  
Решение конфликта имен при множественном наследовании ? x -/+ [134] x x + [135] x x ? x ? x +[136] x + x + ? ? x x x ? x  

Функциональные возможности



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 367; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.86.138 (0.005 с.)