Исходя из вашего комментария, стоит перети на .NET :)
Так как он давно кроссплатформенный, как и gui, например, AvaloniaUI, которая использует как раз рассматриваемую skia
Finalizer (destructor) ~
Тут чисто термилогический вопрос, не нравится вам что в C# finalizer называют ещё и destructor. Ну это и Microsoft так называет (сами ссылку дали)
Вопрос "чем лучше", лучше перевести в "почему функциональное программирование популярно", так как C# смещен в стурону объектно-ориентированного, а F# как раз в функциональщину. И на этот вопрос, думаю, поможет ответить этот текст. Также, что-то можно увидеть в разделе "Сообщать об ошибке или контролировать выполнение программы" текущего текста.
По поводу выделения на фоне других, это можно также прочесть в данном тексте :)
К сожалению, ответить на ваш вопрос не могу. Это лишь перевод статьи, которая мне понравилась, так как F# использовал изредка и вступительное размышление очень близко пришлось
Это опенсорс решение. У кого есть желание, может улучшить предложенный вариант. И кажется, что этот репозиторий будет хорошей песочницей перед тем, как предложить свои измнения в код, который используется в проде
.NET Standard — это лишь API. Ему можно подсунуть любой удовлетворяющий рантайм. .NET — это продолжение идей .NET Standard. Поэтому, если вам не нужны фичи из .NET, то можете смело оставаться на стандарте
Я на нем и остаюсь (если вы не про core2.0 или боже упаси второй fw).
Про легаси. Речь шла больше про те проекты, где не находят применения новым возможностям по каким-либо причинам. Больше удручает, когда это проиводит к затяжному застою без каких-либо проблем в применимости
С рекордами вы получаете возможность построить граф из коробки
С таким не приходилось связываться, поэтому не могу оценить о чем идет речь :)
Для меня, пока что, рекорды убирают бойлерплейт, связанный с реализацией IEquatable<T>
Так можно говорить про каждую версию и остаться в итоге на net20 ;)
Теже рекорды особо не нужны, когда можно было просто использовать ValueObject. Но всеже, в каждом релизе, что-то да новое есть, например аттрибут ModuleInitializer или SkipLocalsInit, поднимающие версии рантайма. Да и всякий синтаксический сахар, все-таки, упращает читаемость кода. Поэтому как-то неочень ультимативно заявлять, что новая версия языка, рантайма или SDK ничего не приносит
Предлагаю забыть про былое, про легаси и попробовать разработку на современном фреймворке — .net core 3.1, или его продолжение .net 5 (но лучше подождать возможного 5.1).
Подход к разработке кора изменился: они сначала догнали легаси, а потом перегнали по количеству доступных API (не были перенесены лишь спорные/ненужные), при этом легаси довольно долго находился на мажорной цифре 4, оставшись в итоге там. Внутренние брекинченжи стараются принимать с большой осторожностью. А если вам не понравилось измененное поведения, то вы можете задать вопрос, указав примеры. Достаточно вспомнить нашумевшие темы: изменение в LINQ или string.IndexOf. То есть, разработчики рантайма прислушиваются к мнению сообщества.
К тому же, у вас есть возможность посодействовать развитию дотнета, исправив баги в BCL, или выдвинув Proposal, или опуститься вниз к JIT.
Также, хотелось бы отметить блог The Morning Brew, где по будням выкладывается сборник ссылок, понравившихся автору. Очень удобное решение для RSS
Ну, и конечно, не сишарпом едины. Существует Sergey Tihon's Blog, где хайлайтятся ссылки за неделю с F#-уклоном
И чуть не забыл, иногда можно встреть на реддите что-то интересное, например в r/dotnet
Исходя из вашего комментария, стоит перети на .NET :)
Так как он давно кроссплатформенный, как и gui, например, AvaloniaUI, которая использует как раз рассматриваемую skia
WPF на самом деле простой, стоит только перешагнуть через понимание MVVM и окажется, что даже проще разрабатывать, чем на винформах
WPF прекрасно развивается в Avalonia UI :)
Есть еще одна хорошая инфографика, сделанная @robloo
Тоже так считал до того момента, пока мне не подсказали посмотреть в стандарт C++/CLI. Вот что дает ECMA-372, 1st edition, December 2005:
К тому же, стандарт CLI говорит о том, что финализатор может вызваться не один раз (I.8.9.6.7 Finalizers — ECMA-335, 6th edition, June 2012).
После этого, думаю, не стоит смешивать эти два понятия :)
Извиняюсь, но не могли бы указать на это место?
Спасибо за уточнения!
Вопрос "чем лучше", лучше перевести в "почему функциональное программирование популярно", так как C# смещен в стурону объектно-ориентированного, а F# как раз в функциональщину. И на этот вопрос, думаю, поможет ответить этот текст. Также, что-то можно увидеть в разделе "Сообщать об ошибке или контролировать выполнение программы" текущего текста.
По поводу выделения на фоне других, это можно также прочесть в данном тексте :)
К сожалению, ответить на ваш вопрос не могу. Это лишь перевод статьи, которая мне понравилась, так как F# использовал изредка и вступительное размышление очень близко пришлось
Тоже недавно задумался над тем, как улучшить написание в маркдауне :) Остановился на VsCode и плагинах к нему. Из неупомянутых выбрал:
Это опенсорс решение. У кого есть желание, может улучшить предложенный вариант. И кажется, что этот репозиторий будет хорошей песочницей перед тем, как предложить свои измнения в код, который используется в проде
.NET Standard — это лишь API. Ему можно подсунуть любой удовлетворяющий рантайм. .NET — это продолжение идей .NET Standard. Поэтому, если вам не нужны фичи из .NET, то можете смело оставаться на стандарте
When to target net5.0 vs. netstandard
Про легаси. Речь шла больше про те проекты, где не находят применения новым возможностям по каким-либо причинам. Больше удручает, когда это проиводит к затяжному застою без каких-либо проблем в применимости
С таким не приходилось связываться, поэтому не могу оценить о чем идет речь :)
Для меня, пока что, рекорды убирают бойлерплейт, связанный с реализацией
IEquatable<T>
Можно указать единственный
net5.0
TargetFramework и при этом остаться на .NET Framework 2.0 ;)Целевая платофрма не так важна, как TargetFrameworkIdentifier
Начиная с .NET 5 SDK, этот нугет нет необходимости указывать — сдк сделает это за вас :)
Речь больше шла о реализации
IEquatable<T>
Так можно говорить про каждую версию и остаться в итоге на
net20
;)Теже рекорды особо не нужны, когда можно было просто использовать ValueObject. Но всеже, в каждом релизе, что-то да новое есть, например аттрибут ModuleInitializer или SkipLocalsInit, поднимающие версии рантайма. Да и всякий синтаксический сахар, все-таки, упращает читаемость кода. Поэтому как-то неочень ультимативно заявлять, что новая версия языка, рантайма или SDK ничего не приносит
MAUI — это, по сути, все тот же Xamarin.Forms. Одно из измнений бросающихся в глаза: поддержка macOS переходит под крыло MS.
Например, то, что хотят использовать компилятор, написанный для Avalonia, рассматривают в использовании для WinUI, говорит в пользу авалонии.
Ну, и можно задуматься над тем, что с помощью авалонии можно задуматься о переносе винформ-приложений на кроссплатформ ;)
Предлагаю забыть про былое, про легаси и попробовать разработку на современном фреймворке — .net core 3.1, или его продолжение .net 5 (но лучше подождать возможного 5.1).
Подход к разработке кора изменился: они сначала догнали легаси, а потом перегнали по количеству доступных API (не были перенесены лишь спорные/ненужные), при этом легаси довольно долго находился на мажорной цифре 4, оставшись в итоге там. Внутренние брекинченжи стараются принимать с большой осторожностью. А если вам не понравилось измененное поведения, то вы можете задать вопрос, указав примеры. Достаточно вспомнить нашумевшие темы: изменение в LINQ или string.IndexOf. То есть, разработчики рантайма прислушиваются к мнению сообщества.
К тому же, у вас есть возможность посодействовать развитию дотнета, исправив баги в BCL, или выдвинув Proposal, или опуститься вниз к JIT.
И это только то, что касается dotnet/runtime
Он также записал упращенный рассказ о современном дотнете и его даже можно использовать как введение в область :)
Кстати, если интересно, то тут есть немного рассуждений о том, как использование МО может помочь КВ