Pull to refresh

F#: Hello, World

.NET *F# *
Приблизительно через год нас ждет очередной релиз Microsoft Visual Studio и едва ли не самой вкусной новинкой обещает стать F# — функциональный язык глазами ребят из Кембриджской лаборатории Microsoft Research. Этот язык совсем новый и сейчас находится на стадии вылизывания в лабораториях Microsoft Research. Microsoft позиционирует F# как один из основных языков для .Net наряду с C# и VB.Net что скорее всего значит, что рано или поздно с ним придется столкнутся очень многим програмистам под .Net. Я, как и многие разработчики, никогда не сталкивался с чисто функциональными языками, но принцип «Готовь сани летом» еще не отменяли. Эта статья — мой личный маленький «Привет F#».
Почитать про Hello World на F#
Total votes 56: ↑40 and ↓16 +24
Views 6.7K
Comments 77

Влюбляемся в F#: Доза 0: Зачем нужен ещё один язык программирования?

Programming *F# *

Дорогие Хабраколлеги!



Хочу предложить вашему вниманию возможность приобщиться еще к одному языку программирования: F#. Идея писать такого рода заметки возникла из жизни — по роду своей деятельности мне приходится рассказывать про F#, и когда меня спрашивают, где можно попродробнее прочитать об этом языке — приходится ссылаться на англоязычные ресурсы. Поэтому я решил потихоньку рассказывать про F# в своем блоге, а теперь еще и на хабре, увидев замечательное сообщество стартап-программист. Поскольку F# — очень красивый язык, который никого не оставит равнодушным — я решил озаглавить цикл статей "влюбляемся в F#", а каждую из статей называть "дозой": по окончании их употребления вы должны будете подсесть на F#, а я буду мучительно эксплуатировать ваше терпение, делая вынужденные (из-за недостатка времени) перерывы между дозами.


Читать дальше →
Total votes 69: ↑60 and ↓9 +51
Views 32K
Comments 93

Влюбляемся в F#: Доза 0.1: Как установить F#

Programming *F# *

Дорогие Хабраколлеги!


Благодарю за теплый прием моих заметок по F#. Откровенно говоря, не ожидал такого количества интересных и полезных комментариев! Заранее прошу простить, если я не успеваю отвечать на все — буду стараться.


Прежде чем начать влюбляться в F# по этим заметкам, я рекомендую вам установить себе соответствующую среду программирования. Заранее прошу прощения у тех, кто уже установил себе F# и ждет от меня более продвинутых постов: я стараюсь излагать все по порядку, так что первое время может быть скучно.


Существует несколько возможностей установить F# (на текущий момент, последняя версия – 1.9.6.2):


Читать дальше →
Total votes 43: ↑35 and ↓8 +27
Views 4.7K
Comments 34

Влюбляемся в F#: Доза 1: Дух функционального программирования

Programming *F# *
Дорогие Хабраколлеги!

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

Когда я был молодым и преподавал программирование на первом курсе факультета Прикладной математики МАИ, один из студентов никак не мог понять, что значит X:=X+1. “Как же так, как X может быть равен X+1?”. Мне пришлось объяснить ему, как такое возможно, и в этот момент в нем умер функциональный программист…


Почему? Давайте разберемся.

Читать дальше →
Total votes 47: ↑32 and ↓15 +17
Views 7.4K
Comments 27

Решаем Project Euler на F#: Задача 1

Lumber room
Прочитав первые несколько статей из цикла Влюбляемся в F#, я и в самом деле, если не влюбился в него, то по меньшей мере заинтересовался. Настолько, что не вытерпел ожидания следующей дозы и решил продолжить изучение самостоятельно.
В процессе луркинга я наткнулся на чрезвычайно увлекательный сайт Project Euler, который на мой взгляд, как нельзя лучше подходит, чтобы постепенно изучить все, или по крайней мере большинство тонкостей F#. Сейчас я предлагаю для начала рассмотреть решение самой первой задачи с этого сайта. Она очень простая, и ее решение думаю не вызовет сложностей даже у тех, кто знаком с F# только по вышеприведенной статье. Итак…
Задача 1
Total votes 12: ↑9 and ↓3 +6
Views 658
Comments 6

Решаем Project Euler на F#: Задачи 3, 7, 10

Lumber room
Что ж, продолжим знакомство с F#, а заодно решение задач с Проекта Эйлера, начатое мною в предыдущем посте. Сегодня я рассмотрю сразу несколько задач из этого проекта, связанных с простыми числами. В первой десятке таковых три штуки, вот на них и посмотрим.
В этих примерах мы будем как и прежде использовать только функциональные аспекты языка, для окончательного, так сказать, закрепления. А о том, как использовать F# в императивной и объектно-ориентированной парадигме, я пожалуй расскажу отдельно, в следующий раз.

Простые числа
Total votes 5: ↑5 and ↓0 +5
Views 2.7K
Comments 1

Влюбляемся в F#: Доза 2: Строим фрактальное изображение, или множество Мандельброта своими руками

Programming *F# *

На прошлом уроке мы рассмотрели основные понятия функционального программирования, теперь давайте попробуем применить их на практике. Поскольку функциональное программирование, как вы наверное поняли, идеально подходит для решения математических задач, то рассмотрим именно такую задачу — построение изображения множества Мандельброта, самого известного фрактального множества.


Читать дальше →
Total votes 34: ↑31 and ↓3 +28
Views 5.4K
Comments 18

Интерпретатор для HQ9+ на F#

Lumber room
Пока полномасштабная статья про поддержку F# различных парадигм еще готовится к выпуску, постараюсь занять ваше внимание некоторыми приятными и не отягощающими мелочами.
Вот скажите, знаете ли вы, что есть на свете такой замечательный язык программирования, как HQ9+? А чем же он такой замечательный? Ну например, назовите еще хоть один язык, где легендарная программа «Hello, world!» состоит из одного символа. Заметьте, не строки, не оператора, а символа — «H». Более того, этот язык настолько хорош, что куайн для него записывается тоже одним символом -«Q».
Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Views 579
Comments 2

Три парадигмы F#

Programming *F# *

Введение


Все, кто так или иначе связан с .NET программированием знает, что уже в следующую версию Visual Studio будет встроен новый язык программирования — F#, который позиционируется как функциональный, чем сразу, так уж повелось, вызывает подозрения в бесполезности. Для того, чтобы показать, что F# — куда больше, чем просто ФЯП (хотя и просто ФЯП — это очень немало), я и написал все нижеследующее.
Эта статья, несмотря на изрядную длину, не претендует на то, чтобы полностью описать всю функциональность языка. Это всего лишь краткий обзор, призванный продемонстрировать широкий спектр возможностей, каждая из которых заслуживает отдельной статьи, и даже не одной.
Кроме того, написав такой пространный пост, я хотел сделать задел на будущее, чтобы в дальнейшем мне не отвлекаться на незначительные вещи базового уровня. Конечно, сразу головой в пруд — это действенно, но и какой-никакой фундамент не помешает.
А уже в следующий раз я приведу пример на волнующую тему пригодности F# для обычной профессиональной программистской деятельности.
И еще раз, под катом действительно МНОГО текста. И не говорите потом, что я вас не предупреждал. =)
Читать дальше →
Total votes 43: ↑40 and ↓3 +37
Views 20K
Comments 68

F# на практике

Lumber room

Введение


Пожалуй два наиболее часто задаваемых (следовательно, животрепещущих) вопроса в комментариях к моей обзорной статье о F# были следующие:
1. Почему он так похож на OCaml?
2. На кой черт он вообще сдался?
Ответ на первый вопрос не представляет особой сложности — он так похож на OCaml, потому что сделан целиком и полностью на его основе. Хорошо это или плохо? Да скорее хорошо, это явно лучше, чем придумывать совершенно новый синтаксис, который еще не известно, насколько будет хорош. Плюс к тому, по OCaml достаточно много документации, так что даже на первых порах проблем с (само)обучением быть не должно.
Со вторым вопросом разобраться куда сложнее, особенно сейчас, когда язык пребывает в состоянии беты и является пока что лишь объектом изучения излишне любознательных программистов. Однако несмотря на довольно краткое с ним знакомство, мне уже довелось разок применить его для достижения вполне прагматических целей, о чем и поведаю в этом небольшом посте.
Заранее оговорюсь, конечно же, не последнее, что побудило меня решать поставленную задачу именно на F# — желание попрактиковаться в новом языке. Конечно же, программу можно было написать и на C#, и возможно она получилась бы ненамного длиннее (повторюсь, возможно, я не проверял). Так или иначе, программа была написана, и дело свое сделала.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Views 964
Comments 6

F#: очень красивый пример с использованием DirectX

Lumber room
Хотел сделать ссылкой, но текст не влазит в 500 символов…
Итак, F# — это новый язык в линейке .NET, язык функционального программирования. Сошников Д.В. на platforma2009 в конце доклада показывает очень интересный и красивый пример использования F#, строя графики функций (зависящих и от времени!) и запуская по поверхностям графиков катающиеся шарики.

Пример этот можно взять тут, единственное, что нужно немного подшливовать его под текущую версию F# CTP 1.9.6.2.
шлифовка и ссылки...
Total votes 17: ↑14 and ↓3 +11
Views 893
Comments 3

Катаморфизм в F#

.NET *F# *

Введение


Упомяну сразу, данная статья написана по мотивам целой серии постов в отличном блоге Inside F#. Тем не менее она не является переводом в чистом виде, а скорее вольным изложением, чтобы доступным языком объяснить — что же за зверь такой, катаморфизм, и с чем его едят. Слово это думаю не очень на слуху, чего стоит хотя бы тот факт, что статьи по нему нет в русской википедии (и вообще ни в одной национальной, кроме почему-то голландской. Наверно ФП как-то соответсвует духу травокурения)
Итак, строго говоря, катаморфизм в функциональном программировании — это обобщение свертки списков, которые (как я уже рассказывал) являются специфическим типом размеченного объединения, на произвольные размеченные объединения.
Читать дальше →
Total votes 25: ↑18 and ↓7 +11
Views 6.2K
Comments 24

Вышел майский CTP компилятора F#

Lumber room
А так же он включен VS2010 beta 1

В блоге Дона Сайма анонс и список изменений.

Основные изменения — масса мелких удобство и подгонка под .NET 4.0. И наконец-то #light по умолчанию. Старые сборки несовмсестимы бинарно с новым компилятором — придется перекомпилировать.
Total votes 9: ↑7 and ↓2 +5
Views 204
Comments 0

Асинхронное программирование — цепочки вызовов

.NET *F# *

Когда в коде фигурирует пара вызовов BeginXxx()/EndXxx(), это приемлимо. Но что если алгоритм требует несколько таких вызовов подряд, то количество методов (или анонимных делегатов) преумножится и код станет менее читабельным. К счастью, эта проблема решена как в F# так и в C#.



Читать дальше →
Total votes 48: ↑40 and ↓8 +32
Views 5.1K
Comments 15

Что нам готовит PDC10?

.NET *F# *

image



PDC10 — крупнейшая конференция Microsoft начнется уже через неделю 28 октября. Самое время строить догадки и предположения о том, что нового может представить Microsoft для разработчиков.



Пищу для домыслов может дать недавнее обновление программы конференции на сайте http://player.microsoftpdc.com/. В ней появились следующие интересные позиции:



image  image



Не остается сомнений, что на PDC расскажут про следующие версии C#, Visual Basic и F#. Пока не ясно будет ли обновление языков проходить вместе с обновлением самой платформы .NET. Я склонен считать, что обновления CLR не будет, нововведения в языки будут введены под индексом .NET 4.1/4.5, но не 5.0.

Читать дальше →
Total votes 47: ↑34 and ↓13 +21
Views 481
Comments 26

Книга Криса Смита «Программирование на языке F#»

.NET *F# *
image

Любая методология разработки, инструмент, технология или язык программирования привлекает к себе внимание по разным причинам. Это может быть нечто инновационное и тогда по прошествию десятка или двух лет (!), до него таки дотянутся руки всего остального компьютерного сообщества. Так было практически со всеми идеями, которым пришлось пройти длительный путь от конференций гиков до признания широкой общественностью. Другим способом ворваться в «мейнстрим» является поддержка уже известного вендора, например такого, как компания … Майкрософт. Большинство людей инерционны и не будут вкладывать свои силы в «нонейм» инструменты, пока не удостоверятся, что их капиталовложение будет востребовано. Если же инструментом занимается подобный вендор, то риск изучить что-то, что не пригодится в будущем, очень не велик.
Читать дальше →
Total votes 42: ↑38 and ↓4 +34
Views 4.1K
Comments 3