Пересдача № 1
Формат проведения пересдачи
Пересдача будет проведена в формате экзамена с билетами. Во время пересдачи студенту будет предоставлен билет, содержащий 2 вопроса по теме предмета.
Для каждого вопроса необходимо составить краткий ответ в текстовом виде. В тексте должно присутствовать краткое разъяснение темы, снабжённое примерами собственного кода.
Документ необходимо подготовить за 1 день и прикрепить к задаче в Moodle.
Вопросы к пересдаче
- Перечислите области применения функциональных языков программирования.
- Укажите сферы, в которых применение функциональных языков программирования затруднено. Объясните эти причины.
- Разъясните категоризацию кода на данные, вычисления и действия.
- Укажите ключевые характеристики категории исходного кода данные. Какие есть сильные стороны и ограничения у данной категории?
- Укажите ключевые характеристики категории исходного кода вычисления. Какие есть сильные стороны и ограничения у данной категории?
- Укажите ключевые характеристики категории исходного кода действия. Какие есть сильные стороны и ограничения у данной категории?
- Опишите типичные рефакторинги, которые можно применить для выделения вычислений из действий. В каких случаях стоит использовать данные методы?
- Следует ли применять данные методы к действиям, даже если невозможно из них выделить вычисления? Поясните на примерах.
- Объясните шаблон копирования данных при записи. Для чего он может быть использован? Приведите пример использования.
- Объясните шаблон глубокого копирования данных. Для чего он может быть использован? Приведите пример использования.
- Какие из шаблонов копирования можно использовать для организации данных приложения в неизменяемом формате? Укажите их достоинства и недостатки для решения этой задачи, приведите примеры.
- Какие задачи стремиться решить стратифицированный дизайн архитектуры приложения. Приведите пример.
- Объясните назначение и способ применения шаблона несложной реализации при использовании стратифицированного дизайна. Приведите пример.
- Объясните назначение и способ применения шаблона барьера из абстракций при использовании стратифицированного дизайна. Приведите пример.
- Объясните назначение и способ применения шаблона минимального интерфейса при использовании стратифицированного дизайна. Приведите пример.
- Объясните назначение и способ применения шаблона удобные слои при использовании стратифицированного дизайна. Приведите пример.
- Объясните назначение и способ применения рефакторингов выделение явного аргумента и замены тела с помощью обратного вызова. Приведите примеры.
- Какие возможности предоставляет использование функций как объектов первого рода. Для каждой возможности приведите аналогичный шаблон проектирования объектно-ориентированных приложений.
- Приведите условия применения и пример использования рефакторингов выделения явного аргумента и замены тела с помощью обратного вызова для создания функций высшего порядка.
- Опишите функцию высшего порядка forEach: способ вызова, подход к реализации, ограничения по использованию. Приведите примеры её использования.
- Опишите функцию высшего порядка для формирования шаблонов копирования данных при записи и глубокого копирования. Приведите примеры их использования для массивов и ассоциативных массивов (объектов).
- Опишите функцию высшего порядка map: способ вызова, подход к реализации, ограничения по использованию. Приведите примеры её использования.
- Опишите функцию высшего порядка filter: способ вызова, подход к реализации, ограничения по использованию. Приведите примеры её использования.
- Опишите функцию высшего порядка reduce: способ вызова, подход к реализации, ограничения по использованию. Приведите примеры её использования.
- Опишите подходы к реализации цепочек по обработке цепочек: с оборачиванием функций высшего порядка и с выделением функций-вычислений. Укажите плюсы и минусы каждого из подходов. Приведите примеры.