kopilkaurokov.ru - сайт для учителей

Создайте Ваш сайт учителя Курсы ПК и ППК Видеоуроки Олимпиады Вебинары для учителей

Презентация на тему: "Функциональное программирование".

Нажмите, чтобы узнать подробности

Презентация на тему: "Функциональное программирование".

Вы уже знаете о суперспособностях современного учителя?
Тратить минимум сил на подготовку и проведение уроков.
Быстро и объективно проверять знания учащихся.
Сделать изучение нового материала максимально понятным.
Избавить себя от подбора заданий и их проверки после уроков.
Наладить дисциплину на своих уроках.
Получить возможность работать творчески.

Просмотр содержимого документа
«Презентация на тему: "Функциональное программирование".»

Функциональное программирование Выполнил: Хлучин Д.В. МДИ-117

Функциональное программирование

Выполнил:

Хлучин Д.В. МДИ-117

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

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

Требования к функциональному языку: 1. Всякая функция должна однозначно определять результат по любому набору аргументов. 2. Отсутствует оператор присваивания. 3. Переменная обозначает только имя структуры. 4. В языке присутствуют функционалы.

Требования к функциональному языку:

1. Всякая функция должна однозначно определять результат по любому набору аргументов.

2. Отсутствует оператор присваивания.

3. Переменная обозначает только имя структуры.

4. В языке присутствуют функционалы.

Достоинства функционального программирования:   1. Повышение надёжности кода. 2. Удобство организации модульного тестирования. 3. Возможности оптимизации при компиляции. 4. Возможности параллелизма.

Достоинства функционального программирования:

1. Повышение надёжности кода.

2. Удобство организации модульного тестирования.

3. Возможности оптимизации при компиляции.

4. Возможности параллелизма.

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

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

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

Свойства функциональных языков

Свойства функциональных языков

  • краткость и простота;
  • строгая типизация;
  • модульность;
  • функции - это значения;
  • чистота (отсутствие побочных эффектов);
  • отложенные (ленивые) вычисления.
Краткость и простота

Краткость и простота

  • Программы на функциональных языках обычно намного короче и проще, чем те же самые программы на императивных языках. Сравним программы на C и на абстрактном функциональном языке, на примере сортировки списка быстрым методом Хоара.
Метод сортировки Хоара на С# static  void qs( int [] items, int left, int right)  {  int i, j;  int x, y;  i = left; j = right;  x = items[(left + right) / 2];  do  {  while ((items[i]  {  i++;  }  while ((x  left))  {  j--;  }  if (i  {  y = items[i];  items[i] = items[j];  items[j] = y;  i++; j--;  }  } while (i  if (left  {  qs(items, left, j);  }  if (i  {  qs(items, i, right);  }  }  } }

Метод сортировки Хоара на С#

static void qs( int [] items, int left, int right)

{

int i, j;

int x, y;

i = left; j = right;

x = items[(left + right) / 2];

do

{

while ((items[i]

{

i++;

}

while ((x left))

{

j--;

}

if (i

{

y = items[i];

items[i] = items[j];

items[j] = y;

i++; j--;

}

} while (i

if (left

{

qs(items, left, j);

}

if (i

{

qs(items, i, right);

}

}

}

}

[] | h::t - quicksort ([ for x in t when x x]) @ [h] @ quicksort ([ for x in t when xh - x]);;" width="640"

Метод сортировки Хоара на абстрактом функциональном языке

let rec quicksort = function

[] - []

| h::t - quicksort ([ for x in t when x x])

@ [h] @ quicksort ([ for x in t when xh - x]);;

Строгая типизация язык функциональный программирование Практически все современные языки программирования являются строго типизированными языками (возможно, за исключением JavaScript и его диалектов, не существует императивных языков без понятия «тип»). Строгая типизация обеспечивает безопасность. Программа, прошедшая проверку типов просто не может выпасть в операционную систему с сообщением, подобным

Строгая типизация язык функциональный программирование

Практически все современные языки программирования являются строго типизированными языками (возможно, за исключением JavaScript и его диалектов, не существует императивных языков без понятия «тип»). Строгая типизация обеспечивает безопасность. Программа, прошедшая проверку типов просто не может выпасть в операционную систему с сообщением, подобным "access violation", особенно это касается таких языков, как C/C++ и Object Pascal, где применение указателей является типичным способом использования языка. В функциональных языках большая часть ошибок может быть исправлена на стадии компиляции, поэтому стадия отладки и общее время разработки программ сокращаются.

Модульность

Модульность

  • Механизм модульности позволяет разделять программы на несколько сравнительно независимых частей (модулей) с чётко определёнными связями между ними. Тем самым облегчается процесс проектирования и последующей поддержки больших программных систем. Поддержка модульности не является свойством именно функциональных языков программирования, однако поддерживается большинством таких языков.
Int square n = n * n Можем воспользоваться этой функцией для возведения в квадрат всех элементов списка l2 = map square [1, 2, 3, 4] - результат - список [1, 4, 9, 16]" width="640"

Функции

  • В функциональных языках (равно как и вообще в языках программирования и математике) функции могут быть переданы другим функциям в качестве аргумента или возвращены в качестве результата. Функции, принимающие функциональные аргументы, называются функциями высших порядков или функционалами. Самый, пожалуй, известный функционал, это функция map. Эта функция применяет некоторую функцию ко всем элементам списка, формируя из результатов заданной функции другой список.
  • Например, определив функцию возведения целого числа в квадрат как:

square :: Int - Int square n = n * n

Можем воспользоваться этой функцией для возведения в квадрат всех элементов списка

l2 = map square [1, 2, 3, 4] - результат - список [1, 4, 9, 16]

Чистота

Чистота

  • В императивных языках функция в процессе своего выполнения может читать и модифицировать значения глобальных переменных и осуществлять операции ввода/вывода. Поэтому, если вызвать одну и ту же функцию дважды с одним и тем же аргументом, может случиться так, что в качестве результата вычисляется два различных значения. Такая функция называется функцией с побочными эффектами.
  • В чистом функциональном программировании оператор присваивания отсутствует, объекты нельзя изменять и уничтожать, можно только создавать новые путем декомпозиции и синтеза существующих. О ненужных объектах позаботится встроенный в язык сборщик мусора. Благодаря этому в чистых функциональных языках все функции свободны от побочных эффектов. Однако это не мешает этим языкам имитировать некоторые полезные императивные свойства, такие как исключения и изменяемые массивы. Для этого существуют специальные методы.
Отложенные вычисления

Отложенные вычисления

  • Языки, использующие отложенные вычисления, называются нестрогими. Haskell - нестрогий язык, так же как, например, Gofer и Miranda. Нестрогие языки зачастую являются чистыми.
  • Очень часто строгие языки включают в себя средства поддержки некоторых полезных возможностей, присущих нестрогим языкам, например бесконечных списков. В поставке Standard ML присутствует специальный модуль для поддержки отложенных вычислений. А Objective Caml помимо этого поддерживает дополнительное зарезервированное слово lazy и конструкцию для списков значений, вычисляемых по необходимости.
Заключение

Заключение

  • Если вам кажется, что ваш язык не позволяет в полной мере выразить вам свои идеи, засоряет ваш код ненужным синтаксическим мусором, в котором теряется смысл, попробуйте функциональное программирование.
  • Написание кода на функциональное программирование не сделает ваши программы, словно по мановению волшебной палочки, быстрее или менее ресурсоёмкими. Все, что он делает – предоставляет вам возможность посмотреть на задачу с другой стороны, с которой её решение может получиться более эффективным, и просто увеличивает количество путей для выражения ваших идей. 


Получите в подарок сайт учителя

Предмет: Прочее

Категория: Презентации

Целевая аудитория: Прочее

Скачать
Презентация на тему: "Функциональное программирование".

Автор: Хлучин Дмитрий Владимирович

Дата: 09.01.2022

Номер свидетельства: 597068

Похожие файлы

object(ArrayObject)#863 (1) {
  ["storage":"ArrayObject":private] => array(6) {
    ["title"] => string(69) "Разработка урока  "Защита информации" "
    ["seo_title"] => string(38) "razrabotka-uroka-zashchita-informatsii"
    ["file_id"] => string(6) "148079"
    ["category_seo"] => string(11) "informatika"
    ["subcategory_seo"] => string(5) "uroki"
    ["date"] => string(10) "1419576427"
  }
}


Получите в подарок сайт учителя

Видеоуроки для учителей

Курсы для учителей

ПОЛУЧИТЕ СВИДЕТЕЛЬСТВО МГНОВЕННО

Добавить свою работу

* Свидетельство о публикации выдается БЕСПЛАТНО, СРАЗУ же после добавления Вами Вашей работы на сайт

Удобный поиск материалов для учителей

Ваш личный кабинет
Проверка свидетельства