Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PR.doc
Скачиваний:
2
Добавлен:
27.10.2018
Размер:
147.46 Кб
Скачать

Языки функционального программирования

  • Lisp (List processor). Считается первым функциональным языком программирования. Нетипизирован. Содержит массу императивных свойств, однако в общем поощряет именно функциональный стиль программирования. При вычислениях использует вызов по значению. Существует объектно-ориентированный диалект языка - CLOS.

  • Scheme. Диалект Lisp-а, предназначенный для научных исследований в области компьютерной науки. При разработке Scheme был сделан упор на элегантность и простоту языка. Благодаря этому язык получился намного меньше, чем Common Lisp.

  • ML (Meta Language). Семейство строгих языков с развитой полиморфной системой типов и параметризуемыми модулями. ML преподается во многих западных университетах (в некоторых даже как первый язык программирования).

  • Haskell. Один из самых распространенных нестрогих языков. Имеет очень развитую систему типизации. Несколько хуже (на мой взгляд) разработана система модулей. Последний стандарт языка - Haskell 98.

  • Gofer (GOod For Equational Reasoning). Упрощенный диалект Haskell. Предназначен для обучения функциональному программированию.

9. Поняття про структурне програмування

Структурное программирование сосредотачивает свое внимание на логике программы и включает три основных компонента: нисходящее проектирование, модульное программирование, структурное кодирование.

Основная идея структурного кодирования - структура модуля компонуется из базовых структур с последовательной детализацией алгоритма.

В модульном программировании основная идея - разбиение программы на последовательность модулей, каждый из которых выполняет одно или несколько действий. Требование к модулю - чтобы его выполнение всегда начиналось с первой команды и всегда заканчивалось последней (вход и выход из модуля невозможен). Это означает реализацию принципа Input-Process-Output. Модули логически независимы - результат работы модуля зависит только от исходных данных, но не зависит от работы других модулей.

Каждый модуль формируется на основе базовых структур.

В теории структурного программирования выделяют следующие базовые структуры:

  • Линейная (последовательная) структура

  • Разветвляющаяся (ветвящаяся) структура

  • Циклическая структура (два вида)

Базовые типы данных: числа, строки, логические величины. Для обращения к ячейкам памяти используются переменные, которые имеют имя (идентификатор), указывающее на значение. Кроме имени и значения переменная имеет тип и допустимый диапазон значений. Переменные с указанием их типа вводятся с помощью специальных команд описания (объявления, декларации). Каждый тип описывается своим ключевым словом. Переменные могут существовать на всем протяжении работы программы - тогда они называются статистическим, а могут создаваться и уничтожаться на разных этапах ее функционирования - их называют динамическими. Все остальные данные в программе, значение которых не меняется на протяжении ее работы, называют константами или постоянными. Константы также имеют тип.

Наличие подпрограмм позволяет вести проектирование и разработку программы "сверху вниз" - нисходящее проектирование. Сначала выделяется несколько подпрограмм, решающих самые глобальные задачи, потом каждый из этих модулей детализируется на более низком уровне, разбиваясь в свою очередь на некоторое число других подпрограмм. Такой подход удобен тем, что позволяет человеку постоянно мыслить на предметном уровне, не опускаясь до конкретных операторов и переменных. В результате строится иерархическая схема, отражающая состав и взаимоподчиненность отдельных функций - функциональная структура.

Восходящее программирование основано на противоположном процессе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]