Функциональное программирование Язык программирования 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# не сделает ваши программы, словно по мановению волшебной палочки, быстрее или менее ресурсоёмкими. Все, что он делает – предоставляет вам возможность посмотреть на задачу с другой стороны, с которой её решение может получиться более эффективным, и просто увеличивает количество путей для выражения ваших идей.