"Парадигмы программирования", 2020
(если кто-то попал сюда в 2021: план и сама Вводная лекция 2021 г.)
Что такое «парадигмы программирования»?
- Программирование: что это такое?
- Алгоритм — «это когда» (∃ только операционное определение)
- формализована задача (класс задач)
- формализованы однозначно интерпретируемые действия (правила, инструкции и т. п.) при решении задач
- формализован исполнитель этих действий:
- порядок (не «последовательность») исполнения,
- представление объектов из предметной области задачи
- и т. п.
- есть конечная запись действий (программа),
- приводящая к решению задачи за конечное число действий исполнителя
- для одной и той же задачи решение всегда одинаковое
- Программирование как актуализация понятия «программа» в этом определении
- Алгоритмически полная система
- Примеры: МТ, НАМ, общерекурсивные функции, …
- Тезис Чёрча
- Требования к алгоритмически полной системе:
- + Действия, обусловленные свойствами объектов
- Алгоритм — «это когда» (∃ только операционное определение)
- Парадигма программирования: дисциплина построения и актуализации алгоритмически полных формализмов.
Почти всё, что мы знаем о конкретном ЯП, может быть не нужно в другом! Например:
- Где в «требованиях» циклы?
- Нужна ли последовательность выполнения инструкций?
- «Действия» описывают, что делать с объектом, или какими свойствами он должен обладать?
- «Объекты» существуют в исполнителе, а он их потихоньку изменяет с помощью «инструкций» или «объекты» — это и то, над чем происходит вычисление, и то, что вычисляет, порождая новые объекты
- …
- «Вычислитель» — это конкретная ЭВМ или что-то совсем иное?
- Рассчитываем ли мы на то, что аллегирование всех объектов программы — знание, доступное человеку?
- …
- О чём будет этот курс?
- Нет никакого конечного списка парадигм, а тем более единого критерия, который бы позволил составить такой список
- Парадигмы могут пересекаться, быть реализованы частично и т. п.
- Устоявшиеся парадигмы живы потому, что эффективно решают некоторые классы задач
- Языки программирования, как правило, хорошо отвечают не более, чем одной парадигме
- ⇒ Будем коротко изучать наиболее характерные некоторые ЯП, и как на них думать
- Процедурное окостенение алгоритмического мышления как недостаток современной программистской культуры