Comments 77
Не вижу особого смысла в данной статье, ибо из нее совершенно непонятно, зачем язык создавался и какие у него будут ключевые особенности.
Если честно, видеть эталонный рекурсивный процесс вычисления чисел фибоначчи не очень интересно.
Если честно, видеть эталонный рекурсивный процесс вычисления чисел фибоначчи не очень интересно.
+19
Эта статья — ни в коем случае не обзор. Это Hello World, который говорит читателю «Есть вот такой язык». Фибоначчи — классический пример алгоритма, который как нельзя легко решается на этом языке и собственно дает понять, что основная цель языка — именно математические расчеты.
0
В следующей статье попробую более глубоко рассказать, что такое F# и для чего он нужен.
+2
В книжке по ОКамлу (practical ocaml) (который предок F#) демонстрация рекурсии тоже по числам Фибоначчи, но сразу же идёт абзац (вольно) «Числа Фибоначчи конечно хорошо, но когда у вас в последний раз была необходимость их вычислять?» и тут же приводится пример реально полезной рекурсии сразу с примером на «хвостатость» — разбиение строки на символы и склейка списка символов в строку.
Я целиком и полностью согласен с таким подходом — надо демонстрировать мощь языка именно на тех примерах которые как-то близки к реальной жизни.
Я целиком и полностью согласен с таким подходом — надо демонстрировать мощь языка именно на тех примерах которые как-то близки к реальной жизни.
+1
Все функциональные языки — по сути дела, DSL-и для вычисления чисел Фибоначчи, всё остальное — примочки, свистелки и синтактик шугар. Если не верите — возьмите совершенно любой туториал, книгу, статью по функциональному языку — всё прочее необязательно, но числа Фибоначчи будут там всегда! :)
-2
Мне лично интересен был бы обзор отличий F# от Haskell и OCaml (кроме очевидного — .Net), дабы знать, чего можно лишиться, а чего приобрести.
+3
Приобрести — возможность переиспользования любого кода .NET, потерять — красоту языка. Говорю о сравнении с Haskell, на OCaml не писал ничего.
0
в общем, ЕМНИП, F# это фактически и есть O'Caml… «улучшенный и доработанный»
0
На самом деле там дофига всего поменялось. Изначально он был очень близок к окемлу, но щас уже далеко ушел в сторону (см. хотя бы active patterns ). Небольшая программа на общем подмножестве Ocaml и F#, которую я писал года два назад, щас уже компилируется на F# с сотней deprecation warning'ов ;)
+1
Спасибо за статью. Приятно видеть F# на старницах Хабра. Будущее за этим языком (ИМХО)
-7
мое субъективное имхо в том что F# будет иметь сложности с внедрением и массовостью хотя бы из-за того что его базовый синтаксис отличается от C-шного. Я давно заметил что большинство языков которые «не похожи» на С остаются привязанными к конкретным задачам
0
Народ не любит васико-подобность, и я к этому народу присоединяюсь, меньше слов (в коде) — больше дела.
-3
В упор не пойму какой язык вы имели в виду, когда говорили про «васико-подобность»: C, C# или F#?
+1
васик = basic :)
0
Это понятно. Не понятно какое отношение это имеет к сравнению C/C#/F#.
0
let, rec, match, with и прочее.
-2
Уверяю, что это внешнее сходство, мне не очень понятное. Может дело в том, что я немного знаком с OCaml, Haskell :). Кроме пары ключевых слов найти что-то общее между F# и Basic сложно. Кстати let, with активно используются и в других языках.
+1
так можно делать проект на двух языках при необходимости. или даже на 10… C# + Boo — для меня отработанная связка :-)
+1
Поддерживаю. .NET в этом отношении безусловно рулит. Но научные работники в большинстве своем предпочитают C-шный синтаксис. Прочие языки выполняют чисто утилитарную функцию — например IDL (interactive data language) c синтаксисом a-для Фортран.
Спору нет, есть огромное количество унаследованного кода со времен царя Гороха написанного на фортране (и еще более дремучих языках), что обеспечивает постоянный интерес к нему. Но в основном критические к производительности расчеты пишутся на C/C++.
Спору нет, есть огромное количество унаследованного кода со времен царя Гороха написанного на фортране (и еще более дремучих языках), что обеспечивает постоянный интерес к нему. Но в основном критические к производительности расчеты пишутся на C/C++.
0
надеюсь люди не кинутся переходить на F# не понимая зачем он нужен.
+5
Я тоже надеюсь. Нужно понимать, что F# не замена C#. Это дополнение к нему, которое упрощает написание целого класса алгоритмов для математических расчетов.
+2
да, вряд-ли кто-то вообще кинется ибо новый язык может привлечь либо специфическими фичами либо готовым набором высокоуровневых библиотек.
Фичи F# — функциональный стиль, однако C# в третей версии имеет уже очень много из функциональных ЯП.
Фичи F# — функциональный стиль, однако C# в третей версии имеет уже очень много из функциональных ЯП.
0
Всем спасибо, перенес в .Net.
0
// а как нас зовут? C#: var name = Console.ReadLine();
Это больше на VB похоже чем на C#
Это больше на VB похоже чем на C#
-4
Вот доклад с Платформы на эту тему — platforma2009.ru/materials/showitem.aspx?MID=77110d82-f458-4231-a6ba-441b0dac6478
0
Неожиданно после повальной объектно-ориентированности со стороны Microsoft выпустить на рынок функциональный язык. Интересно было бы услишать где его можно применять на практика. Пока что это — новая игруша от MS.
0
UFO just landed and posted this here
ФП может быть и без ленивости.
0
UFO just landed and posted this here
Scheme, CL, Erlang, OCaml, SML, и т.д.
0
UFO just landed and posted this here
И в SML тоже есть (у SML/NJ есть расширение), и в Scheme есть, поэтому правильнее будет говорить о том, что в этих языках используется аппликативная форма вычисления по-умолчанию.
0
UFO just landed and posted this here
Ленивость вообще не является неотъемлемой чертой ФЯ, по-умолчанию она есть только в хаскеле (и Clean). Связано больше с тем, что с ленивыми вычислениями часто производительность трудно предсказать «на глаз», ну и компилятор сложнее, да. Хотя на этот счет есть разные мнения.
На рсдн недавно большая ветка была на эту тему.
На рсдн недавно большая ветка была на эту тему.
+1
Да, наверное. Это надо публикации читать и имплементаторов спрашивать.
0
В Эриксоне решили, что в их сфере деятельности важнее сразу «на глаз» видеть из кода, какие именно будут выполнены действия и в какой именно последовательности, а не доверять эти решения компилятору. Ленивость и декларативность хороши в чистых вычислениях, а когда будущая программа заведомо будет вся с упором на побочные эффекты, то себе дороже выходит.
Это хорошо видно по тому, насколько параноидально компилятор Эрланга проверяет паттерны и условные выражения на чистоту.
Это хорошо видно по тому, насколько параноидально компилятор Эрланга проверяет паттерны и условные выражения на чистоту.
0
«функциональный язык глазами ребят из Редмонда»
язык разработан Microsoft Research в Кембридже
язык разработан Microsoft Research в Кембридже
+1
Все таки не понятно зачем он нужен. Математические расчеты, парсинг… Приведите пример задачи, которую на том же C# сделать намного сложнее.
0
Да хоть бы не очень сложные физические расчеты blogs.msdn.com/andrewkennedy/archive/2008/08/20/units-of-measure-in-f-part-one-introducing-units.aspx
+1
А вот это интересно. Спасибо.
0
Поговаривают, что для C++ подобное умеет делать Boost.Units. Быть может, он не так лаконичен, как встроенная поддержка единиц измерения в F#, но разве это именно то, что сложно сделать на C*? :)
0
Дык это C++ а не C#, там темплейты есть.
0
В общем-то в C# есть дженерики, на которых такое тоже можно написать. В случае с F# единицы измерений как раз и разворачиваются в дженерики на уровне IIL. Другое дело, что для этого нужно много времени и кода либо же стороннюю библиотеку а-ля Буст. А в F# поддержка на уровне синтаксиса.
0
Йа не являюсь мегаспециалистом по C#, но дженерики это таки сильно другое, и бОльшую часть трюков на основе C++ темплейтов с дженериками повторить нельзя. И в случае с F#, кстати, похоже, единицы измерений на уровне CLR вообще никак не видны.
+1
Для уменьшения кол-ва кода, упрощения отладки, упрашенного распараллеливания и остальных прелестей ФП
0
Не спешите, статья готовится, просто медленно.
0
ну наконец то хоть появится нормальный язык программирования для .net
-1
Какие компиляторы на данный момент понимают F#?
0
Собственно компилятор у F# один :) Он так и называется. Скачать последнюю актуальную версию вместе с компонентами для Visual Studio можно по ссылке: www.microsoft.com/downloads/details.aspx?FamilyID=61ad6924-93ad-48dc-8c67-60f7e7803d3c&displaylang=en
0
Supported Operating Systems: Windows Vista; Windows XP
И это единственный компилятор? :(
И это единственный компилятор? :(
0
Не, там под моно тоже есть (но я лично не пробовал).
+1
Ну а что вы собственно ожидали от детища Майкрософт да еще на стадии бета-версии?
0
ну и что?
написано же в первой строчке абзаца он еще через год только выйдет. к тому времени можт и для моно чтонибуть наклепают.
написано же в первой строчке абзаца он еще через год только выйдет. к тому времени можт и для моно чтонибуть наклепают.
0
UFO just landed and posted this here
Sign up to leave a comment.
F#: Hello, World