Відповіді:
Існує кілька підпарадигм імперативної парадигми програмування, таких як процедурна або об’єктно-орієнтована парадигми програмування.
У парадигмі імперативного програмування ви описуєте алгоритм поетапно на різних ступенях абстракції.
Приклади мов програмування, які підтримують процедурну парадигму:
Зазвичай він відноситься до мов, які демонструють ієрархію типів, які успадковують як методи, так і стан від базових типів до похідних типів, але також включає незвичайний JavaScript на основі прототипів.
Приклади мов програмування, які підтримують парадигму ОО:
Існує кілька суб-парадигм декларативної парадигми програмування, таких як функціональна або логічна парадигми програмування.
У декларативній парадигмі програмування ви описуєте результат або мету, і отримуєте їх через " чорний ящик ". Протилежність імперативу.
Приклади мов програмування, які підтримують декларативну парадигму програмування:
Функціональне програмування наголошує на застосуванні функцій без побічних ефектів і без змінного стану. Декларативні системи, представлені вище, демонструють певні аспекти функціонального програмування.
Приклади мов програмування, які підтримують декларативну функціональну парадигму:
Декларативне програмування - це місце, де ви говорите, що хочете, не маючи на увазі, як це робити. При процедурному програмуванні вам потрібно вказати точні кроки, щоб отримати результат.
Наприклад, SQL є більш декларативним, ніж процедурним, оскільки запити не визначають кроки для отримання результату.
Дозвольте навести вам реальний приклад: мені потрібна чашка чаю.
Процедурні:
Декларативний:
Мовою процедури ви визначаєте весь процес і надаєте кроки, як це зробити. Ви просто надаєте замовлення та визначаєте, як буде обслуговуватися процес.
Декларативною мовою ви просто встановлюєте команду або порядок і дозволяєте в системі отримувати інформацію про те, як виконати це замовлення. Вам просто потрібен ваш результат, не заглиблюючись у те, як це слід робити.
Процедурне програмування:
У процедурному програмуванні, коли програма запускається, вона виконує набір інструкцій. Інструкції можуть змінюватися залежно від вмісту деяких файлів або пам'яті, але загалом вони не сильно відрізняються. введення в програму, як правило, здійснюється не з введення користувачем у реальному часі, а з попередньо зібраного набору даних.
Декларативне програмування:
У програмі, що керується Декларативною подією, централізується навколо масиву даних за допомогою необов’язкових дій, які програма може виконувати над ними. Наприклад, кожна "подія" в текстовому процесорі - це будь-які зміни миші чи клавіатури (або файлу), що впливають на дані, документ (и). Їх не потрібно виконувати в будь-якому порядку. Управління подіями програмування має форму невеликих програм (обробників подій), які всі працюють над загальним набором даних, так що кожна невелика програма може використовувати однакові дані, документ у цьому прикладі.
Основна різниця між двома мовами програмування полягає в тому, що в процедурному програмуванні ми розповідаємо комп’ютеру, як вирішити проблему, а в декларативному програмуванні - комп’ютеру, яку проблему ми хочемо вирішити.
Щоб звернутися до коментаря, що відповідає, і, можливо, навести приклад між відмінностями цих двох. Ансибіл є процедурним, коли як щось на зразок маріонетки чи тераформи є декларативними. Наприклад, ви створюєте файл ansible yaml для розгортання 10 екземплярів ec2, наприклад:
-ec2: count: 10 image: ami-058c6e5b73b074cd2 instance_type: t2.micro
Якби вам довелося запустити цей файл двічі, у вас вийшло б 20 екземплярів t2.micro ec2. Якщо ви написали еквівалент декларативною мовою, такою як terraform, і запустили його двічі, у вас було б лише 10 екземплярів t2.micro, незалежно від того, скільки разів ви його запускали. Декларативні мови визначають кінцевий стан. Процедурні мови просто виконують те, що ви йому говорите, не зважаючи на поточний або минулий стан.
Тож YAML - це декларативна мова програмування? Тому що ми визначаємо те, що хочемо, замість того, щоб писати фактичну логіку.
Я запитую це, тому що якщо хтось знає Ansible, який є інструментом управління конфігурацією, він використовує YAML, але все ще потрапляє в категорію процедурної мови.
У процедурному підході ви кодуєте свою інструкцію для досягнення результату. У декларативному підході ви визначаєте, що потрібно вирішити, як знання про вирішення проблеми. Погляньте на приклад процедурного або декларативного підходу, який я застосував в обох підходах.
Як ви могли б побачити на прикладі, в декларативному підході вам не потрібно вказувати ЯК вирішити проблему.