"Парадигмы программирования", 2022, вводная лекция

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

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

Алгоритм — «это когда»

Алгоритм — «это когда» (∃ только операциональное определение)

  1. формализована задача (класс задач)
  2. формализованы однозначно интерпретируемые действия (правила, инструкции и т. п.) при решении задач
  3. формализован исполнитель этих действий:
    1. порядок (не «последовательность») исполнения,
    2. представление объектов из предметной области задачи
    3. и т. п.
  4. есть конечная запись действий (программа),
    1. приводящая к решению задачи за конечное число действий исполнителя
    2. для одной и той же задачи решение всегда одинаковое

Алгоритмически полные формализмы

Примеры:

Тезис Чёрча

  1. Тезис Чёрча — Тьюринга

  2. …— Дойча

    • ⇒ Вещественных чисел ∄ :D

Требования к алгоритмически полной системе (нечёткие)

  1. Соответствие операциональному определению алгоритма
  2. + Аллегируемые объекты

  3. + Действия, обусловленные свойствами объектов
  4. ⇒ Эквивалентность какой либо актуальной алгоритмически полной системе :) в смысле Чёрча — Тьюринга

Следствия:

  1. Программа — это формальная запись алгоритма
  2. Программирование как актуализация понятия «программа» в этом определении

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

  1. Научная парадигма

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

    • Совокупность идей и понятий, определяющих стиль написания компьютерных программ
    • «Такой способ думать»
    • Формализация исполнителя, задания и аллегирования объектов, порядка и обусловливания действий и удобные для такого формализма практики

      • ⇒ Если аллегирование и обусловливание в ЯП похожи, скорее всего, они реализуют одну и ту же парадигму
      • ⇒ Большинство современных ЯП мультипарадигмальны

Конкретнее? А конкретика всегда разная!

  1. Где в «требованиях» циклы?
  2. Нужна ли последовательность выполнения инструкций?

  3. Существуют ли объекты, когда действия не выполняются?
  4. «Вычислитель» — это конкретная ЭВМ или что-то совсем иное?
  5. При повторном использовании алгоритма выполняется тот же самый код или другой?

О чём будет этот курс?

  1. Нет никакого конечного списка парадигм, а тем более единого критерия, который бы позволил составить такой список
  2. Парадигмы могут пересекаться, быть реализованы частично и т. п.
  3. Устоявшиеся парадигмы живы потому, что эффективно решают некоторые классы задач
  4. Языки программирования, как правило, хорошо отвечают не более, чем одной парадигме
    • хотя зачастую имеют инструментарий для другой
  5. ⇒ Будем коротко изучать наиболее характерные некоторые ЯП, и как на них думать
  6. В числе прочего — ООП как основу для парадигмального сдвига
  7. Процедурное окостенение алгоритмического мышления как недостаток современной программистской культуры

Бонус: о чём этот курс не будет

LecturesCMC/AL/2022_09_05 (последним исправлял пользователь FrBrGeorge 2022-09-04 18:15:50)