2008-10-14 2 views

ответ

2

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

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

0

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

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

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

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

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

+2

Я не согласен с тем, что «нет ничего об этом, специально предназначенном для доменных языков». Котировки, пользовательские рабочие процессы, fslex и fsyacc относятся к категории «специально для DSL», ИМХО. – Joh 2011-01-14 12:08:36

0

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

2

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

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

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

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

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

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



XML литералы в VB 2008, вероятно, наиболее отчетливый VB против C# разницы.

1

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

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

Но, идите и учитесь!

2

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

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

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

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

5

Я бы сказал, что это good раз, я отправил вопрос на fsbugs на прошлой неделе, и ответ вернулся через пару часов от the man.

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

1

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

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

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

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

Смежные вопросы