Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5fan_ru_ПАРАДИГМИ ПРОГРАМУВАННЯ.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

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

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

Перш ніж ми перейдемо до обговорення конкретних парадигм, розглянемо різні підходи до їхньої класифікації [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