Функциональное программирование Язык программирования F#.NET.

Презентация:



Advertisements
Похожие презентации
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Advertisements

Связанные и свободные переменные n λv.B n Переменная v называется связанной всюду в теле B функции λv.B, за исключением подвыражений B, где v переопределяется.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Процедуры и функции. Разработал учитель информатики МБОУ СОШ 50 г. Краснодара Ракута Елизавета Григорьевна « Учиться и, когда придет время, прикладывать.
ОТОБРАЖАЮЩИЕ ФУНКЦИОНАЛЫ. Важный класс функционалов в практическом программировании на языке Лисп образуют отображающие функции или МАР-функции. МАР-функционалы.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Полиморфизм Полиморфизм (polymorphism) - последний из трех "китов", на которых держится объектно-ориентированное программирование Слово это можно перевести.
Лекция 7. Структура языка С/С++. Операторы ветвления: условный оператор if. Полное ветвление. Неполное ветвление. Оператор множественного выбора switch.
OOП Инна Исаева. Подпрограмма – это большая программа, разделённая на меньшие части. В программе одна из подпрограмм является главной. Её задача состоит.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Программировани е Сергей Салищев Занятие 1. Введение.
Вопросы: Что такое форма? Что такое компонент формы? Приведите примеры таких компонентов. Как пишется программа на объектно- ориентированном языке программирования.
Теория языков программирования и методы трансляции Тема 8 Генерация кода.
М.Ю. Харламов, ВНУ им. В.Даля, Оптимизация программы Оптимизация программы это обработка, связанная с переупорядочиванием и из­менением операций.
О СНОВЫ ОБЪЕКТНО - ОРИЕНТИРОВАННОГО ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ.
Информационные технологии Стандартные библиотечные функции манипулирование данными преобразование и шифрование определение пользователями функций.
Объектно-ориентированное программирование Карпов В.Э. Смолток. Лекция 4. Байт-код.
Транксрипт:

Функциональное программирование Язык программирования F#.NET

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

Каковы преимущества функциональных языков? -В ряде случаев применение функциональных языков может увеличить продуктивность и качество работы программиста в разы. Это увеличение продуктивности, разумеется, зависит от сочетания задачи, языка, и программиста. -Программист вместо перечисления последовательности действий, необходимых для получения результата, просто описывает, что он хочет получить. -Программист сфокусирован на высокоуровневом «что требуется», а не на низкоуровневом «как делать»

Основные свойства функциональных языков Краткость и простота Функции - это значения Чистота (отсутствие побочных эффектов)

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

Функции - это значения В функциональных языках функции могут быть переданы другим функциям в качестве аргумента или возвращены в качестве результата. Функции, принимающие функциональные аргументы, называются функциями высших порядков или функционалами. Самый, пожалуй, известный функционал, это map. map применяет некоторую функцию ко всем элементам списка, формируя из результатов другой список. Например определив функцию возведения целого числа в квадрат как: square :: Int -> Int square n = n * n Mожем воспользоваться этой функцией для возведения в квадрат всех элементов списка l2 = map square [1, 2, 3, 4] -- результат - список [1, 4, 9, 16]

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

Язык программирования F#.NET F# это язык программирования, обеспечивающий поддержку функционального программирования, а также объектно- ориентированного и императивного (процедурного) программирования. Распространяется вместе с.NET Framework и Visual Studio как часть Visual Studio 2010.

Основные свойства F# мультипарадигменный язык программирования. В нем можно писать функциональный, императивный и объектно-ориентированный код. F# использует вывод типов, что приводит к более лаконичным программам. Лаконичность- самая сильная сторона этого языка. F# это.NET-язык программирования. Он компилируется в IL в том же рабочем цикле что и C# с VB и будет запросто работать с уже существующим.NET-кодом. F# хорош в многопоточном программировании, если быть точнее: в параллельном, асинхронном, конкурентном и реагирующем доменах программирования.

Одна и та же задача выполнена в C# и в F#

Метод сортировки Хоара на С# 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] < x) && (i < right)) { i++; } while ((x left)) { j--; } if (i

Метод сортировки Хоара на F# let rec quicksort = function [] -> [] | h::t -> quicksort ([ for x in t when x quicksort ([ for x in t when x>h -> x]);;

Области применения Первая область, в которой F# в самом деле непревзойден это техническое и количественное программирование, т.е. в сложных математических расчетах. Симуляция одна из областей, которой F# хорошо подходит. Представьте, что вы пишете какого-то рода физический симулятор, или пытаетесь смоделировать некоторую реалистичную ситуацию. В F# вы можете аккуратно написать функции, которые вам требуются, без необходимости притягивать абстракции кода к процессам реального мира. Вычислительные финансы. Позволяет создавать финансовые модели в более простом и декларативном виде, но также интегрироваться с остальным набором приложений предприятия, через.NET взаимодействие. Обработка крупномасштабных данных

Заключение Если вам кажется, что ваш язык не позволяет в полной мере выразить вам свои идеи, засоряет ваш код ненужным синтаксическим мусором, в котором теряется смысл, попробуйте F#. В областях, связанных с большим количеством вычислений или преобразований данных – техническом программировании, ЯОП, параллельном/асинхронном – вы можете получить существенную пользу. Написание кода на F# не сделает ваши программы, словно по мановению волшебной палочки, быстрее или менее ресурсоёмкими. Все, что он делает – предоставляет вам возможность посмотреть на задачу с другой стороны, с которой её решение может получиться более эффективным, и просто увеличивает количество путей для выражения ваших идей.