#.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», существует ряд аналогичных (и, возможно, более зрелых языков), таких как:
Ответ №9:
Если вы хотите заниматься функциональным программированием, перейдите на общий язык LISP. Он кроссплатформенный, очень стабильный и существует уже давно. Он также является частью семейства LISP; один из самых известных функциональных языков.
Ответ №10:
Я удивлен, что Clojure не был упомянут в этом обсуждении.