The ключова різниця між функціональним програмуванням та імперативним програмуванням є те, що функціональне програмування розглядає обчислення як математичні функції і уникає зміни стану та змінних даних, тоді як імперативне програмування використовує оператори, що змінюють стан програм.
Парадигма програмування передбачає стиль побудови структури та елементів комп'ютерної програми. Парадигми програмування допомагають класифікувати мови програмування залежно від їх особливостей. Мова програмування може впливати на більшу кількість парадигм. У об'єктно-орієнтованій парадигмі програма структурується за допомогою об'єктів, а об'єкти передають повідомлення за допомогою методів. Логічне програмування може виражати обчислення виключно з точки зору математичної логіки. Ще дві парадигми програмування - це функціональне програмування та імперативне програмування. Функціональне програмування дозволяє виражати обчислення як оцінку математичних функцій. Імперативне програмування забезпечує заяви, які явно змінюють стан пам'яті. У цій статті йдеться про різницю між функціональним програмуванням та імперативним програмуванням.
1. Огляд та ключові відмінності
2. Що таке функціональне програмування
3. Що таке імперативне програмування
4. Подібність між функціональним програмуванням та імперативним програмуванням
5. Порівняльне порівняння - функціональне програмування проти імперативного програмування у табличній формі
6. Підсумок
Функціональне програмування базується на математиці. Основний принцип функціонального програмування полягає в тому, що всі обчислення розглядаються як поєднання окремих математичних функцій. Математична функція відображає входи до виходів. Припустимо, що існує функція, яка називається f (x) = x * x. Значення x 1 відображається на вихід 1. Значення x відображається на вихід 4. Значення x відображається на вихід 9 і так далі.
Малюнок 01: Приклад мови функціонального програмування - Haskell
У функціональному програмуванні розглядаються закономірності. Мови функціонального програмування Haskell використовує метод нижче, щоб знайти підсумки чисел.
Функція сума має цілі значення, а результат також буде цілим числом. Його можна записати як суму: [int] -> int. Підсумовування можна здійснити, дотримуючись наведених нижче моделей.
sum [n] = n, сума одного числа - це саме число.
Якщо є список номерів, його можна записати так. N являє собою перше число, а ns - інші числа
sum (n, ns) = n + сума ns.
Наведені вище шаблони можна застосувати, щоб знайти підсумок трьох чисел, які є 3,4,5.
3 + сума [4,5]
3 + (4 + сума [5])
3+ 4 + 5 = 12
Кажуть, що функція або вираз мають побічні ефекти, якщо вона модифікує деякий стан поза його сферою дії або має помітну взаємодію зі своїми викликовими функціями, окрім повернутого значення. Функціональне програмування мінімізує ці побічні ефекти. Зміни стану не залежать від входів функції. Це корисно при розумінні поведінки програми. Одним з недоліків функціонального програмування є те, що вивчити функціональне програмування важче порівняно з імперативним.
Імперативне програмування - це парадигма програмування, яка використовує оператори, що змінюють стан програми. Основна увага приділяється опису роботи програми. Мови програмування, такі як Java, C і C #, є обов'язковими мовами програмування. Він забезпечує покрокову процедуру щодо того, що робити. Імперативні мови програмування містять структури, такі як, якщо, інакше, поки, для циклів, класів, об'єктів і функцій.
Малюнок 02: Приклад імперативної мови програмування - Java
Підсумовування десяти чисел можна знайти на Java наступним чином. У кожній ітерації значення i додається до суми та присвоюється змінній суми. У кожній ітерації значення суми продовжується додаванням до раніше обчисленої суми.
int сума = 0;
for (int i = 0; i< =10; i++)
сума = сума + i;
Імперативне програмування легко засвоїти, зрозуміти та налагодити. Стан програми легко знайти через використання змінних стану. Деякі недоліки в тому, що він може зробити код тривалим, а також може мінімізувати масштабованість.
Функціональне проти імперативного програмування | |
Функціональне програмування - парадигма програмування, яка розглядає обчислення як оцінку математичних функцій і уникає зміни стану та змінних даних. | Імперативне програмування - це парадигма програмування, яка використовує оператори, які змінюють стан програми. |
Структури | |
Функціональне програмування містить функціональні виклики та функції вищого порядку. | Імперативне програмування містить, якщо, інакше, для циклів, функції, класи та об'єкти. |
Мови програмування | |
Scala, Haskell і Lisp - це функціональні мови програмування. | C, C ++, Java - обов'язкові мови програмування. |
Фокус | |
Функціональне програмування фокусується на кінцевому результаті. | Імперативне програмування фокусується на описі функціонування програми. |
Простота | |
Функціональне програмування важко. | Імперативне програмування простіше. |
Парадигма програмування передбачає стиль побудови структури та елементів комп'ютерної програми. Функціональне програмування та імперативне програмування - це два з них. Різниця між функціональним програмуванням та імперативним програмуванням полягає в тому, що функціональне програмування розглядає обчислення як математичні функції і уникає зміни стану та змінних даних, тоді як імперативне програмування використовує заяви, що змінюють стан програм.
1. «Імперативне програмування». Wikipedia, Фонд Вікімедіа, 28 березня 2018. Доступний тут
2. «Функціональне програмування». Wikipedia, Фонд Вікімедіа, 28 березня 2018. Доступний тут
3.Комп'ютернийфільм. YouTube, YouTube, 30 серпня 2013. Доступно тут
1. 'Логотип Haskell' від Haskell1965 - власна робота, (CC BY-SA 3.0) через Commons Wikimedia
2.'14485179234 'Скріншоти Linux (CC BY 2.0) через Flickr