Найти в Дзене
1268 подписчиков

Решил поговорить об языках программирования. Ну, вообще-то это такая необъятная тема. Взять хотя бы классификацию языков. Видимо я ещё не раз буду обращаться к этому вопросу. Сегодня же хотел бы поговорить о делении всех языков на императивные и декларативные.


Что такое императив? Императив это такое обязательное предписание, требование, что-либо сделать. Декларативный в свою очередь означает описательный. И так что-же такое императивные и декларативные языки. Я бы привел такой пример. Предположим вы хотите построить дом. Для строителей вы прописываете всю технологию строительства, пошагово. Что за чем следует, какие материалы используются и сколько, каков должен быть результат каждого шага. И строители должны действовать строго по вашим инструкциям. И как вы представляете себе, если технология будет соблюдена, вы получите нужный вам дом. В противоположность императивному подходу при декларативном подходе вы описываете только конечный результат: вид, размеры, все параметры и т.п. Как будут строители этого добиваться - не важно. С точки зрения строительства, вероятно, это не слишком приемлемо. А вот в области программирования вполне возможно.

Обычные языки программирования: PascaL, C, Python, C# и т.д. являются чисто императивными. Действительно, в программе мы вынуждены прописывать последовательность действий, которые должны привести к правильному результату. Если выпадет одно звено, то результат будет не правильный. Напротив в таком языке как SQL мы пишем команды, в которых указан результат: получить строки, описанные в запросе, добавить строку в таблицу и т.д. Как этого будет добиваться движок СУБД - мы не знаем. Желательно только по-быстрее, конечно. Ещё одним декларативным языком обычно называют HTML. Язык описывает вид страницы, а как это будет делать браузер, нам тоже всё равно.

Однако, не всё так просто. Императивные языки используют готовые библиотеки. А что значит вызвать функцию или создать объект на основе подключенной библиотеки. В сущности вы здесь используете декларативный подход, требуя от библиотеки описанный вами результат (а как она будет это делать, вам не важно).

А что же с декларативными языками? Здесь ещё интересней. Возьмём хотя бы язык HTML. Там есть такой элемент, как форма. А что это, как не элемент императивного программирования. Я уж не говорю о CSS (каскадных таблицах). Ну и, наконец, JavaScript, который обычно внедряется в HTML текст. А что же SQL? Но дело то в том, что запросы SQL вы либо используете из кода императивного языка, либо используете какое-то расширение языка SQL, например PlpgSQL или Transact SQL. Т.е. SQL всегда оказывается интегрирован в императивные языки.

Вот как-то так. Императивность и декларативность есть, таким образом, только лишь крайние абстракции, почти никогда в чистом виде не используемые.


Решил поговорить об языках программирования. Ну, вообще-то это такая необъятная тема. Взять хотя бы классификацию языков. Видимо я ещё не раз буду обращаться к этому вопросу.
2 минуты