Как стать автором
Обновить
3

F# *

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

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

Асинхронность в C# и F#. Подводные камни асинхронности в C #

Время на прочтение9 мин
Количество просмотров10K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Async in C# and F# Asynchronous gotchas in C#» автора Tomas Petricek.

Еще в феврале я присутствовал на ежегодном саммите MVP — мероприятии, организованном Microsoft для MVP. Я воспользовался этой возможностью, чтобы посетить также Бостон и Нью-Йорк, сделать два выступления про F# и записать лекцию Channel 9 о провайдерах типов. Несмотря на другие мероприятия (такие как посещения пабов, общение с другими людьми про F# и долгий сон по утрам), мне также удалось провести несколько обсуждений.
Читать дальше →

Представляем .NET 5.0 Preview 6

Время на прочтение4 мин
Количество просмотров16K
На прошлой неделе мы выпустили .NET 5.0 Preview 6. Версия содержит небольшой набор новых функций и улучшений производительности. Пост .NET 5.0 Preview 4 посвящен тому, что мы планируем выпустить в .NET 5.0. Большинство функций в настоящее время уже реализовано, но некоторые еще не в своем окончательном состоянии. Мы ожидаем, что релиз будет полнофункциональным с Preview 8.

Вы можете скачать .NET 5.0 Preview 6, для Windows, macOS и Linux:


ASP.NET Core и EF Core также были выпущены на прошлой неделе. Примечание: EF Core 5.0 не будет поддерживать .NET Standard 2.0 или .NET Framework. Читайте пост о выпуске EF Core чтобы узнать больше.

Вам нужно использовать Visual Studio 2019 16.7 для работы с .NET 5.0. .NET 5.0 теперь поддерживается в Visual Studio for Mac. Установите последнюю версию расширения C# для использования .NET 5.0 с Visual Studio Code.

Заметки:


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

Основатель F# сообщества: «ООП и ФП головного мозга должны умереть»// Мы обречены #7

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

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

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

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

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

F#, увеличение контраста изображения путем выравнивания гистограмм

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

Операция выравнивания гистограмм (увеличение контраста) часто используется для увеличения качества изображения. В рамках этой статьи будет рассмотрено понятие гистограммы, теория алгоритма для ее выравнивания, практические примеры работы этого алгоритма. Для облегчения обработки изображений, мы будем использовать библиотеку OpenCV. Также, сделаем сравнительный анализ результатов работы нашего алгоритма и алгоритма, который уже встроен в OpenCV.


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

F#, морфология бинарных изображений

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

Введение


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


В статье будут рассмотрены основные операции математической (бинарной) морфологии в контексте F#. А также, в конце статьи я приведу пример анализа полученного результата, который может быть использован в алгоритмах машинного зрения.

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

F#, алгоритм маркировки связных компонентов изображения

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

В рамках этой статьи будут рассмотрены два алгоритма для маркировки связных компонентов, показана их реализация на языке программирования F#. А также, произведен сравнительный анализ алгоритмов, поиск слабых мест. Исходный материал для реализации алгоритмов был взят из книги “Компьютерное зрение” (авторы Л. Шапиро, Дж. Стокман. перевод с английского А. А. Богуславского под редакцией С. М. Соколова).
Читать дальше →

Функциональное программирование на примере работы с матрицами из теории линейной алгебры

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

Вступление


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

Определение матрицы и реализация на F#


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

.NET Interactive уже здесь! | .NET Notebooks Preview 2

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


В ноябре 2019 мы анонсировали поодержку .NET для Jupyter notebooks с доступностью C# и F#. Сегодня мы рады объявить о выпуске Preview 2 .NET Notebook. В этой статье вы можете найти все основные новые функции этого выпуска. Присоединяйтесь!
Читать дальше →

Документация .NET: что новенького за январь

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

Добро пожаловать статью о новой документации по .NET за январь 2020 года. В этой статье перечислены некоторые основные изменения в документации за этот период. Присоединяйтесь и изучайте новые статьи!
Читать дальше →

Статическая типизация не обязательно требует церемоний

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

Примечание переводчика: в текущий момент я подготавливаю материалы для обещанной статьи по монадам. К сожалению, это занимает довольно много времени, не говоря о том, что я всё же должен заниматься основной работой и уделять время семье, но процесс идёт. А пока представляю вам перевод небольшой свежей заметки от замечательного товарища Mark Seemann'а, которая мне показалась любопытной.


Я часто становлюсь участником длительных и жарких дебатов на тему статической типизации против динамической. Сам я определенно отношу себя к сторонникам статической типизации, но эта статья не о достоинствах статической типизации. Цель статьи — устранить распространённое заблуждение насчет статически типизированных языков.


Церемонность


Люди, которые предпочитают динамически типизированные языки статически типизированным, часто подчеркивают тот факт, что отсутствие церемонности делает их продуктивнее. Это звучит логично, однако, это ложная дихотомия.


Церемония — это то, что вы делаете до того, как начнете делать то, что вы действительно собирались сделать.

Venkat Subramaniam

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


Это привело меня к мысли о том, что существует злосчастная Зона Церемонности:



Конечно же, эта диаграмма всего лишь упрощение, но я надеюсь, что она демонстрирует суть. C++, Java и C♯ — языки, которые требуют церемонности. Справа от них находятся языки, которые мы могли бы назвать транс-церемониальными, включая F♯ и Haskell.

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

.NET Core с блокнотами Jupyter — Preview 1

Время на прочтение3 мин
Количество просмотров9.8K
Когда вы думаете о блокнотах Jupyter, на ум, вероятно, приходит код Python, R, Julia или Scala, а не .NET. Сегодня мы рады сообщить, что вы можете писать .NET-код в Jupyter Notebooks.

Try .NET развился, чтобы поддерживать больше интерактивных возможностей в Интернете с помощью сниппетов исполняемого кода, генератора интерактивной документации для .NET Core с глобальным инструментом dotnet try. Ну а теперь .NET доступен в Jupyter Notebooks.

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

Как я пришел к формальной спецификации RISC-V процессора на F#

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

Томными зимними вечерами, когда солнце лениво пробегало сквозь пелену дней — я нашел в себе силы заняться реализацией давней мечты: разобраться как же устроены процессоры. Эта мечта привела меня к написанию формальной спецификации RISC-V процессора. Проект на Github


image

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

F#10: Списки

Время на прочтение4 мин
Количество просмотров6.2K
Любое серьезное программирование на любом языке всегда будет включать списки. Таким образом, вам будет приятно узнать, что F# очень и очень хорошо поддерживает списки с помощью своего модуля List. Список в F# — это упорядоченная, неизменная серия элементов одного типа.
Читать дальше →

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

F#8: Разграниченные/размеченные объединения(Discriminated Unions)

Время на прочтение9 мин
Количество просмотров3.6K
Итак, наше путешествие F # продолжается. Мы рассмотрели некоторые основные типы строительных блоков, такие как записи / кортежи, теперь пришло время взглянуть на размеченные объединения.
Читать дальше →

F#7: Записи (Records)

Время на прочтение3 мин
Количество просмотров2.2K
Итак, мы продолжаем наше путешествие к большему количеству типов F#. На этот раз мы рассмотрим типы Записей.
Читать дальше →

F#6: Кортежи

Время на прочтение4 мин
Количество просмотров2.5K
Итак, наше путешествие в F # продолжается. Следующая статья будет посвящена типам F #, которые могут иметь или не иметь стандартные эквиваленты .NET. Этот пост о кортежах.
Читать дальше →

F#5: Операторы

Время на прочтение5 мин
Количество просмотров3.1K
Я намеревался написать 1/2 достойного поста в блоге об операторах F #, но потом я подумал, и, честно говоря, я не мог видеть слишком много достоинств в простом повторении того, что уже свободно доступно на MSDN, где перечисляются ВСЕ операторы F#.
Читать дальше →

F#4: Let / Use / Do

Время на прочтение3 мин
Количество просмотров2.2K
В этом посте мы рассмотрим привязки в F#, в частности мы рассмотрим Let / Use / Do. Теперь вы, возможно, спрашиваете себя, что такое привязки, и, поскольку мы еще не рассмотрели их, сейчас самое время поговорить об этом.

Проще говоря, привязка связывает идентификатор со значением или функцией.
Читать дальше →

F#3: Форматирование текста

Время на прочтение3 мин
Количество просмотров3.8K
При работе с любым языком вам, скорее всего, нужно будет отформатировать текст, и F# ничем не отличается.

Поскольку F# является языком .NET, мы всегда можем использовать Console.WriteLine (..) и String.Format (..), где мы можем использовать любой из обычных форматеров, которые вы использовали в своем обычном коде .NET.

Однако F# также поддерживает более похожий на синтаксис метод C, который доступен в модуле Core.Printf. Одна функция внутри него может использоваться вместо использования класса Console.WriteLine (..) .NET.
Читать дальше →

F#2: Среда FSI

Время на прочтение2 мин
Количество просмотров2.5K
Как многие из вас знают, я парень из C#. Поэтому, если я просто хочу что-то попробовать, я обычно просто открываю LINQPad и пробую что-то там. Если всё разрастается и мне нужно больше контроля над экспериментами, я откажусь от LINQPad и разверну приложение ConsoleApplication в Visual Studio. Оба эти подхода работают нормально, но было бы неплохо, если бы существовала какая-то среда, в которой вы могли бы попробовать что-то внутри самой Visual Studio, даже не создавая новый проект.

К счастью, в F# это есть.
Читать дальше →