Релиз Aspire, типы расширений, новинки Build 2024

Sdílet
Vložit
  • čas přidán 6. 09. 2024

Komentáře • 18

  • @amwrag
    @amwrag Před 3 měsíci

    За ссылки на обсуждаемый контент и тайм-коды в описание - моё уважение и поклон.

  • @user-uu6xz6lk6o
    @user-uu6xz6lk6o Před 3 měsíci +5

    implicit/explicit - эти ключевые слова уже есть. for - тоже. Итого только 1 новое ключевое слово

    • @tt0nix
      @tt0nix Před 2 měsíci

      Больно у них применение другое было. Проблема то не в том что есть они или нет. Проблема в том что не было у них такого использования, семантический смысл другой был.
      Новые разработчики видят неконсистентный синтаксис. Когда в языке for используется и для цикла и для расширения. Но для расширения не всегда, а только если не наследование и не реализация. Это очень сильно усложняет язык, не делая его понятными и простым для изучения.

  • @MaksimVolkau
    @MaksimVolkau Před 3 měsíci +2

    Про extension types:
    - Я думаю, все уже знают, но implicit и explicit есть в языке
    - Согласен что : вместо for лучше и слово extension должно помочь парсеру однозначно распознать конструкцию... Мне кажется, они просто на коленке до билда эту фичу подлатали. Много вопросов, потому что ее имплементация годами лежала в форках, и была не одна (еще были concepts and roles).
    - Жду расширения UnsafeAccessAttribute для работы поверх экстеншена, чтобы доступаться к non public типам.

    • @zachemny
      @zachemny Před 3 měsíci +2

      В обсуждении пропозала на GH очень подробно расписано про то, почему ввели for. Если вкратце, то ради избежания неоднозначности: после расширяемого типа могут указываться реализуемые данным экстеншеном интерфейсы.

    • @MaksimVolkau
      @MaksimVolkau Před 3 měsíci

      @@zachemny Ок, тогда нет вопросов.

    • @tt0nix
      @tt0nix Před 2 měsíci

      Да, есть implicit и explicit, но они настолько редко используют обычными людьми, что этим можно пренебречь. Давайте переформулируем так: в большинстве проектов их нет, большенство разработчиков их никогда в жизни не использовало и вряд ли будет. Тоже самое, что и unsafe, fixed, extern, они конечно есть, но в повседневной жизни вы их не встретите.

    • @tt0nix
      @tt0nix Před 2 měsíci

      @@zachemny Да, был такой разговор. Но, опять же, для однозначности достаточно было бы выдумать какой-то один признак, допустим ключевое слово `extension`. Его наличие - достаточный признак для компилятора, чтобы устранить все последующие неоднозначности. Зачем было так сильно извращаться и закапываться, не ясно. Зачем так много признаков, костылей и избыточностей.
      for прекрасно эмулируется двоеточием. Расширение наследования, через множественное наследование от интерфейсов (оно уже есть в языке). implicit и explicit эмулируются синтаксисом явных и неявных реализаций интерфейса (он уже есть в языке). Устранить все эти неоднозначности (в самом ленивом случае) можно добавив едино единственное новые слово extension.
      Сравните с LINQ. Авторы встроили отдельный язык в C#, со своим синтаксисом, ключевыми словами, операторами и не было никакой неоднозначности. Была сложная и продуманная работа над реализацией. А так получается, что сново, проблемы в Roslyn Team спихнули на разработчиков. Вместо того чтобы сделать хорошо (пусть и сложно) в компиляторе, родили уродливый, избыточный, неконсистентный синтаксис с которым теперь придётся жить всем вечно.

    • @zachemny
      @zachemny Před 2 měsíci

      @@tt0nix На все эти сомнения в пропозале отвечено. Если вкратце: extension A: B, C, D. Что такое B, C, D - не ясно. Если при обычном наследовании порядок членов не важен, то здесь получается, что B - это всегда должен быть расширяемый тип, а C и D - реализуемые интерфейсы. То есть порядок следования теперь уже важен, что является нарушением логики языка.

  • @lappovalera
    @lappovalera Před 3 měsíci

    Спасибо за обзор !

  • @kitsunofflmao9980
    @kitsunofflmao9980 Před 3 měsíci +2

    к вопросу о for вместо :
    вроде в c# после 13 реализация интерфейсов через экстеншены (может завезут в c# 13, но маловероятно)
    поэтому : заменили на for

    • @tt0nix
      @tt0nix Před 2 měsíci

      Только на это и надежда. Но почему тогда нельзя было воспользоваться существующим синтаксисом двоеточия, который позволяет после "базового" класса указать (через запятую) все интерфейсы которые мы хотим реализовать (расширить)?

  • @anatoly-k
    @anatoly-k Před 3 měsíci +1

    Да, мы любим короткие выпуски

    • @tt0nix
      @tt0nix Před 2 měsíci

      А короткие, это сколько по времени?