Как программировали до ООП и почему это стало проблемой?
04.02.2025
Процедурное программирование: как всё начиналось
Когда компьютеры только появились, программисты писали код так, словно давали жёсткие инструкции машине:
Введи данные
Обработай их
Выполни расчёты
Выведи результат
Эти инструкции представляли собой алгоритм – чёткий порядок действий, который нужно выполнить для решения задачи. Такой подход казался естественным и удобным.
Языки программирования, поддерживающие этот стиль, – Assembler, C, Pascal – стали основой всей индустрии. В процедурном программировании код писался как последовательность функций (процедур), каждая из которых выполняла свою часть работы.
Почему процедурный код стал проблемой?
Когда программы были маленькими – всё было ок. Но со временем размер кода рос, проекты усложнялись, и появились серьёзные проблемы:
Невозможно удержать всё в голове. В больших программах столько функций, что помнить, кто за что отвечает, стало невозможно.
Спагетти-код. Разработчики начали использовать goto (команда безусловного перехода), что приводило к запутанным программам, где код прыгал туда-сюда, и разобраться в нём было нереально. Такой код прозвали "спагетти-кодом".
Проблемы с масштабированием. Если программу нужно было расширить, приходилось менять код в 100 местах, что часто ломало работу всей системы.
Код трудно переиспользовать. В отличие от сборки машин или домов, где используют готовые детали, программисты каждый раз писали всё с нуля.
Структурное программирование: попытка решить проблему
В 70-х появился структурный подход, который стал эволюцией процедурного программирования.
Основные идеи:
Разбиваем код на функции (процедуры), каждая из которых отвечает за свою часть программы.
Избегаем goto – теперь программа идёт строго сверху вниз, а переходы осуществляются через вызовы функций.
Используем отступы и вложенность для лучшей читаемости кода.
Пример хорошего процедурного кода на C++
Этот код уже читабельный, но даже с таким стилем работы большие проекты всё равно были сложными.
Главная проблема: процедурный код плохо управляет сложностью
Если у вас есть 100 функций, следить за их вызовами очень трудно.
Если функция изменяет глобальные переменные, это ломает код в других местах.
Масштабировать проекты трудно – чем больше кода, тем больше хаоса.
Так что, несмотря на развитие структурного программирования, код оставался трудноуправляемым.
И вот тут появился ООП, который предложил совершенно новый взгляд на программирование.
Last updated