
- •1. Поколения языков программирования.
- •2.Понятие фп, история развития.
- •1 . Трактовка функции через понятие переменная
- •2. Определения без переменных:
- •3.Программирование при помощи функций.
- •4. Программирование при помощи процедур.
- •5. Символьные данные в строго-функциональных языках.
- •6.Элементарные селекторы, конструкторы и предикаты.
- •7. Рекурсивные функции.
- •8. Проблема выбора подфункции
- •9. Накапливающий параметр — аккумулятор
- •10. Локальное определение.
- •11. Функции высших порядков.
- •12. Фвп применительно к языку Haskell.
- •13. Основы лямбда исчисления
- •14. Правило преобразования лямбда выражения.
- •15. Ромбическое свойство системы редукций.
- •16. Стандартные порядки редукций.
- •18. Структуры данных и их типы на языке Haskell.
- •1. Синонимы типов
- •19. Понятие модуля в Haskell.
- •Абстрактные типы данных
- •Другие аспекты использования модулей
- •20. Классы и их экземпляры в Haskell.
- •21. Наследование в языке Haskell.
- •22. Сорта типов и структуры данных.
- •[Править]Определение
- •[Править]Примеры
1. Поколения языков программирования.
1)54-58 гг Fortran(Дж.Бэкус, императивный подход к вычислению в рограммировании), Algol-58, Flowmatic (яз-ки мат. формул)
2)59-61 гг Fortran-2(подпрогр. и раздельн. компиляция), Algol-60(типы данных, блочная стр-ра), Cobol(опис. данных, работа с файлами), Lisp(обработка списка и указателей)
Н
езащищенность
данных, беспорядочность выполнения.
Отладка таких программ была крайне тяжелой по причине большого количества ошибок, а также большого кол-ва перекрестных связей, беспорядочностью потоков управления.
Основное отличие – представление данных.
3)62-70-е гг PL/1 (Fortran+Algol+Cobol), Algol-68, Pascal, Simula (один из первых объектно-ориентированных)
-развитие структурного программирования – появляется механизм вложения программ с ограниченной видимостью данных
-возникли механизмы, поддерживающие передачу параметров при вызове программы
-начали развиваться методы создания/разделения больших систем
2.Понятие фп, история развития.
Математические функции выражают связь между параметрами (входом) и результатом (выходом) некоторого процесса. Так как вычисление это тоже процесс, имеющий вход и выход, функция - вполне подходящее средство задания вычислений. Именно этот простой принцип положен в основу функционального стиля программирования. Функциональная программа представляет собой определения функций. Функции определяются через другие функции или рекурсивно - через себя. В процессе выполнения программы, функции получают параметры, вычисляют и возвращают результат, в случае необходимости вычисляя значения других функций. Программируя на функциональном языке, программист не должен описывать порядок вычислений. Ему необходимо просто описать желаемый результат в виде системы функций.
Функциональное программирование – способ составления программ, в котором единственным действием является вызов функции. Единственным способом структурирования программы является введение имен для функций и задание для каждого имени своего выражения.
Функциональное программирование не признает ячеек памяти, операции присваивания, передачи управления, вместо циклов используются рекурсии.
Основные понятия:
Под «множеством» мы понимаем соединение в некое целое M определённых хорошо различимых предметов m нашего созерцания или нашего мышления (Кантор). Множество есть совокупность различных элементов, мыслимая как единое целое (Рассел).
Кортеж – последовательность конечного числа элементов.
Отличия множества от кортежа:
Кортеж – упорядоченный набор элементов, каждый элемент находится на своем порядковом месте. Кортеж – конечная последовательность элементов. В кортеже порядковый номер или положение элементов является уникальным.
Понятие соответствия: соответствие предполагает наличие двух множеств, причем для каждого элемента 1го множества либо не указано соответствующих элементов 2го множества, либо такие элементы указаны. Первое множество называется множеством отправления, второе – множеством прибытия.
Существует 2 основных подхода в понимании функции: