TGViewer
StepOne | Степан Минин StepOne | Степан Минин @steponeit · 3.27K subscribers
Post #543 3.52K
StepOne | Степан Минин Всем привет! Буквально через пару недель я выступлю на конференции DotNext 2024 с докладом про обобщенную математику в C# 11. Посмотрим на концепцию обобщенной математики с нуля, покажу участникам конференции как она выглядит в C# 11 и как она могла бы выглядеть…
Маленькие победы Generic Math в .NET

Осенью 2024 года я рассказывал всё, что нужно знать про обобщённую математику в C#

Запись доклада доступна в Шарпизме 👩‍💻


Она появилась в 7 дотнете, а в этом ноябре уже будет релиз 10 версии.
И с тех пор очевидный ответ на вопрос "зачем" проявляется отдельными частями только сейчас

Становится очевидно, что Microsoft готовят нечто похожее на платформу для создания экосистемы AI разработки

Например, в 9 .NET появился тип данных Tensor<> для работы с тензорами и был расширен класс TensorPrimitives, содержащий (теперь обобщённые) операции над векторными типами данных в обёртке Span'ов

Что интересно эти методы разработаны так, чтобы использовать SIMD ускорения CPU в зависимости от предоставляемых возможностей (AVX, SSE и так далее)

public class ManhattanDistance<T> : IDistanceCalculator<T>
where T : unmanaged, INumberBase<T>
{
public double ComputeDistance(T[] attributesOne, T[] attributesTwo)
{
Span<T> diff = stackalloc T[Math.Min(attributesOne.Length, attributesTwo.Length)];
TensorPrimitives.Subtract(attributesOne, attributesTwo, diff);
var l1Norm = TensorPrimitives.SumOfMagnitudes<T>(diff);
return double.CreateTruncating(l1Norm);
}
}


Получается некоторая долголетняя многоходовочка из Generic Math, Span, stackalloc и много другого, которая убивает несколько зайцев сразу:
- Адепты ООП получают новый мощный архитектурный инструмент, решающий проблемы костылей из синглотонов и жалких попыток симуляции ad-hoc полиморфизма
- Microsoft приближается ещё на один шаг к обретению конкурентоспособности на рынке ML разработки, добиваясь возможности разработки глубоких моделей, чтобы нейросети тренировали не на Python, а на C#
- Любителям Производительности закрывают вопрос ускорения вычислений на Span, который не оптимизируется JIT'ом так, как массив или список

Что дальше, Гейтс и Наделла?

Ставьте 🔥 и ❤️ на пост, чтобы я написал пост про Generic Math в действии
Docs What's new in .NET libraries for .NET 9 Learn about the new .NET libraries features introduced in .NET 9.
  • 🔥 50
  • ❤ 12
  • 🤯 5
  • 👍 2
  • ❤‍🔥 1
More from @steponeit
  1. Sep 25, 2026Рассказал как я добавил в HydraScript объекты и методы без классов и сделал протоколы. Стр…
  2. Sep 22, 2026Post #858
  3. Sep 21, 2026Post #857
  4. Sep 15, 2026Напомню, что у меня есть WireMock.Grpc.Protobuf — расширение для тех, кто пишет компонентн…
  5. Sep 12, 2026StepOne — официальный контрибутор FusionCache 🤙 Между набросами можно ещё и код писать Fu…
  6. Sep 11, 2026Стояк работодателей 2026 🤫 Оказывается, год назад я предсказал выход Астры! И вместе с эт…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →