The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз платформы .NET 6, opennews (??), 08-Ноя-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


28. "Релиз платформы .NET 6"  +2 +/
Сообщение от trdm (ok), 08-Ноя-21, 23:52 
да, согласен, с++ прекрасен...
Ответить | Правка | Наверх | Cообщить модератору

57. "Релиз платформы .NET 6"  –12 +/
Сообщение от simple_user (??), 09-Ноя-21, 02:18 
SWIFT мощнее
Ответить | Правка | Наверх | Cообщить модератору

60. "Релиз платформы .NET 6"  –1 +/
Сообщение от Степан (?), 09-Ноя-21, 02:28 
Да ну?
Ответить | Правка | Наверх | Cообщить модератору

66. "Релиз платформы .NET 6"  +3 +/
Сообщение от kissmyass (?), 09-Ноя-21, 04:06 
чем?
Ответить | Правка | К родителю #57 | Наверх | Cообщить модератору

129. "Релиз платформы .NET 6"  –3 +/
Сообщение от asand3r (ok), 09-Ноя-21, 09:26 
Чем С++.
Ответить | Правка | Наверх | Cообщить модератору

289. "Релиз платформы .NET 6"  +/
Сообщение от заминированный тапок (ok), 04-Дек-21, 21:13 
> чем?

задним приводом

Ответить | Правка | К родителю #66 | Наверх | Cообщить модератору

105. "Релиз платформы .NET 6"  +3 +/
Сообщение от морошка ягодка такая (?), 09-Ноя-21, 08:04 
На c# есть xamarin, ты на c# можешь писать нативные приложения под аппле.

Свифт кроме аппла нигде не нужен.

Ответить | Правка | К родителю #57 | Наверх | Cообщить модератору

106. "Релиз платформы .NET 6"  –5 +/
Сообщение от simple_user (??), 09-Ноя-21, 08:12 
У Шарпа нету протоколов да и у плюсов тоже (концепты не протоколы и они Статик)
Ответить | Правка | Наверх | Cообщить модератору

122. "Релиз платформы .NET 6"  +4 +/
Сообщение от морошка ягодка такая (?), 09-Ноя-21, 08:59 
> У Шарпа нету протоколов да и у плюсов тоже (концепты не протоколы
> и они Статик)

https://stackoverflow.com/questions/990360/differences-betwe...

Интерфейсы есть почти во всех языках, включая c#. В свифте они называются протоколами исторически. Там отличия минимальные.

Ответить | Правка | Наверх | Cообщить модератору

174. "Релиз платформы .NET 6"  –5 +/
Сообщение от Разраб (?), 09-Ноя-21, 13:02 
Вот шо ты лезешь, коль совсем не шаришь?

Ну давай, найди мне в интерфейсах что-либо из "associated values" с "where" ограничителями.

Набралось поколение stackoverflow разрабов, которые принимают любой бред что там плюсуют, за истину в последней инстанции...

Ответить | Правка | Наверх | Cообщить модератору

183. "Релиз платформы .NET 6"  +/
Сообщение от Урри (ok), 09-Ноя-21, 14:12 
Из-за того, что на interface можно наложить дополнительные constraints, он не перестает быть interface.

Вы, мако_бы, совсем двинулись в своей секте.

@ Открываешь https://docs.swift.org/swift-book/LanguageGuide/Protocols.html
@ Заменяешь protocol на interface.
@ Смысл не меняется.

Ответить | Правка | Наверх | Cообщить модератору

189. "Релиз платформы .NET 6"  –2 +/
Сообщение от Разраб (?), 09-Ноя-21, 14:47 
Протоколы swift напоминают классические интерфейсы, но они очень сильно отличаются от своих аналогов в java/c#.
Безусловно, ты можешь просто обозначить:

protocol Test {
     var a: Int { get }
}

--> тут он ничем не отличается от интерфейсов где либо еще.

protocol Test {
     assosiatedType T
    
     var a: T { get }
}

--> Все, такое ты уже не получишь где либо. Да, можно обозначить generics в Java/C#/etc., но это будет совершенно другое и оно не даст тебе продвинутые проверки по типу как:

extension Test where T: Int {

}

extension Test where T: SomeClass {
  
}

Можешь даже не гуглить, такое ты не сделаешь с классическими интерфейсами не в c#, не в Java.

Ответить | Правка | Наверх | Cообщить модератору

214. "Релиз платформы .NET 6"  +1 +/
Сообщение от Анын (ok), 09-Ноя-21, 17:48 
Кто тебе такое сказал?
Допустим, с int я не сделаю, но и смысла в этом особого нет.
А вот такое запросто
    interface MyInterface<T> where T: SomeClass
    {

    }

Ответить | Правка | Наверх | Cообщить модератору

229. "Релиз платформы .NET 6"  +1 +/
Сообщение от Аноним (229), 09-Ноя-21, 19:56 
> Можешь даже не гуглить, такое ты не сделаешь с классическими интерфейсами не в c#, не в Java.

Извините, что посмел с вами спорить. Не заметил, что имею честь говорить с барином

Ответить | Правка | К родителю #189 | Наверх | Cообщить модератору

230. "Релиз платформы .NET 6"  +1 +/
Сообщение от морошка ягодка такая (?), 09-Ноя-21, 20:04 
Вы не понимаете, почему в дотнете нельзя ставить ограничение на тип, который наследуется от инта.

Вы основ c# не понимаете, но спорите.

Вы кроме свифта хотя бы на уровне HelloWorld что-нибудь писали? Хотя бы на Objective-C?

Ответить | Правка | К родителю #189 | Наверх | Cообщить модератору

243. "Релиз платформы .NET 6"  –2 +/
Сообщение от simple_user (??), 10-Ноя-21, 06:51 
Потому что C# не может (так сложилось исторически), а Swift может, протоколы работают на любые типы данных, им по барабану что от чего наследуется.  
Ответить | Правка | Наверх | Cообщить модератору

249. "Релиз платформы .NET 6"  +/
Сообщение от морошка ягодка такая (?), 10-Ноя-21, 11:03 
> Потому что C# не может (так сложилось исторически), а Swift может, протоколы
> работают на любые типы данных, им по барабану что от чего
> наследуется.

от структур нельзя наследоваться в дотнете не потому что "так сложилось" а потому что они намеренно не предназначены для наследования в целях производительности

Ответить | Правка | Наверх | Cообщить модератору

251. "Релиз платформы .NET 6"  +/
Сообщение от simple_user (??), 10-Ноя-21, 11:46 
Да, только возможность требований к ним для обобщений не завезли... Но это же глупо, структуры то разные могут быть! Да и интерфейсы с классами не всегда спасают, допустим я хочу потребовать возможности интерфейсов которые еще не определенны (некоторый срез операций над объектами).
И тут C# окончательно сливается перед Swift'ом...
Ответить | Правка | К родителю #249 | Наверх | Cообщить модератору

253. "Релиз платформы .NET 6"  +/
Сообщение от Анын (ok), 10-Ноя-21, 12:30 
Можно так :)
struct, в данном случае, не означает именно структуры. The type argument must be a non-nullable value type.

    interface MyIntInterface<T> where T : struct
    {
        void MyMethod(T input);
    }

    class MyIntClass : MyIntInterface<int>
    {
        public void MyMethod(int input)
        {
            throw new NotImplementedException();
        }
    }

Вообще, тут можно почитать https://docs.microsoft.com/en-us/dotnet/csharp/programming-g...

А что за бизнес-кейс у вас для ограничения по инту?))

Ответить | Правка | К родителю #251 | Наверх | Cообщить модератору

262. "Релиз платформы .NET 6"  +/
Сообщение от simple_user (??), 10-Ноя-21, 19:20 
Ok, ты можешь сделать обертки для всех структур - и что? И при этом получаешь тупо тип Т который можешь только присваивать. Или каждый специализировать или писать кучу if'ов в функции на проверку соответствия типа/интерфейса и преобразование, а обобщить не можешь. Соответствие к другому интерфейсу определить не можешь. И интерфейс на соответствие к Self тоже не можешь. Ничего, ничего в .NET 7-8 это завезут!
Ответить | Правка | К родителю #253 | Наверх | Cообщить модератору

254. "Релиз платформы .NET 6"  +/
Сообщение от Анын (ok), 10-Ноя-21, 12:37 
Вообще, структуры в шарпе почти не используются, кроме очень мелких типа Point (x, y)
У них тип - значение. Зачем их использовать, если есть классы?
Ответить | Правка | К родителю #251 | Наверх | Cообщить модератору

263. "Релиз платформы .NET 6"  +/
Сообщение от морошка ягодка такая (?), 10-Ноя-21, 20:06 
> Вообще, структуры в шарпе почти не используются, кроме очень мелких типа Point
> (x, y)
> У них тип - значение. Зачем их использовать, если есть классы?

Оптимизации

Ответить | Правка | К родителю #254 | Наверх | Cообщить модератору

266. "Релиз платформы .NET 6"  +/
Сообщение от Анын (ok), 10-Ноя-21, 23:52 
> Оптимизации

Где-то ходят в инете бенчмарки, что после 30-40 байт структуры начинают проигрывать в производительности. Поэтому и используют только мелкие. И это ещё если boxing/unboxing не будет.

Ответить | Правка | К родителю #263 | Наверх | Cообщить модератору

264. "Релиз платформы .NET 6"  +/
Сообщение от морошка ягодка такая (?), 10-Ноя-21, 20:16 
> Да, только возможность требований к ним для обобщений не завезли... Но это
> же глупо, структуры то разные могут быть! Да и интерфейсы с
> классами не всегда спасают, допустим я хочу потребовать возможности интерфейсов которые
> еще не определенны (некоторый срез операций над объектами).
> И тут C# окончательно сливается перед Swift'ом...

Вы можете конкретный пример привести? У вас какие-то туманные формулировки, и всё, что вы описывали можно реализовать.

Если честно, я не вижу проблемы, которую вы предлагаете решить, кроме того, что крайне категорично втюхиваете окружающим свифт.

Ну свифт и свифт, вроде некоторые ios разработчики на нём пишут, пользуйтесь если нравится.

Ответить | Правка | К родителю #251 | Наверх | Cообщить модератору

273. "Релиз платформы .NET 6"  –1 +/
Сообщение от simple_user (??), 13-Ноя-21, 04:50 
Да можно на голом Си реализовать много чего практически все, только вопрос как? Насколько просто и обобщенно оптимизировано универсально. Тут же вот ветка что мол С# лучший язык тили тили трали вали, а вот не лучший выходит, в Swift многие вещи через протоколы можно делать более обобщенно не теряя оптимизации и не строча лишний код.
Ответить | Правка | К родителю #264 | Наверх | Cообщить модератору

274. "Релиз платформы .NET 6"  +/
Сообщение от морошка ягодка такая (?), 13-Ноя-21, 08:49 
> Да можно на голом Си реализовать много чего практически все, только вопрос
> как? Насколько просто и обобщенно оптимизировано универсально. Тут же вот ветка
> что мол С# лучший язык тили тили трали вали, а вот
> не лучший выходит, в Swift многие вещи через протоколы можно делать
> более обобщенно не теряя оптимизации и не строча лишний код.

что реализовать ? Какие веши?

> строча лишний код.

У меня вчера коллега сделал "более обобщенно не теряя оптимизации и не строча лишний код.",
правда ему потребовалось добавить многопоточный абстрактный полиморфный фреймворк-коллекцию.

Правда, я не стал ему говорить, что его проблема уже решена классом в 100 строк.

Ответить | Правка | К родителю #273 | Наверх | Cообщить модератору

275. "Релиз платформы .NET 6"  –1 +/
Сообщение от simple_user (??), 13-Ноя-21, 12:08 
Ok, напишите на C# требование к типу:

protocol MyProtocol
{
    func MyFunc(_ a: Self) -> Self
}

А мы с вашим коллегой на это посмотрим

Ответить | Правка | К родителю #274 | Наверх | Cообщить модератору

276. "Релиз платформы .NET 6"  +/
Сообщение от морошка ягодка такая (?), 13-Ноя-21, 13:39 
> Ok, напишите на C# требование к типу:
> protocol MyProtocol
> {
>     func MyFunc(_ a: Self) -> Self
> }

💁‍♂️

interface MyProtocol<T>
    where T : MyProtocol<T>
{
    public T MyFunc(T a);
}

Ответить | Правка | К родителю #275 | Наверх | Cообщить модератору

279. "Релиз платформы .NET 6"  –2 +/
Сообщение от simple_user (??), 13-Ноя-21, 19:06 
Хорошая попытка, но нет :)))
Это не требование к типу, а будет вопрос к классу,
унаследовал он интерфейс MyProtocol<T> или нет.
А тип/класс может иметь функцию без всякого наследования просто MyFunc(T) -> T.  
Это же простой вопрос есть ли у типа функция MyFunc или нет.
Вот Swift может, С++ 20 тоже может, неужели С# в .NET6 до сих пор не может такого?
Ответить | Правка | К родителю #276 | Наверх | Cообщить модератору

280. "Релиз платформы .NET 6"  +1 +/
Сообщение от морошка ягодка такая (?), 13-Ноя-21, 19:24 
> Хорошая попытка, но нет :)))
> Это не требование к типу, а будет вопрос к классу,
> унаследовал он интерфейс MyProtocol<T> или нет.
> А тип/класс может иметь функцию без всякого наследования просто MyFunc(T) -> T.
> Это же простой вопрос есть ли у типа функция MyFunc или нет.
> Вот Swift может, С++ 20 тоже может, неужели С# в .NET6 до
> сих пор не может такого?

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

Тебе какие-то примеры бесполезно приводить, ты просто фанатик, что-ли.

Ответить | Правка | К родителю #279 | Наверх | Cообщить модератору

282. "Релиз платформы .NET 6"  –2 +/
Сообщение от simple_user (??), 14-Ноя-21, 05:55 
Что-то ты быстро сдался. Может если C# не может, так хоть F# это сможет?
Что как специалист по .NET скажешь?
Или тоже пшик и мне надо уже окончательно разочароваться в продуктах от MS?


Ответить | Правка | К родителю #280 | Наверх | Cообщить модератору

283. "Релиз платформы .NET 6"  +1 +/
Сообщение от морошка ягодка такая (?), 14-Ноя-21, 09:15 
> Что-то ты быстро сдался. Может если C# не может, так хоть F#
> это сможет?
> Что как специалист по .NET скажешь?
> Или тоже пшик и мне надо уже окончательно разочароваться в продуктах от
> MS?

Ну я сдался потому что либо ты тонко троллишь, либо ты требуешь, чтобы с# был свифтом.

Это как бы я настаивал на том, что свифт "хуже" потому что в нём нельзя делать вот так:

Some a = new();

Думаю, я в ответ получил бы закономерный ответ, что переменные в свифте немного другим синтаксисом объявляются.

Опять же, протоколы в свифте это наследие objective-c. В свифте не могло быть по другому, а ты выставляешь это как киллер-фичу и приемуещество.

Отстань, сектант

Ответить | Правка | К родителю #282 | Наверх | Cообщить модератору

285. "Релиз платформы .NET 6"  –2 +/
Сообщение от simple_user (??), 14-Ноя-21, 17:26 
Хиленькая отмазка - не принимается.
Так же и в С++ могли сказать: "А вы знаете а это можно сделать, но по другому, например через... классы или шаблоны... а давайте лучше не будем об этом". Но взяли и в С++ 20 реализовали концепты.
А С# до сих пор не может выходит?
Ответить | Правка | К родителю #283 | Наверх | Cообщить модератору

284. "Релиз платформы .NET 6"  +/
Сообщение от Анын (ok), 14-Ноя-21, 10:43 
> А тип/класс может иметь функцию без всякого наследования просто MyFunc(T) -> T.

Похоже, ты про extension method'ы?
Можно так

    public interface IMyProtocol<T> where T : struct
    {
        
    }

    public static class MyExtensions
    {
        public static void MyExtensionMethod(this IMyProtocol<int> myProtocol)
        {
            // ...
        }
    }

    public class Protocol : IMyProtocol<int>
    {
           // ...
    }


Потом где-нибудь в коде я могу сделать так:
            IMyProtocol<int> protocol = new Protocol();
            protocol.MyExtensionMethod();

Ответить | Правка | К родителю #279 | Наверх | Cообщить модератору

277. "Релиз платформы .NET 6"  +/
Сообщение от морошка ягодка такая (?), 13-Ноя-21, 13:48 
> Ok, напишите на C# требование к типу:
> protocol MyProtocol
> {
>     func MyFunc(_ a: Self) -> Self
> }

Круто когда есть фича в языке, благодаря которой можно коллегам голову взрывать, да? В С# таких очень много, мы сейчас их повально выкидываем.

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

Как вы в свифте в коде копаетесь мне вообще не понятно. У вас же икскод, а он же ооочень упрощённый. + полиморфизм

Ответить | Правка | К родителю #275 | Наверх | Cообщить модератору

252. "Релиз платформы .NET 6"  +/
Сообщение от DeadMustdie (??), 10-Ноя-21, 11:47 
> такое ты не сделаешь с классическими интерфейсами не в c#, не в Java.

Нынешний C++ ещё и не так может.

Ответить | Правка | К родителю #189 | Наверх | Cообщить модератору

190. "Релиз платформы .NET 6"  –1 +/
Сообщение от simple_user (??), 09-Ноя-21, 15:15 
А ты никогда не задумывался, почему в Ada есть понятия interface и generic?
Протоколы Swift вобрали в себя мощь и того и другого, поэтому Ява и Си Шарп со своими ООП интерфейсами уже не могут тягаться со Swift'ом по своим возможностям
Ответить | Правка | К родителю #183 | Наверх | Cообщить модератору

215. "Релиз платформы .NET 6"  +/
Сообщение от Анын (ok), 09-Ноя-21, 17:50 
На, просвещайся
https://docs.microsoft.com/en-us/dotnet/csharp/programming-g...
Ответить | Правка | К родителю #174 | Наверх | Cообщить модератору

191. "Релиз платформы .NET 6"  –1 +/
Сообщение от Степан (?), 09-Ноя-21, 15:23 
Ну если уже говорить в ключе что есть, а чего нету и из-за сомнительной возможности что-то делать выявлять лидера, то давай поговорим про реализацию linq через yield и ассортимент методов для работы с перечислениями

Сколько итераций сделает swift в таком теоритическом примере?
[1..1000000].filter().map()
// В .net будет 1 полный пробег

А в таком?
[1..1000000].map().first()
// В .net будет одна итерация

Примеры не из жизни, просто чтобы обозначить проблему.

Если ничего не изменилось за 2 года, то в swift нет даже и половины возможностей linq. Код объёмнее за счёт обильного количества циклов за счёт отсутствия элементарных методов у коллекций. О какой элегантности тут может идти речь?

Продолжать можно долго, но имеет ли смысл спорить на тему абсолютно разных платформ в разных нишах?

Ответить | Правка | К родителю #106 | Наверх | Cообщить модератору

245. "Релиз платформы .NET 6"  +/
Сообщение от simple_user (??), 10-Ноя-21, 07:22 
> Сколько итераций сделает swift в таком теоритическом примере?
> [1..1000000].filter().map()
> // В .net будет 1 полный пробег
> А в таком?
> [1..1000000].map().first()
> // В .net будет одна итерация

Если функция map возвращает итератор, то с чего это вдруг в другом языке будет по другому?
Итератор в Swift это фундаментальные протокол, кроме того в Swift'е есть ключевое слово lazy для лучшей фиксации подобных моментов.

[1, 2, 3, -1, -2].filter({ $0 > 0 }).count // => 3

[1, 2, 3, -1, -2].lazy.filter({ $0 > 0 }).count // => 3

Ответить | Правка | Наверх | Cообщить модератору

256. "Релиз платформы .NET 6"  +/
Сообщение от Степан (?), 10-Ноя-21, 13:14 
Я не swift разработчик, я просто загуглил swift map и глянул возвращаемое значение. Хорошо если так
Остальные вопросы остаются открытими
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру