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




НазваниеФункциональное программирование
Дата конвертации05.02.2013
Размер445 b.
ТипПрезентации


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

Язык программирования 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#



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

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



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

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



Области применения

  • Первая область, в которой F# в самом деле непревзойден это техническое и количественное программирование, т.е. в сложных математических расчетах.

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

  • Вычислительные финансы. Позволяет создавать финансовые модели в более простом и декларативном виде, но также интегрироваться с остальным набором приложений предприятия, через .NET взаимодействие.

  • Обработка крупномасштабных данных



Заключение

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

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



Похожие:

Функциональное программирование iconОпределение функций Функциональное программирование

Функциональное программирование iconF# и c 0: Функциональное программирование в промышленном масштабе
Парадигма программирования, которая рассматривает выполнение программы как вычисление математических функций (выражений)
Функциональное программирование iconСимвольные вычисления и функциональное программирование Вывод знаний 3
Память, содержащая символические структуры, число и содержание которых может меняться во времени
Функциональное программирование iconФункции и функциональное программирование
Функции позволяют уменьшить избыточность программного кода и повысить его структурированность
Функциональное программирование iconЛитература Thompson S. Haskell: The Craft of Functional Programming. 2-nd edition, Addison-Wesley, 1999
Душкин Р. В. Функциональное программирование на языке Haskell. М.: Дмк пресс, 2007
Функциональное программирование iconИмя и значение символа функциональное программирование
Константы обозначают самих себя. Если мы введем константу, то интерпретатор в качестве результата выдаст саму эту константу
Функциональное программирование iconПрограммирование II емельянов Павел Геннадьевич
Объектно-ориентированное программирование (на примере основных концепций языка C++)
Функциональное программирование iconСодержание Состояние предметной области
Линейное и целочисленное линейное программирование Часть Нелинейное программирование и многоэкстремальная оптимизация
Функциональное программирование iconЭто раздел профилактической медицины, изучающий: Условия среды обитания и деятельности детей, ее влияние на здоровье и функциональное состояние растущего организма,
Условия среды обитания и деятельности детей, ее влияние на здоровье и функциональное состояние растущего организма, разрабатывающим...
Функциональное программирование iconWeb-программирование на java ява в простонародье
И не врите, что первое, что приходило вам в голову когда вы впервые слышали словосочетание: «программирование на Java» было не это...
Разместите кнопку на своём сайте:
dok.opredelim.com


База данных защищена авторским правом ©dok.opredelim.com 2015
обратиться к администрации
dok.opredelim.com
Главная страница