F# — Язык, Специфичный Для Домена

#.net #f#

Вопрос:

Является ли F# будущим языков программирования? Пришло ли время изучать F# ? Любые другие языки на рынке, которые эквивалентны F#?

Ответ №1:

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

Если вы действительно заинтересованы в изучении чего-то вроде F#, то сейчас самое подходящее время. Если вы хотите выучить новый язык, чтобы увеличить свои шансы на получение работы, то F# может оказаться не лучшим выбором, если вы все еще не знакомы с функциональным программированием. Возможно, вы захотите попробовать JavaScript, Python, Ruby или C# и использовать анонимные функции.

Если вы хотите придерживаться чего-то близкого к F#, в семействе языков ML есть все, что угодно, особенно OCaml. Хаскелл-это чистый функциональный язык, в котором нет побочных эффектов (за исключением монад Хаскелла). Есть также семейство Шепелявых, Немерле и несколько других.

Комментарии:

1. Я не согласен с тем, что «в нем нет ничего, что было бы специально разработано для языков, специфичных для домена». Предложения, пользовательские рабочие процессы, fslex и fsyacc попадают в категорию «специально разработанные для DSL», IMHO.

Ответ №2:

Я бы сказал, что сейчас подходящее время, я отправил вопрос в fsbugs на прошлой неделе, и ответ пришел в течение нескольких часов от самого человека.

Теперь попробуйте сделать это с помощью c#…

Ответ №3:

Что ж, никогда не помешает знать другой язык программирования и другой взгляд на вещи.

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

Ответ №4:

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

Усилия Microsoft отличаются не чистотой языка F#, а скорее планируемым дебютом в качестве первоклассного гражданина крупной платформы программирования (.NET) и вероятными очень низкими трениями, с которыми столкнется принимающий программист, когда он/она добавит ее в свою существующую инфраструктуру.

В .NET уже можно ссылаться на проект VB из проекта C# (или наоборот) в одном решении. Но поскольку результирующий промежуточный язык C# или VB практически идентичен 1, программисты .NET сегодня предпочитают придерживаться одного языка (C# или VB) и вступать в разговоры с теми программистами, которые родом с другой (почти идентичной) темной стороны.

С другой стороны, F# представит совершенно другой языковой инструмент. Следовательно, вы сможете продолжать программировать в своей любимой среде .NET (C# или VB), но когда возникнет отдельный функциональный подпроект, вы сможете запрограммировать этот подпроект в F#, все еще используя все существующие ресурсы C#/VB.

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

Что касается выпуска продукта, Microsoft заявила, что она привержена поставке F# в рамках .Семейство NET, но в настоящее время выпустило только пару CTP (еще не бета-статус), поэтому я бы сказал, что не стоит спешить бросать все, чтобы выучить F# прямо сейчас. (Спросите меня еще раз, когда я увижу бета-версию.)

1 XML-литералы в VB 2008, вероятно, являются наиболее заметной разницей между VB и C#.

Ответ №5:

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

И да, это фантастическое время для изучения F# сообщество небольшое, яркое и пышное, платформа быстро развивается (не забывайте, что F# был запущен в 2002 году) и скоро станет частью Visual Studio.

Что касается других языков, то, как уже было сказано, F# в значительной степени заимствует из Ocml, в той степени, в какой возможно с некоторой возней скомпилировать код между ними. F# также заимствует выражения последовательностей и рабочие процессы (monda) у Haskell. Scala-еще один интересный язык в той же нише. Также функциональные конструкции внедряются в «традиционные» языки, такие как C# 3.0, C (получение лямбд в любой день..). В Python есть хорошие библиотеки для написания функционального кода. Linq и PLinq по своей сути являются функциональными/деклеративными по своей природе.

Шепелявый-это дедушка всего этого, и он тоже очень доволен этим!

Ответ №6:

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

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

Но идите вперед и учитесь!

Ответ №7:

Re «будущее» — FP-это просто еще один инструмент в коробке; иногда решение FP очень полезно, а иногда не так много. Но помните, что C# с каждой итерацией становится все лучше с функциональной стороны [хотя вряд ли когда-либо предложит некоторые из очень специфических аспектов FP F#, таких как дискриминационные союзы и т. Д.].

Аналогичным образом, команда C# обсуждала более легкую неизменяемость, поэтому давайте скрестим пальцы для будущей версии C#. А также имейте в виду, что параллельные расширения / parallel LINQ привносят многие «убийственные функции» FP непосредственно в каждый язык .NET.

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

Но если вы находитесь в одной из тех областей, в которых FP имеет смысл, и вы используете .НЕТ, тогда F# определенно стоит изучить.

Ответ №8:

Поскольку F# в основном является «Функциональным программированием для .Net», существует ряд аналогичных (и, возможно, более зрелых языков), таких как:

  • Scala: Функциональное программирование на JVM.
  • Haskell: Функциональное программирование с использованием собственного кода (или, по крайней мере, среды выполнения barebones).

Ответ №9:

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

Ответ №10:

Я удивлен, что Clojure не был упомянут в этом обсуждении.