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

Вводная лекция

Что такое «парадигмы программирования»?

  1. Программирование: что это такое?
    1. Алгоритм — «это когда» (∃ только операционное определение)
      1. формализована задача (класс задач)
      2. формализованы однозначно интерпретируемые действия (правила, инструкции и т. п.) при решении задач
      3. формализован исполнитель этих действий:
        1. порядок (не «последовательность») исполнения,
        2. представление объектов из предметной области задачи
        3. и т. п.
      4. есть конечная запись действий (программа),
        1. приводящая к решению задачи за конечное число действий исполнителя
        2. для одной и той же задачи решение всегда одинаковое
    2. Программирование как актуализация понятия «программа» в этом определении
    3. Алгоритмически полная система
      1. Примеры: МТ, НАМ, общерекурсивные функции, …
      2. Тезис Чёрча
      3. Требования к алгоритмически полной системе:
        1. + Аллегируемые объекты

        2. + Действия, обусловленные свойствами объектов
  2. Парадигма программирования: дисциплина построения и актуализации алгоритмически полных формализмов.

Почти всё, что мы знаем о конкретном ЯП, может быть не нужно в другом! Например:

  1. Где в «требованиях» циклы?
  2. Нужна ли последовательность выполнения инструкций?
  3. «Действия» описывают, что делать с объектом, или какими свойствами он должен обладать?
  4. «Объекты» существуют в исполнителе, а он их потихоньку изменяет с помощью «инструкций» или «объекты» — это и то, над чем происходит вычисление, и то, что вычисляет, порождая новые объекты
  5. «Вычислитель» — это конкретная ЭВМ или что-то совсем иное?
  6. Рассчитываем ли мы на то, что аллегирование всех объектов программы — знание, доступное человеку?
  1. О чём будет этот курс?
    1. Нет никакого конечного списка парадигм, а тем более единого критерия, который бы позволил составить такой список
    2. Парадигмы могут пересекаться, быть реализованы частично и т. п.
    3. Устоявшиеся парадигмы живы потому, что эффективно решают некоторые классы задач
    4. Языки программирования, как правило, хорошо отвечают не более, чем одной парадигме
    5. ⇒ Будем коротко изучать наиболее характерные некоторые ЯП, и как на них думать
    6. Процедурное окостенение алгоритмического мышления как недостаток современной программистской культуры

LecturesCMC/AL/2020_09_07 (last edited 2020-09-14 09:23:50 by FrBrGeorge)