Обычно парадигмы программирования изучают после того, как вы освоили хотя бы один язык программирования, но почему я хочу изучить его сейчас, когда мы только начали знакомиться с Pascal? Дело в том, что изучая парадигмы программирования мы можем подробнее познакомиться с историей развития языков программирования.
А что вообще означает парадигма программирования? Вообще, мне больше нравится термин не парадигма программирования, а стиль программирования ведь по сути это одно и тоже.
Сейчас я приведу аналог с боевыми искусствами. Когда-то давным давно в Древней Греции появился первый боевой стиль – это бокс, затем в этой же Древней Греции появилась борьба. Данные стили были совсем не похожи друг на друга. Затем с развитием боевых искусств, бокс и борьба породили множество других стилей: каратэ, джиу-джитсу и т.д. Т.е. от этих двух стилей начали появляться и развиваться другие стили, и дошло до того, что появились смешанные единоборства, которые включали в себя элементы из всех других стилей, включая бокс и борьбу.
Сейчас, когда боец смешанных единоборств изучает соперника перед боем, он решает какой стиль ему нужен, чтобы победить. Например, он понимает, что его соперник слаб в ударке (а наш боец нет), и он решает вести бой с соперником используя стиль бокс. Или наоборот, соперник очень силен в ударке, но слаб в борьбе (а наш боец в этом стиле силен), и он решает, что использует для победы над противником стиль борьба. Т.е. в зависимости от задачи (победить того или иного соперника) боец использует тот или иной стиль боя.
Тоже самое есть и программировании: изначально был императивный стиль программирования – это когда мы пишем инструкции (или команды) для компьютера и он их выполняет последовательно один за другим. Т.е. мы говорим компьютеру как решить задачу последовательно, строчка за строчкой. И мы с вами писали код чисто в императивном стиле: сперва написали название программы, потом объявили переменный, затем с помощью операторов, присваивали им значения и выводили на экран. Т.е. мы делали все последовательно. Т.е. язык Pascal может работать в императивном стиле.
Затем, после появления императивного стиля, появился не похожий не него декларативный стиль. Чтобы понять его, нам бы надо изучить один из декларативных языков программирования, чего мы делать не будем, я просто скажу что основное отличие в том, что код в декларативном языке выполняется не последовательно.
Для примера, вы ваша мама решила, чтобы вы сегодня приготовили борщ. И она для решения этой задачи будет использовать императивный стиль. Т.е. она дала вам список инструкций, которые вам необходимо последовательно выполнить: сперва купить те или иные продукты, почистить их и порезать, достать кастрюлю, наполнить ее водой и т.д.
А как в данной ситуации можно применить декларативный стиль? При декларативном стиле, вы уже должны знать как готовить борщ, и вашей маме достаточно сказать: “Приготовь борщ”, чтобы вы тут же начали ее исполнять.
Отсюда можно подумать что пользоваться декларативными языками программирования гораздо легче – ты просто описываешь, что ты хочешь, а язык программирования сам все решит. Получается, тот кто разрабатывал тот или иной декларативный язык, уже создал в нем весь необходимый функционал, а программисты, которые пользуются этим языком, просто описывают, что они хотят. И в упрощенном смысле это так, но декларативные языки очень узкоспециализированные, и разрабатываются под конкретные задачи. Если посмотреть на ТОП-10 самых популярных языков программирования, то там вы не найдете декларативных языков, так как императивные языки могут решать больше разнообразных задач (так как они не узкоспециализированные), и они могут применятся в самых разнообразных сферах – от науки до бизнеса.