Підходи до програмування

При створенні програм можуть використовуватися різні методології: імперативного та декларативного програмування.

Приклади декларативного програмування: документ HTML та його стиль CSS, документ XML та його подання XSLT.

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

Особливий приклад програмування — об'єктно-орієнтований підхід, де дії виконуються об'єктами, що взаємодіють.
Логіка мислення при цьому підході — створити в оперативній пам'яті об'єкти, які вміють щось робити, ініціалізувати їх — і потім програма виконується взаємодією цих об'єктів. Щоб така програма почала функціонувати — виконувати дії — такі об'єкти мають існувати — бути вже створено в оперативній пам'яті комп'ютера. Деякі об'єкти вже вбудовані в інтерпретатор PHP. А для створення інших об'єктів виконується програма, яка читає коди об'єктів з файлів. Зазвичай для кожного об'єкта класу свій файл.

Але веб-запит повинен виконуватися за мінімальний час— щоб сервер справлявся з потоком запитів — яких може бути сотні на секунду. Якщо наступний запит надійшов до завершення попереднього і всі ядра процесора зайняті роботою, запит стає в чергу, чим більше черга — тим пізніше відвідувач сайту отримає результат запиту — чи піде не чекаючи.

Виконання кожного веб-запиту при об'єктно-орієнтованому підході, де всі намагаються представити об'єктами — як у більшості "популярних" CMS:

  1. Створення в оперативній пам'яті комп'ютера безлічі об'єктів програми — незалежно: вони знадобляться чи ні.
    Цей підготовчий етап може бути дуже витратною частиною процесу (часу та ресурсів), хоча перехід від механічних накопичувачів до SSD значно зменшив час читання файлів.
  2. Власне виконання запиту.
  3. Очищення оперативної пам'яті.

Процедурний та об'єктно-орієнтований підходи до програмування не виключають один одного, а доповнюють.