Можливо, ви захочете переглянути цей швидкий відеоблог . Підсумок полягає в тому, що різниця між структурованим програмуванням і програмуванням ОО - це питання того, що вони відбирають від програмування, а не в тому, що вони додають. Програмні дисципліни, такі як Структуроване програмування та Об'єктно-орієнтоване програмування, обмежують, не дозволяють. Ось кілька визначень. Попередження: вам це не сподобається.
Структуроване програмування - це дисципліна, що накладається на goto (пряма передача контролю)
Програмування ОО - це дисципліна, що накладається на покажчики на функції (непряма передача контролю)
Функціональне програмування - це дисципліна, накладена при призначенні.
Перший не надто важко зрозуміти. Дійкстра виявив, що неможливо створити загальні докази правильності, коли дозволено переходити в алгоритми. Однак якщо структури управління обмежувалися послідовністю, підбором та ітерацією, то підтвердження правильності були можливими. Звичайно, ми навіть не намагаємось довести речі правильними в даний час, але нам подобається простота і витонченість структурованого програмування.
Трохи складніше зрозуміти ОО. Ми часто визначаємо ОО як інкапсуляція, успадкування та поліморфізм. Що менше відомо, це те, що всі три ці атрибути є досяжними, і часто вони були досягнуті в C. Дійсно, C ++ почався як просто препроцесор, який склався до C. Це не так важко інкапсулювати в C. Не важко побудувати структури даних, які є підмножинами один одного, імітуючи спадкування. Поліморфізм, однак, трохи складніше. Він вимагає вказівників на функції, якими в С важко керувати. Мови на зразок C ++ дали нам дисципліну, нав'язану цим покажчиками функцій. Компілятор C ++ створив для нас vtables і ініціалізував покажчики всередині них відповідно до суворого формалізму. Тож у цілком реальному сенсі ОО є просто дисципліною, що накладається на ньогонепряма передача контролю, тобто покажчиків на функції.
Структуроване програмування - це те, як не використовувати goto. OO - про те, як не використовувати покажчики на функції. І функціональне програмування теж стосується того, чого не потрібно робити. У функціональному програмуванні ми не присвоюємо змінним, за винятком найбільш строго контрольованих випадків.
Отже, врешті-решт, усі ці "Програмувальні технології" насправді обмежують дисципліни, а не підтримують технології. Вони кажуть нам , що НЕ робити більше , ніж вони говорять нам , що для робити. А це означає, що за останні 40 років розробка програмного забезпечення не зросла. Швидше, вона скоротилася. Це стає все більш обмеженим, оскільки ми дізналися все, чого не повинні робити.
Навчання того, що не робити - це добре; але ось заважаючи питання: Які нові речі ми дізналися , щоб зробити?