F # - предметно-ориентированный язык - PullRequest
4 голосов
/ 14 октября 2008

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

Ответы [ 10 ]

6 голосов
/ 14 октября 2008

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

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

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

5 голосов
/ 14 октября 2008

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

Теперь попробуйте это с помощью c # ...

2 голосов
/ 14 октября 2008

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

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

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

Лисп - дедушка всего этого и довольно самодовольный!

2 голосов
/ 14 октября 2008

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

Усилия 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 #.

2 голосов
/ 14 октября 2008

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

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

1 голос
/ 14 октября 2008

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

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

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

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

1 голос
/ 14 октября 2008

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

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

Но иди и учись!

0 голосов
/ 27 февраля 2012

Я удивлен Clojure не упоминалось в этом обсуждении.

0 голосов
/ 14 октября 2008

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

0 голосов
/ 14 октября 2008

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

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