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

Популярный язык от Microsoft.
25 января 2017326451Илья Бубнов3188011

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

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

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

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

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

OCalm:

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

F#:

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

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

Назначение

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

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

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

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

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

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

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

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

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

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

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

Работа

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

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

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

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

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

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

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

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