Tw-city.info

IT Новости
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

F язык программирования

Попробуй F#

Разработанный в Microsoft язык функционального программирования помогает решать задачи, ориентированные на интенсивную обработку данных

F# (произносится как «эф шарп») — объектно-ориентированный язык программирования, созданный в Microsoft Research в 2004 году. Его автор — Дон Сайм, главный исследователь компании. Основное назначение языка — программирование, ориентированное на данные, и параллельное программирование вкупе с разработкой алгоритмов.

Версия F# 3.0, главными особенностями которой стали поддержка крупномасштабных описанных схемами наборов данных и наличие API, увидела свет в прошлом году (тогда же в среде Visual Studio 2012 был обновлен компонент Visual F# Tools). В Microsoft обновили сайт Try F#, на нем теперь можно найти много полезного для работы с F#.

Дон Сайм: «Ключевой аспект функционального программирования — снижение общего количества ошибок в процессе манипулирования структурами данных»

Старший редактор Infoworld Пол Крил пообщался с Саймом, чтобы узнать о перспективах этого языка и поставленных перед ним целях.

— Что такого разработчики смогут делать с помощью F#, на что не способны C#, C++, Visual Basic и прочие языки программирования?

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

— Что именно вы подразумеваете, говоря «функциональный язык»?

Одна из главных характеристик — представление данных, что называется, в неизменном виде. Это означает, что у вас имеется некоторое описание данных (например, проект), и это дает вам возможность представить себе общую картину, и задача программирования ориентирована на трансформацию данных, которая в результате дает вам новую картину. Те же Instagram и Excel вполне можно считать функциональными системами — вы просто берете данные и указываете, как эти данные будут меняться.

— В чем главные плюсы F#?

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

Microsoft продвигает F#, поскольку мы хотим получить опыт высококлассного функционального программирования на наших платформах. Поддержка осуществляется тремя путями: развитие инструментария Visual F# Tools, который интегрирован в Visual Studio; доработка языка в рамках Microsoft Research; создание сетевого ресурса Try F#.

— Подойдет ли F# для параллельного программирования?

Конечно. F# очень хорош в этом плане, именно благодаря отсутствию понятия состояния, присущему функциональным языкам.

— А что насчет свободной и коммерческой версий продукта?

Если вы работаете на Mac или Linux, то обычно используете версию F# с открытым кодом. В Windows же всех устраивают реализация F# от Microsoft и инструменты Visual F# для Visual Studio. Само собой, можно использовать и версию с открытым кодом, но так обычно не делают.

— Существуют ли другие инструменты для работы с F#, если не считать Visual Studio?

F# Software Foundation сейчас предлагает инструменты для кроссплатформенной интегрированной среды разработки MonoDevelop, еще у них имеется то же самое для Emacs. В принципе у них есть много инструментов, способных более или менее успешно интегрироваться с другими средами разработки.

— Можете привести пример того, что уже создано с использованием F#? Какие-то известные сайты или иные проекты с громкими именами? Вообще, много разработчиков используют этот язык?

Если говорить о количестве пользователей языка — думаю, около 4 тыс. вопросов на StackOverflow, посвященных F#, — это весьма убедительный показатель.

Насчет проектов — можно упомянуть одну из рекламных платформ Microsoft, которая фактически является самообучающейся системой и использует F# как язык реализации. То есть пользователь вводит в Bing свой поисковый запрос, а алгоритм определяет, какое именно рекламное объявление показать ему вместе с выдачей. Есть и действительно критичные алгоритмы и программы, созданные с помощью F#, в основном базовые механизмы анализа данных.

В целом этот язык можно использовать при развертывании больших систем, так как одним из главных плюсов F# является отличная совместимость с системами типа. Net и C#. Вы можете просто интегрировать F# в очень крупную систему, и все получится. На сайте Microsoft есть ряд примеров от Grande Insurance и от одного из крупнейших европейских банков, где более 100 человек создают модели финансирования, используя F#.

— Вы воспользовались бы F# для веб-программирования?

Конечно. Можно использовать F# для серверной части проекта. Для клиентской же стороны инструменты Visual F# приспособлены не так хорошо, но всегда есть сторонние средства для работы с F#. Тут я бы советовал обратить внимание на IntelliFactory и их инструмент WebShapper для веб-программирования в расчете на HTML 5.

— Каким образом Microsoft зарабатывает на F#?

Ну тут все прозрачно и довольно очевидно. Смотрите, мы инвестируем в язык, потому что у нас есть платформы, на которых можно на этом языке программировать. Инвестиции в F# делают саму платформу лучше, а доход как раз и получается от продаж платформы.

— Есть что-то еще важное, что бы вы хотели сообщить нам о будущем F#?

Есть очень захватывающий момент, связанный с Try F#. Люди не просто получают возможность научиться работать с F#, но еще и предлагают разные неожиданные идеи касающиеся интеграции данных в язык F# 3.0. Людям сейчас нужно что-то удобное и гибкое, что поможет им воплотить свои идеи и увидеть, как можно изменить свой процесс программирования. И эти возможности могут раскинуться очень широко.

К примеру, мы реализовали в F# 2.0 асинхронное программирование, и этот механизм перекочевал в C# 5.0. По-моему, это здорово — видеть, как идеи из области перспективных функциональных языков перекочевывают прямо в самое сердце индустрии программирования.

Я, как исследователь, искренне считаю, что это огромная удача.

Поделитесь материалом с коллегами и друзьями

Хочу всё знать. F#

Краткая справка

F# впервые увидел свет в 2005 году в Microsoft Research. Это мультипарадигмальный язык для платформы Microsoft .NET, нацеленный преимущественно на функциональное программирование, имеющий, тем не менее, возможность создания объектно-ориентированного и императивного кода.

Несмотря на своё название, F# не является развитием C#, напротив будучи скорее его полной противоположностью. Из общего у них разве что разработчик, да возможность реализации всех трёх парадигм программирования, однако приоритеты у них принципиально разные.

Основной же вклад в структуру и “тело” сделал OCalm — тоже язык ФП, но на 20 лет старше. Так, например, процедура объявления переменной в обоих языках выглядит одинаково, да и в целом коды похожи:

# let rec fac n =
match n with
| 0 -> 1
| x -> x * fac (x — 1)
;;

let rec fac n =
if n < 2 then 1
else n * fac(n — 1)

Помимо схожести синтаксиса с OCalm, относительно F# можно сделать ещё один вывод — он понятен и максимально прост. Действительно именно так позиционировал язык его создатель, Дон Сайм, хотя стоит сделать оговорку, что это касается только функционального программирования, для решения привычных задач тот же C# может оказаться эффективнее.

Читать еще:  Создание программ для андроид без программирования

Назначение

Как и другие функциональные языки, F# нацелен на упрощение работы с Big Data и многопоточность, то есть востребован в науке, в создании искусственного интеллекта, там, где используются динамические базы данных, а также для улучшенного использования ресурсов многоядерных процессоров. Иначе говоря, F# можно использовать практически везде, будь на то ваша воля.

Сплошное удовольствие от работы

Итак, общепризнанными преимуществами F# являются следующие моменты:

F# использует вывод типов, что приводит к сокращению временных затрат на действия, необходимые лишь компилятору, но никак не разработчику. В итоге и код выглядит красиво, и вы довольны минимальным количеством неудобств и ошибок;

F# удобен и понятен. Если познаете основные принципы функционального программирования, с языком проблем не возникнет;

Интеграция с .NET платформой. Код на F# также компилируемая в MS IL, что упрощает его взаимодействие с остальными .NET-языками;

Среда разработки Visual Studio (с 2010 версии). Привычный инструмент призван способствовать популяризации нового языка среди тысяч разработчиков.

Обратная сторона

Впрочем, F# — не сладкая вата, а живой язык со своими недостатками. Вот парочка из них:

Слабая поддержка мобильных платформ. Для разработчиков Android и iOS приложений в последнее время есть определенные позитивные изменения, но применять F# для этих целей по-прежнему неудобно;

Малочисленное сообщество разработчиков. Говоря языком цифр, их примерно в 100 раз меньше, чем программистов на C#.

Работа

Откровенно говоря, на отечественном рынке (на зарубежном тоже, но там есть тенденция к росту) очень низкий спрос на разработчиков, умеющих и желающих работать с ФП, не говоря о конкретно F#. Так, например, на момент написания статьи не нашлось и полусотни вакансий, и это при том, что F# почти везде требуется лишь как бонус.

Полезные ссылки

Первым делом загляните на Хабр. Несмотря на не самую большую популярность языка в России, настоящий гик его всегда оценит. Вот и здесь есть авторы признаются в светлых чувствах, считают F# бесполезной тратой времени и даже в муках образования сравнивают язык с таблеткой.

Не обходите стороной официальную страницу, в том числе на Microsoft. Здесь вы найдёте всевозможную справочную информацию и руководства по созданию всевозможных продуктов.

Интересный образовательный англоязычный сайт, посвящённый F#, можно отыскать, перейдя по этой ссылке. Редактор кода, практические советы — прилагаются.

Кстати, на сайте Microsoft также можно отыскать интерактивный учебник по Visual F# на русском языке. В принципе, изложение здесь достаточно подробное и понятное, но определённым минусом является дробление на теоретическую и практическую части.

Возвращаясь к иностранным ресурсам, обратите внимание на F# for Fun and Profit. Здесь собрано много тематических статей (от стандартной “Да кому этот язык нужен” до реального примера опыта работы с Big Data), которые создателями даже были объединены в электронную книгу, которую можно скачать здесь же. Безвозмездно.

А вообще, несмотря на свою молодость, F# не испытывает недостатка в “активных” поклонниках, которые с радостью делятся впечатления, кодами и методиками изучения.

Мы продолжаем наше путешествие по незаслуженно обделённым большим общественным вниманием языкам программирования. В этот раз у нас на очереди F# — язык, о котором вы наверняка слышали, но так и не принялись за его изучение.

Краткая справка

F# впервые увидел свет в 2005 году в Microsoft Research. Это мультипарадигмальный язык для платформы Microsoft .NET, нацеленный преимущественно на функциональное программирование, имеющий, тем не менее, возможность создания объектно-ориентированного и императивного кода.

Несмотря на своё название, F# не является развитием C#, напротив будучи скорее его полной противоположностью. Из общего у них разве что разработчик, да возможность реализации всех трёх парадигм программирования, однако приоритеты у них принципиально разные.

Основной же вклад в структуру и “тело” сделал OCalm — тоже язык ФП, но на 20 лет старше. Так, например, процедура объявления переменной в обоих языках выглядит одинаково, да и в целом коды похожи:

# let rec fac n =
match n with
| 0 -> 1
| x -> x * fac (x — 1)
;;

lsreg’s IT blog

Шпаргалка по F#

Начал изучать F# и решил набросать шпаргалку. Буду дополнять по мере изучения.

Базовый синтаксис

Отступы значимы. Причем отступы должны быть пробельными — табуляция не подойдет.
Определить переменную:

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

Операции со списками

Получение нового списка путем преобразования старого:

Оператор |> позволяет использовать функции в Linq стиле. Он передает выражение слева последним аргументом в выражение справа. На примере будет понятнее:

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

Рекурсия

Для того, чтобы функция была рекурсивной, нужно в объявление функции добавить ключевое слово rec

F# оптимизирует хвостовую рекурсию. Нужно стараться делать рекурсию хвостовой.
Оптимизация хвостовой рекурсии по умолчанию отключена при сборке в Debug.

Параллельные вычисления

let! – отличается от обычного let тем, что не останавливает текущий поток во время выполнения.
async<> – асинхронное выражение.
Async.Parallel – объединяет последовательность асинхронных выражений для параллельного выполнения.
Async.RunSynchronously – запускает параллельное выполнение и ожидает завершения.
В результате загрузка каждого урла происходит в отдельном потоке.
Вывод в консоль:

Использование кода на C# из F#

Использование на F#:

Строгая типизация

В F# нет неявного преобразования между типами.
Конвертация типов:

Тип функции и тип аргумента:

Приведение типов:
:> — приведение к предку
:?> — приведение к потомку

Использование кода на F# из C#

Создаем F# Library, в созданном файле пишем такой код:

Здесь объявлены 2 функции: одна приватная и одна публичная.
Подключаем эту библиотеку к проекту на C# и используем:

Если перейти к определению класса IntFunctions, то увидим следующее:

Модуль виден как статический класс, функция видна как статический метод.

Pattern Matching

Сопоставление с образцом. Выражение по очереди подставляется в каждый из вариантов. Если есть совпадение – возвращается соответствующий результат.

Для образцов можно задавать условные ограничения:

Каррирование

Определение с википедии:

Каррирование или карринг (англ. currying) в информатике — преобразование функции от многих аргументов в функцию, берущую свои аргументы по одному.

Все функции в F# каррированы.
Рассмотрим функцию:

ее тип x:int ->y:int ->int
Функциям в F# не обязательно передавать все аргументы сразу. Аргументы они принимают по очереди. Например:

F Sharp

F# (произносится эф-шарп) — это функциональный язык программирования из семейства языков .NET Framework, поддерживающий функциональное программирование в дополнение к императивному (процедурному) и объектно-ориентированному программированию. Структура F# во многом схожа со структурой OCaml с той лишь разницей, что F# реализован поверх библиотек и среды исполнения .NET. Язык был разработан Доном Саймом (англ. Don Syme ) в Microsoft Research в Кембридже, в настоящее время его разработку ведет Microsoft Developer Division. F# достаточно тесно интегрируется со средой разработки Visual Studio и включён в поставку Visual Studio 2010; разработаны также компиляторы для Mac и Linux [1] .

Некоторые задачи решаются значительно проще и яснее с использованием F# (по сравнению с решениями на доминирующих ОО-языках), особенно те, что используют математический стиль программирования [источник не указан 117 дней] . Например, написание компилятора требует работы со структурами данных и преобразований над ними.

Читать еще:  Программа для создания программ без программирования

Microsoft интегрировала среду разработки F# в Visual Studio 2010. Компания планирует активно внедрять данный язык в разработку программных систем, которые сами с течением времени смогут масштабироваться, например, в зависимости от количества пользователей. Данное достоинство непросто реализовать в императивных языках программирования [источник не указан 117 дней] .

4 ноября 2010 года код компилятора F# и основных библиотек к нему опубликован под Apache License 2.0 [2] .

Содержание

Особенности

Код на языке F# является безопасным в отношении типов, часто бывает более компактным, чем аналогичный код C#, за счёт вывода типов.

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

Одна из основных идей F# заключается в том, чтобы удостовериться, что имеющийся код и типы в функциональном языке программирования могут быть легко доступны из других .NET-языков. Программы на F# компилируются в сборки CLR (файлы с расширениями .exe и .dll), однако, для их запуска необходима установка пакета среды исполнения дополнительно к .NET Framework.

Компилятор и интерпретатор

F# — компилируемый язык программирования, при этом в качестве промежуточного языка используется язык Common Intermediate Language (CIL), так же как и в программах, написанных на языках C# или VB.NET.

Наряду с F#-компилятором (fsc) присутствует и F#-интерпретатор (fsi), который исполняет F#-код интерактивно.

Примеры

Синтаксис F# построен на математической нотации, а программирование чем-то похоже на алгебру, что делает F# похожим на Haskell. Например, когда вы определяете новый тип, то можете указать, что переменными этого типа будут «целые или строки». Вот как это выглядит:

Код также представляет собой математическую нотацию. Следующая конструкция эквивалентна f(x) = x + 1 в алгебре:

F# работает следующим образом: тип « f » представляет собой « int -> int », то есть функция получает на вход целое и выдаёт на выход целое.

F# позволяет получить доступ абсолютно ко всему, что есть в FCL. Синтаксис для работы с библиотеками .NET в этом смысле максимально близок к синтаксису C#. Особенности языка заметны при использовании всего спектра возможностей F#. К примеру, следующий код применяет функцию к элементам списка:

В « newList » теперь находится « [2;4;6] ».

Разбор списка в этой функции ведётся с помощью ещё одной мощной возможности сопоставления с образцом. Она позволяет задавать образцы при совпадении с которыми вычисляются соответствующие вхождения оператора match. Первый образец «[]» означает пустой список. Второй — список состоящий из первого элемента и хвоста (который может быть произвольным списком, в том числе и пустым). Во втором образце значение головы связывается с переменной head, а хвоста с tail (имена могут быть произвольные). Таким образом кроме основной задачи образец ещё позволяет производить декомпозицию сложных структур данных.

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

Код программы рабочий, незаконченный (может быть скопирован) (Файлы в проекте *.fs)

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

Языки функционального программирования — это особый класс языков программирования. Портал Techopedia рассказывает об их истории, предназначении и характеристиках.

Clojure, Elixir, Elm, F#, Haskell, Idris и Scala — это те языки, которые чаще всего можно увидеть среди рекомендованных к изучению для функционального программирования (ФП). Им учатся сегодня и они еще долгие годы не растеряют своей популярности. Haskell — это наиболее ранний язык, но со временем более поздние, такие как Clojure, переплелись с ним, образуя общую картину эволюции ФП. Так какие же задачи решает этот отдельный класс языков программирования?

Что такое ФП

Согласно Википедии, функциональное программирование — раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании). Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как последовательное изменение состояний.

Термин «функциональное программирование» уходит корнями к способу программирования, который базируется на создании чистых функций. Основой всех языков ФП является лямбда-исчисление (Lambda Calculus, также обозначается как λ-исчисление), которое описывается как «самый маленький универсальный язык программирования в мире». Соответственно, ФП состоит из математических функций, которым для проведения вычислений требуются условные выражения и рекурсия.

ФП характеризуют следующие особенности:

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

ФП состоит из математических функций

ФП основано на Lambda Calculus. Разработка концепции принадлежит авторству Алонза Черча, она появилась на свет в 1936 г., но поскольку в те далекие времена компьютеров не существовало, она носила чисто теоретический характер. Так было до 1960 г., когда американский ученый-компьютерщик Джон Маккарти опубликовал работу «Рекурсивные функции символьных выражений и их вычисление на машине». В результате его исследования появился первый язык ФП: LISP. У LISP имеются ответвления, в том числе Common Lisp, Scheme и elisp, а также Clojure, последний пользуется большой популярностью и в наше время.

Как уже говорилось, базовые принципы программирования LISP заложили основу современного ФП. Вот некоторые из них:

  • применение замыканий для реализации статической области видимости. Например, функция f в выражении let x = 3 in f = λ y. x + y не является закрытой, поскольку имеет свободную переменную x. Для того, чтобы задействовать ее, она должна быть связана со средой, которая сообщает значение x. Функция, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся ее параметрами, называется замыканием;
  • условное выражение и его использование для написания рекурсивных функций. Этот принцип связан с «ленивым» порядком вычисления выражений;
  • применение высокоуровневых операций в списке, такие как функция mapcar.

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

Спустя почти два десятилетия, в 1978-м, в развитии ФП состоялся новый прорыв. Исследователи из Эдинбургского университета изобрели метаязык (Metalanguage), который предназначался для работы с их автоматической системой доказательства теорем (LCF). Как позже выяснилось, его можно применять в качестве языка программирования общего назначения. Метаязык имеет две версии: Standard ML of New Jersey (бесплатный компилятор с открытым кодом и среда программирования для языка программирования Standard ML) и CAML. Эдинбург преподнес ФП еще один подарок — язык Hope. Источником названия послужил Hope Park Square, где находился Эдинбургский отдел компьютерных наук. Hope — первый язык, использующий вызов по шаблону.

Читать еще:  Сетевое программирование для профессионалов

Язык Haskell был назван в честь логика Хаскелла Карри. Формулирование стандартов и задач языка состоялось в 1987 г. в ходе конференции по функциональным языкам программирования и компьютерной архитектуре в Орегоне. Первая версия Haskell 1.0 появилась в 1990 г. Версия языка Haskell 2010 была объявлена в конце 2009 г., в 2020 г. ожидается выход новой версии. Haskell стал парадигмой современных функциональных языков, отличающихся от других видов языков функциями высшего порядка, выводом типов, «ленивым» порядком вычислений и пользовательскими типами данных.

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

В 2009 г. сформировалась концепция Haskell Platform — стандартного дистрибутива языка, включающего кроме компилятора (GHC), также дополнительный инструментарий (систему сборки и развертывания пакетов Cabal) и набор популярных библиотек. Сейчас Haskell Platform — это рекомендованный базовый дистрибутив для разработчиков. Готовые сборки Haskell Platform доступны для Windows, MacOS X и ряда дистрибутивов Linux.

Основные современные языки ФП

Haskell — наиболее известный среди языков ФП. Вероятно, это связано с его богатой историей. Он также повлиял на развитие других языков. «Такие вещи, как Linq, язык запросов в C#, на самом деле произошли от Haskell. Рабочие процессы F# и изменяемые состояния взяты непосредственно из его монадической структуры», — сказал главный исследователь Microsoft и ключевой контрибутор Haskell Саймон Пейтон Джонс.

Clojure — новый диалект LISP, созданный Ричем Хикки. Clojure отличается от других диалектов LISP тем, что он работает на платформе Java и компилируется в байт-код JVM, за счет чего программы на Clojure легко переносятся в любую среду с JVM. Язык также поддерживает ряд макросов, которые упрощают использование в нем существующих Java API. Структуры данных Clojure реализуют все стандартные интерфейсы Java, что делает легким запуск из Java программного кода, написанного на Clojure.

«Clojure обеспечивает легкий доступ к фреймворкам Java, с дополнительными подсказками и логикой типа, чтобы гарантировать, что вызовы Java могут избежать отражения», — объясняет Хикки. Он также говорит, что «подход Lisp к коду как данным и его макросистеме по-прежнему отличает его» от других диалектов Lisp и добавляет, что как и списки в Lisp, его карты, множества и векторы являются в Clojure первым классом. «Я думаю, что Clojure занимает уникальную нишу в качестве функционального Lisp для JVM с сильной поддержкой параллелизма», — добавил Хикки.

Elm — чисто функциональный язык, разработанный в 2012 г. Эваном Чаплицким. Он популярен среди веб-разработчиков, которым нравятся его возможности для создания пользовательских интерфейсов. Компилятор Elm предназначен для HTML, CSS и JavaScript. Он работает с библиотеками JavaScript почти так же, как Clojure — с библиотеками Java. Отличительной особенностью Elm является то, что он использует статическую проверку типов, которая помогает в устранении исключений во время выполнения, поскольку ошибки будут обнаружены на стадии компиляции. Отсутствие видимых ошибок на стороне пользователя — очевидное преимуществом этого языка.

Elixir — динамический функциональный язык, предназначенный для построения масштабируемых и обслуживаемых приложений. Он служит для создания систем с высокой доступностью и низкой задержкой. Elixir работает на базе экосистемы Erlang VM. Она востребована Heroku, WhatsApp, Klarna и другими проектами для распределенных, отказоустойчивых приложений. Каждый элемент приложений является выражением, функции языка Erlang могут быть вызваны без влияния на время исполнения из-за компиляции байт-кода в Erlang и наоборот.

F# — кроссплатформенный функциональный язык программирования с открытым кодом. Его разработку курирует F# Software Foundation. F# работает на Linux, Mac OS X, Android, iOS, Windows, графических процессорах и браузерах. Его можно применять свободно, он является языком с открытым исходным кодом и распространяется на условиях лицензии, одобренной OSI. F# затребован в широком спектре областей применения и активно поддерживается как со стороны сообщества Open Source, так и ведущими отраслевыми компаниями, предоставляющими профессиональные инструменты.

Idris — чисто функциональный язык программирования общего назначения, который включает особенности Haskell и метаязыка. Он характеризуется зависимыми типами, основанными на значениях, поэтому некоторые аспекты поведения программы могут быть точно определены в типе. Также реализована возможность компиляции в код на JavaScript (в том числе для Node.js) и компилирование по принципу «энергичных» вычислений (вычислять, не откладывая, все что возможно). Idris поддерживает два способа работы с системой автоматического доказательства: путем написания последовательных вызовов тактик (стиль Coq, при этом набор доступных тактик не столь богат, как в Coq, но может быть расширен штатными средствами метапрограммирования) или посредством пошаговой разработки доказательства (стиль Epigram и Agda).

JavaScript не является строго функциональным языком программирования, поскольку допускает объектно-ориентированный подход, однако у него есть компонент, который связывает его с ФП. Он включает в себя функции высшего порядка. Кроме того, новые версии стандарта ECMAScript предоставляют исправления для проблемы изменчивости.

Kotlin относится к числу новейших языков программирования. Он вышел в феврале 2016 г., но до этого в течении пяти лет проходил тестирование и активно дорабатывался. Его используют такие компании, как Amex, NBC Digital, Expedia и Gradle, но это не чисто функциональный язык. В этом отношении Kotlin можно сравнить с JavaScript, то есть с его помощью можно создавать как объектно-ориентированные, так и функциональные конструкции. Он обладает полной совместимостью с Java. К числу преимуществ Kotlin нужно отнести его лаконичность, в этом плане он более гибкий, чем Java.

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

Scala — еще один гибридный язык, который можно применять как для объектно-ориентированного программирования, так и ФП. Статические типы Scala помогают избежать ошибок в сложных приложениях, а его среды выполнения JVM и JavaScript позволяют создавать высокопроизводительные системы с легким доступом к огромным экосистемам библиотек.

Главный специалист Telstra по аналитике больших данных Марк Молони считает, что программистам нужно обратить более пристальное внимание на функциональные языки программирования и заняться их изучением: «ФП окружает миф о его сложности или академичности, но я рассматриваю его как еще один источник информации для изучения. Чтобы освоить ФП, нужно время и практика, но этот путь ничем не отличается от того, который в конце 1980-х — начале 1990-х прошли разработчики для изучения объектно-ориентированного программирования. Технология продолжает развиваться. Это одна из причин, почему я люблю ПО. Важно уметь учиться, это равноценно тем знаниям, что у вас уже есть».

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector
×
×