Парадигмы программирования

Модели компьютера

Фон-нейманновская архитектура — императивный подход

Императивный подход — исторически первый подход к программированию компьютеров, который применялся с момента их появления. Его суть в том, чтобы дать компьютеру точную команду, что и как нужно сделать, например переместить содержимое ячейки памяти по такому-то адресу в такой-то регистр. Таким образом происходило программирование в адресных кодах, затем в ассемблере, затем в первом "высокоуровневом" языке Fortran, затем в C и т.д. до наших дней. Иными словами, этот подход постепенно эволюцтонировал по мере развития мейнстрим инструментов и языков разработки. Эта эволюция постепенно прошла через стадии: "наивного" (без четко определенных правил и парадигм) программирования, структурного, затем объектно-ориентированного и скриптингового, которые являются основными на сегодняшний день.

Лямбда-исчисление — декларативный подход

Если первым "высокоуровневым" языком программирования был Fortran, то вторым — Lisp — первый представитель совсем другой модели вычислений. Декларативный подход ставит своей целью описать не детали выполнения, а требуемый результат каких-то операций.

Лямбда исчисление Черча является основой большинства (хотя и не всех) декларативных парадигм.

Хороший кейс дл сравнения императивного и декларативного подходов — это навигационные и реляционные БД и использующиеся для запросов к ним языки: FoxPro и SQL.

Парадигмы императивного подхода

Структурное программирование

Модульность

Объектно-ориентированное программирование

Наследование

Полиморфизм

Передача сообщений

Скриптинговая парадигма

Парадигмы декларативного подхода

Метапрограммирование

Функциональная парадигма

Другие парадигмы

Логическое программирование (язык Prolog)

Основанно на модели формальной логики предикатов I порядка. В рамках него появились такие подходы к вычислениям как:

Программирование в массивах (языки APL, J, K, Q)

Обобщение операций над скалярными данными на матричные операции. Основные идеи:

Конкурентное программирование

Эзоязыки

Also available in: HTML TXT