Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Textovy_dokument_OpenDocument (1).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
35 Кб
Скачать
☆

6.Стили программирования

Императивные программы имеют склонность акцентировать последовательности шагов для выполнения какого-то действия, а функциональные программы к расположению и композиции функций, часто не обозначая точной последовательности шагов. Простой пример двух решений одной задачи (используется один и тот же язык Python) иллюстрирует это.

# императивный стиль

target = [] # создать пустой список

for item in source_list: # для каждого элемента исходного списка

trans1 = G(item) # применить функцию G()

trans2 = F(trans1) # применить функцию F()

target.append(trans2) # добавить преобразованный элемент в список

Функциональная версия выглядит по-другому:

# функциональный стиль

# языки ФП часто имеют встроенную функцию compose()

compose2 = lambda A, B: lambda x: A(B(x))

target = map(compose2(F, G), source_list)

В отличие от императивного стиля, описывающего шаги, ведущие к достижению цели, функциональный стиль описывает математические отношения между данными и целью.

Более точно, существует четыре ступени развития функционального стиля, в порядке убывания роли данных в программах:

  • Рефал (для этой категории, представленной единственным языком, нет общепринятого названия);

  • Аппликативные (Лисп, ML, Tcl, Rebol);

  • Комбинаторные (APL/J/K, FP[en]/FL[en]);

  • Бесточечные (чистые конкатенативные) (Joy, Cat, Factor, подмножество PostScript).

В первом случае вся структура программы определяется структурой данных, в последнем — данные как таковые вообще отсутствуют в исходном коде, они лишь подразумеваются на входе. Некоторые языки поддерживают ряд стилей: например, Haskell позволяет писать и в аппликативном, и в комбинаторном, и в бесточечном стилях.

Вывод: в изучении данной статьи я понял, что язык является не простым в изучении как это показано в описании выше.

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