Парадигми програмування, планета інформатики

Що таке парадигма взагалі? Можна сказати, що це певний погляд на явища навколишнього світу і уявлення про можливі дії з ними. У програмуванні під парадигмою прийнято розуміти узагальнення про те, як повинна бути організована робота програми.

Серед іншого виділяють такі парадигми програмування як директивне (структурний). об'єктно-орієнтоване і декларативне (функціонально-логічне). Багато мови підтримують кілька парадигм програмування. З іншого боку, є мови орієнтовані виключно на реалізацію однієї парадигми.

структурне програмування

Деякі представники: Fortran, Pascal, C.

Директивна програма наказує, як досягти результату, покроково описуючи дії. Тому таке програмування є досить легким для розуміння.

У структурному програмуванні від вхідних даних повністю залежить послідовність виконання команд.

У директивному програмуванні свого часу виникла концепція локалізації частини коду в так звані підпрограми (функції, методи), з подальшим їх викликом з різних місць основної програми. Коли Ви телефонуєте в підпрограму можуть передаватися будь-які дані у вигляді аргументів; а підпрограма, в свою чергу, може повертати в головну програму результат (тобто отримані в ході її виконання дані).

Функціональне та логічне програмування

Представники функціональних мов: List, Haskell.

Представник логічних мов: Prolog.

Декларативна програма заявляє (декларує), що має бути досягнуто в якості мети. Важливим є точне формулювання завдання. Програміст не ставить алгоритм для її вирішення.

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

У логічному програмуванні програми виражені у вигляді формул математичної логіки, і рішення задачі досягається шляхом виведення логічних наслідків з них.

Об'єктно-орієнтоване програмування

Представники об'єктно-орієнтованих мов: С ++, Java, Python.

Особлива увага приділяється даними, які представляються в програмі у вигляді об'єктів. Об'єкти взаємодіють між собою за допомогою механізму передачі повідомлень. Завдання програміста - реалізувати такі об'єкти, при взаємодії яких можна буде отримувати бажаний результат.

ООП покликане вирішувати більш складні і об'ємні завдання в порівнянні з директивним програмуванням.

В основі ООП лежать такі поняття як успадкування. поліморфізм і інкапсуляція.

Інкапсуляція передбачає, що малозначні деталі об'єкта приховані. Об'єкт, отримуючи будь-яку команду, сам «знає» як її обробити виходячи з того, до якого класу він належить.

Всі об'єкти є екземплярами класів, які по відношенню один до одного можуть виступати в ролі батько-нащадок. Дочірні класи успадковують властивості батьківського. У разі, коли 100% спадкування не потрібно, виручає так званий поліморфізм, який передбачає перевизначення методів батьківського класу в дочірніх класах.