Как стать автором
Поиск
Написать публикацию
Обновить
2.8

F# *

Язык из семейства языков .NET Framework

Сначала показывать
Порог рейтинга
Уровень сложности

Змея в почтовом ящике и при чем тут F#

Время на прочтение11 мин
Количество просмотров5.7K

О чем это все?


Это все про змейку. Все прекрасно помнят, что такое змейка: на прямоугольном поле движется змея. Находит еду — вырастает в длине, находит себя или границу поля — умирает. А пользователь может только слать команды: влево, вправо, вверх, вниз.
Я решил добавить сюда немного экшна и заставить змею убегать от пакманов. И все это на акторах!


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


Код, написанный здесь, не идеален, может нарушать какие-то принципы и может быть написан лучше. Но если вы новичок и хотите разобраться с мейлбоксами — надеюсь, эта статья вам поможет.
Если вы про мейлбоксы все знаете и без меня — вам тут может быть скучно.


Почему акторы?


Ради практики. Про модель акторов я читал, смотрел видео, мне все понравилось, но сам не пробовал. Теперь попробовал.
Несмотря на то, что по сути выбрал технологию ради технологии, концепция очень удачно легла на эту задачу.


Почему MailboxProcessor, а не, например, Akka.net?


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

Читать дальше →

Зачем изучать непопулярные языки. Пример сообщества F#

Время на прочтение8 мин
Количество просмотров30K


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

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

Я попытался узнать, в чем причина. И вообще — кто те люди, которые на нем пишут, и зачем они это делают, если язык не нужен бизнесу? Для этого я постучался поговорить в русскоязычное сообщество F# в «Телеграме». Здесь — наш круглый стол.
Читать дальше →

Распараллеливание задач с зависимостями —  пример на .NET

Время на прочтение8 мин
Количество просмотров11K
Здравствуйте, коллеги!

На этой неделе мы отдали в перевод амбициозную по своей сложности книгу "Concurrency in .NET" издательства Manning:



Автор любезно выложил на сайте Medium отрывок из 13-й главы, который мы и предлагаем оценить задолго до премьеры.
Приятного чтения!
Читать дальше →

Функциональное мышление. Часть 2

Время на прочтение5 мин
Количество просмотров18K

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


Читать дальше →

Функциональное мышление. Часть 1

Время на прочтение7 мин
Количество просмотров60K

В этой серии статей вы познакомитесь с основными принципами функционального программирования и поймёте, что значит «мыслить функционально» и как этот подход отличается от объектно-ориентированного или императивного программирования.


Читать дальше →

Знакомство с Gjallarhorn.Bindable.WPF (F#) на примере выполнения тестового задания

Время на прочтение14 мин
Количество просмотров4.4K

В статьях на русском языке теме использования F# совместно с WPF уделяют немного внимания.


Сегодня я попробую познакомить вас с одной из F# библиотек, которая значительно упрощает такую разработку.


В качестве демонстрационного примера возьмем одно из тестовых заданий по WPF, которые дают соискателям на должность Junior-разработчика для проверки их знаний.


Само задание звучит так


Необходимо разработать приложение с использованием данных, представленных в файле Students.xml.

Указанный файл содержит следующие сведения о студентах: фамилия, имя, возраст, пол.

Конечно, есть дополнительные рекомендации и ограничения на реализацию, но не будем копировать их целиком. Основные части будут приведены в тексте при необходимости, а полная версия доступна здесь

Читать дальше →

Тонкости value restriction в F#

Время на прочтение8 мин
Количество просмотров6.6K

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



Все материалы из серии переводов русскоязычного сообщества F#-разработчиков вы сможете найти по тегу #fsharplangru.
Читать дальше →

F# на Linux как лекарство для души

Время на прочтение3 мин
Количество просмотров19K

А у вас никогда не возникало ощущения, что «вот это» уже надоело? Что хочется чего-то нового? «Вот этим» может быть что угодно: игра, работа, машина. Что-то любое, что повторяется изо дня в день. А в программировании? Под катом вы найдете историю об усталости от C# и выборе более интересного подхода.


Читать дальше →

DotNext 2018 Piter Release Notes

Время на прочтение10 мин
Количество просмотров3.9K
22-23 апреля в Петербурге состоится DotNext 2018 Piter — наша следующая большая .NET-конференция.


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


IDE для наших платформ эволюционируют более непосредственно. Представьте обновление Rider — одного из основных IDE для .NET, построенного на основе IntelliJ Platform. Каждый раз, когда обновление получает базовая платформа, обновляются и все связанные проекты. Теоретически, если улучшить механизм PSI, апгрейд будет не только у Rider, но и у IntelliJ IDEA — самой популярной IDE для Java. Но некоторые фичи, возможно, потребуют дополнительного допиливания.


Наши конференции устроены еще лучше. Каждый раз, когда обновление получает главная .NET-конференция (DotNext) или главная Java-конференция (Joker), обновления совершенно кроссплатформенно распространяются на все продукты.

Читать дальше →

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F#

Время на прочтение12 мин
Количество просмотров14K

Говорят, бесконечно можно смотреть на три вещи: как горит огонь, как течет вода и как работают другие люди. То есть, идеальный объект для наблюдений — прямая трансляция большой конференции.


И кстати, у нас есть для вас одна такая. В это воскресенье и понедельник проходит DotNext 2017 Moscow — крупнейшая в России конференция, посвященная разработке на платформе .NET. Три десятка спикеров выступят с докладами о настоящем и будущем платформы .NET, об оптимизации производительности и многопоточности, о внутреннем устройстве платформы .NET и CLR, о профилировании и отладке .NET-кода, и так далее.


И у вас есть возможность поучаствовать в этом — без необходимости куда-то лететь или ехать через полгорода, на YouTube, бесплатно. Как именно — читайте дальше.


DotNext 2017 Moscow: возвращение хардкора

Время на прочтение25 мин
Количество просмотров7.4K


12-13 ноября (то есть всего через пару недель) состоится DotNext 2017 Moscow, крупнейшая в России конференция, посвященная разработке на платформе .NET. Среди наших докладчиков — ведущие отраслевые эксперты из России, Европы и США. Основные темы конференции — внутренности работы платформы (CLR, GC, JIT), лучшие практики по использованию инструментов, профилирование и оптимизация производительности, многопоточное программирование, нововведения платформы, решения сложных кейсов.


Под катом — детальный разбор программы, несколько слов о нововведениях этого года и секретный промокод со скидкой.

Читать дальше →

Функционал F#, который потихоньку появляется и в C#

Время на прочтение7 мин
Количество просмотров15K

Почему-то мы зачастую не используем этот функционал. Может быть еще не успели к нему привыкнуть. А иногда используем, при этом не имея представления, что это функционал из F#.
Читать дальше →

Погружение в F#. Пособие для C#-разработчиков

Время на прочтение12 мин
Количество просмотров84K

Этот пост будет не о том, как «перевести» код с C# на F#: различные парадигмы делают каждый из этих языков лучшим для своего круга задач. Однако вы сможете оценить все достоинства функционального программирования быстрее, если не будете думать о переводе кода из одной парадигмы в другую. Настало время любопытных, пытливых и готовых изучать совершенно новые вещи. Давайте начнем!



Все материалы из серии переводов русскоязычного сообщества F#-разработчиков вы сможете найти по тегу #fsharplangru.
Читать дальше →

Ближайшие события

Мониторинг акторов в Akka.Net, но на F#

Время на прочтение15 мин
Количество просмотров6.4K
Сразу скажу, хаба для F# на хабре нет, поэтому пишу в C#.

Для тех кто не знаком с F#, но знаком с C#, рекомендую наисвежайшую статью от Microsoft.
Она поможет Вам испытывать меньше WTF моментов при прочтении, т.к. моя статья не туториал к синтаксису.


Контекст задачи


Есть сервис, написанный на Akka.NET, он вываливает в разные текстовые логи кучу инфы. Отдел эксплуатации грепает эти логи, жарит по ним регекспами, чтобы узнать о кол-ве ошибок (бизнесовых и не очень), о кол-ве входящих в сервис сообщений и кол-ве исходящих. Далее эта информация заливается в ElasticDB, InfluxDB и показывается в Grafana и Kibana в разных срезах и агрегациях.

Звучит сложно, да и парсить текстовые логи сервиса, который генерит несколько десятков ГБ текстового мусора в день — занятие неблагодарное. Поэтому встала задача — сервис должен быть способен поднять ендпоинт, который можно дёрнуть и получить сразу всю инфу о нём.

Решать задачу будем так:

  1. Напишем доменную модель для метрик
  2. Замапим доменную модель метрик на реализацию App.Metrics и поднимем апишечку
  3. Сделаем структурированный доменный логгер, который натянем на внутренний логгер Akka
  4. Сделаем обёртку для функциональных акторов, которая спрячет работу с метриками и логгером
  5. Соберём всё вместе и запустим
Читать дальше →

Разбор доклада Романа Неволина про F#

Время на прочтение7 мин
Количество просмотров3.7K
С предыдущего разбора прошло много времени, но я не бросил затею. Сегодня предлагаю вашему вниманию доклад Романа nevoroman Неволина, посвящённый тому, какой выход есть у человека, если он, во-первых, data scientist, а во-вторых, почему-то любит .NET.

Вполне логично, что это выступление состоялось на DotNext в декабре 2016 года:


Слайды можно найти тут.

Традиционный дисклеймер: про .NET только разбираемый в статье доклад, а не сама статья.

Стратегия развития языков программирования .NET

Время на прочтение7 мин
Количество просмотров21K
Мэдс Торгерсен (Mads Torgersen), занимающийся больше 11 лет развитием .NET-языков в Microsoft, поделился описанием принципов, которыми руководствуется его команда, принимая решения о развитии каждого языка. Передаю слово Мэдсу.


Читать дальше →

Тестируем Web UI на F# и canopy

Время на прочтение3 мин
Количество просмотров6.1K
Доброго времени суток! С недавнего времени я начал увлекаться функциональным программированием, поэтому в этой статье я бы хотел поделиться с вами моими находками. Мне очень симпатизирует минимализм синтаксиса функциональных языков. Сила и красота, которую несут за собой несколько строк кода.

В процессе UI тестирования своего рабочего проекта на C# и selenium, я задумался о том, как будут выглядеть тест сценарии на одном из функциональных языков. Мой выбор пал на F#. Поискав, я наткнулся на очень интересный фреймворк под названием canopy, который базируется на всем известном selenium и полностью реализованном на языке F#. С первых же строк кода он произвел на меня впечатление своей простотой и минимализмом синтаксиса, который позволяет упрощать сложные вещи.
Читать дальше →

Композиция функций на F# и Scala

Время на прочтение7 мин
Количество просмотров13K

Проще говоря о чем все это


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

Далее

Тестирование в F#

Время на прочтение4 мин
Количество просмотров6.8K

Введение


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

Далее

fsharpConf 2016 — прямая трансляция виртуальной конференции по F#

Время на прочтение1 мин
Количество просмотров3.3K


Всем привет! Сегодня, 4 марта, состоится виртуальная конференция fsharpConf 2016, посвящённая языку функционального программирования F# и связанным технологиям и инструментам.

Начало трансляции — в 19:30 (по Москве).

Не упустите возможность услышать о языке F# от его создателя, Дона Сайма, послушать о применении F# в production в компании jet.com, а также узнать много нового о персонажах звёздных войн на основе анализа данных в докладе Эвелины Габасовой (20:00). И конечно один из самых интересных и ожидаемых докладов — демонстрации Шона и Фила Трелфолдов в 21:30.

Подробная программа конференции