Компания Microsoft представила новый значительный выпуск открытой платформы .NET 6, созданной благодаря унификации продуктов .NET Framework, .NET Core и Mono. На основе .NET 6 можно создавать многоплатформенные приложения для браузера, облачных систем, рабочего стола, IoT-устройств и мобильных платформ, используя единые библиотеки и общий процесс сборки, не зависящий от типа приложения. Сборки .NET SDK 6, .NET Runtime 6 и ASP.NET Core Runtime 6 сформированы для Linux, macOS и Windows. .NET Desktop Runtime 6 поставляется только для Windows. Связанные с проектом наработки распространяются под лицензией MIT...Подробнее: https://www.opennet.me/opennews/art.shtml?num=56124
Пожалуй, один из лучших и проработанных языков программирования в мире.
Согласен.
Если бы майки не прибили его изначально гвоздями к офтопику и не вставляли активно палки в колеса всем пытающимся портировать на другие платформы - давно был бы первым языком по планете.
да, согласен, с++ прекрасен...
SWIFT мощнее
Да ну?
чем?
Чем С++.
> чем?задним приводом
На c# есть xamarin, ты на c# можешь писать нативные приложения под аппле.Свифт кроме аппла нигде не нужен.
У Шарпа нету протоколов да и у плюсов тоже (концепты не протоколы и они Статик)
> У Шарпа нету протоколов да и у плюсов тоже (концепты не протоколы
> и они Статик)https://stackoverflow.com/questions/990360/differences-betwe...
Интерфейсы есть почти во всех языках, включая c#. В свифте они называются протоколами исторически. Там отличия минимальные.
Вот шо ты лезешь, коль совсем не шаришь?Ну давай, найди мне в интерфейсах что-либо из "associated values" с "where" ограничителями.
Набралось поколение stackoverflow разрабов, которые принимают любой бред что там плюсуют, за истину в последней инстанции...
Из-за того, что на interface можно наложить дополнительные constraints, он не перестает быть interface.Вы, мако_бы, совсем двинулись в своей секте.
@ Открываешь https://docs.swift.org/swift-book/LanguageGuide/Protocols.html
@ Заменяешь protocol на interface.
@ Смысл не меняется.
Протоколы 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.
Кто тебе такое сказал?
Допустим, с int я не сделаю, но и смысла в этом особого нет.
А вот такое запросто
interface MyInterface<T> where T: SomeClass
{}
> Можешь даже не гуглить, такое ты не сделаешь с классическими интерфейсами не в c#, не в Java.Извините, что посмел с вами спорить. Не заметил, что имею честь говорить с барином
Вы не понимаете, почему в дотнете нельзя ставить ограничение на тип, который наследуется от инта.Вы основ c# не понимаете, но спорите.
Вы кроме свифта хотя бы на уровне HelloWorld что-нибудь писали? Хотя бы на Objective-C?
Потому что C# не может (так сложилось исторически), а Swift может, протоколы работают на любые типы данных, им по барабану что от чего наследуется.
> Потому что C# не может (так сложилось исторически), а Swift может, протоколы
> работают на любые типы данных, им по барабану что от чего
> наследуется.от структур нельзя наследоваться в дотнете не потому что "так сложилось" а потому что они намеренно не предназначены для наследования в целях производительности
Да, только возможность требований к ним для обобщений не завезли... Но это же глупо, структуры то разные могут быть! Да и интерфейсы с классами не всегда спасают, допустим я хочу потребовать возможности интерфейсов которые еще не определенны (некоторый срез операций над объектами).
И тут C# окончательно сливается перед Swift'ом...
Можно так :)
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...
А что за бизнес-кейс у вас для ограничения по инту?))
Ok, ты можешь сделать обертки для всех структур - и что? И при этом получаешь тупо тип Т который можешь только присваивать. Или каждый специализировать или писать кучу if'ов в функции на проверку соответствия типа/интерфейса и преобразование, а обобщить не можешь. Соответствие к другому интерфейсу определить не можешь. И интерфейс на соответствие к Self тоже не можешь. Ничего, ничего в .NET 7-8 это завезут!
Вообще, структуры в шарпе почти не используются, кроме очень мелких типа Point (x, y)
У них тип - значение. Зачем их использовать, если есть классы?
> Вообще, структуры в шарпе почти не используются, кроме очень мелких типа Point
> (x, y)
> У них тип - значение. Зачем их использовать, если есть классы?Оптимизации
> ОптимизацииГде-то ходят в инете бенчмарки, что после 30-40 байт структуры начинают проигрывать в производительности. Поэтому и используют только мелкие. И это ещё если boxing/unboxing не будет.
> Да, только возможность требований к ним для обобщений не завезли... Но это
> же глупо, структуры то разные могут быть! Да и интерфейсы с
> классами не всегда спасают, допустим я хочу потребовать возможности интерфейсов которые
> еще не определенны (некоторый срез операций над объектами).
> И тут C# окончательно сливается перед Swift'ом...Вы можете конкретный пример привести? У вас какие-то туманные формулировки, и всё, что вы описывали можно реализовать.
Если честно, я не вижу проблемы, которую вы предлагаете решить, кроме того, что крайне категорично втюхиваете окружающим свифт.
Ну свифт и свифт, вроде некоторые ios разработчики на нём пишут, пользуйтесь если нравится.
Да можно на голом Си реализовать много чего практически все, только вопрос как? Насколько просто и обобщенно оптимизировано универсально. Тут же вот ветка что мол С# лучший язык тили тили трали вали, а вот не лучший выходит, в Swift многие вещи через протоколы можно делать более обобщенно не теряя оптимизации и не строча лишний код.
> Да можно на голом Си реализовать много чего практически все, только вопрос
> как? Насколько просто и обобщенно оптимизировано универсально. Тут же вот ветка
> что мол С# лучший язык тили тили трали вали, а вот
> не лучший выходит, в Swift многие вещи через протоколы можно делать
> более обобщенно не теряя оптимизации и не строча лишний код.что реализовать ? Какие веши?
> строча лишний код.
У меня вчера коллега сделал "более обобщенно не теряя оптимизации и не строча лишний код.",
правда ему потребовалось добавить многопоточный абстрактный полиморфный фреймворк-коллекцию.Правда, я не стал ему говорить, что его проблема уже решена классом в 100 строк.
Ok, напишите на C# требование к типу:protocol MyProtocol
{
func MyFunc(_ a: Self) -> Self
}А мы с вашим коллегой на это посмотрим
> Ok, напишите на C# требование к типу:
> protocol MyProtocol
> {
> func MyFunc(_ a: Self) -> Self
> }💁♂️
interface MyProtocol<T>
where T : MyProtocol<T>
{
public T MyFunc(T a);
}
Хорошая попытка, но нет :)))
Это не требование к типу, а будет вопрос к классу,
унаследовал он интерфейс MyProtocol<T> или нет.
А тип/класс может иметь функцию без всякого наследования просто MyFunc(T) -> T.
Это же простой вопрос есть ли у типа функция MyFunc или нет.
Вот Swift может, С++ 20 тоже может, неужели С# в .NET6 до сих пор не может такого?
> Хорошая попытка, но нет :)))
> Это не требование к типу, а будет вопрос к классу,
> унаследовал он интерфейс MyProtocol<T> или нет.
> А тип/класс может иметь функцию без всякого наследования просто MyFunc(T) -> T.
> Это же простой вопрос есть ли у типа функция MyFunc или нет.
> Вот Swift может, С++ 20 тоже может, неужели С# в .NET6 до
> сих пор не может такого?Ты должен понимать, что это другой язык програмиирования и в нём ты тех же целей добиваешься другими способами.
Тебе какие-то примеры бесполезно приводить, ты просто фанатик, что-ли.
Что-то ты быстро сдался. Может если C# не может, так хоть F# это сможет?
Что как специалист по .NET скажешь?
Или тоже пшик и мне надо уже окончательно разочароваться в продуктах от MS?
> Что-то ты быстро сдался. Может если C# не может, так хоть F#
> это сможет?
> Что как специалист по .NET скажешь?
> Или тоже пшик и мне надо уже окончательно разочароваться в продуктах от
> MS?Ну я сдался потому что либо ты тонко троллишь, либо ты требуешь, чтобы с# был свифтом.
Это как бы я настаивал на том, что свифт "хуже" потому что в нём нельзя делать вот так:
Some a = new();
Думаю, я в ответ получил бы закономерный ответ, что переменные в свифте немного другим синтаксисом объявляются.
Опять же, протоколы в свифте это наследие objective-c. В свифте не могло быть по другому, а ты выставляешь это как киллер-фичу и приемуещество.
Отстань, сектант
Хиленькая отмазка - не принимается.
Так же и в С++ могли сказать: "А вы знаете а это можно сделать, но по другому, например через... классы или шаблоны... а давайте лучше не будем об этом". Но взяли и в С++ 20 реализовали концепты.
А С# до сих пор не может выходит?
> А тип/класс может иметь функцию без всякого наследования просто 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();
> Ok, напишите на C# требование к типу:
> protocol MyProtocol
> {
> func MyFunc(_ a: Self) -> Self
> }Круто когда есть фича в языке, благодаря которой можно коллегам голову взрывать, да? В С# таких очень много, мы сейчас их повально выкидываем.
Приходим к тому, что лучшиий код - простой код. Мы сейчас половину дженериков повыкидывали, чтобы можно было явно найти, что и где используется.
Как вы в свифте в коде копаетесь мне вообще не понятно. У вас же икскод, а он же ооочень упрощённый. + полиморфизм
> такое ты не сделаешь с классическими интерфейсами не в c#, не в Java.Нынешний C++ ещё и не так может.
А ты никогда не задумывался, почему в Ada есть понятия interface и generic?
Протоколы Swift вобрали в себя мощь и того и другого, поэтому Ява и Си Шарп со своими ООП интерфейсами уже не могут тягаться со Swift'ом по своим возможностям
На, просвещайся
https://docs.microsoft.com/en-us/dotnet/csharp/programming-g...
Ну если уже говорить в ключе что есть, а чего нету и из-за сомнительной возможности что-то делать выявлять лидера, то давай поговорим про реализацию linq через yield и ассортимент методов для работы с перечислениямиСколько итераций сделает swift в таком теоритическом примере?
[1..1000000].filter().map()
// В .net будет 1 полный пробегА в таком?
[1..1000000].map().first()
// В .net будет одна итерацияПримеры не из жизни, просто чтобы обозначить проблему.
Если ничего не изменилось за 2 года, то в swift нет даже и половины возможностей linq. Код объёмнее за счёт обильного количества циклов за счёт отсутствия элементарных методов у коллекций. О какой элегантности тут может идти речь?
Продолжать можно долго, но имеет ли смысл спорить на тему абсолютно разных платформ в разных нишах?
> Сколько итераций сделает 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
Я не swift разработчик, я просто загуглил swift map и глянул возвращаемое значение. Хорошо если так
Остальные вопросы остаются открытими
Наоборот
Немногие достоинства опираются на близость к платформе и заточку под вынь
Шаг в сторону и нужны костыли
Поэтому кроссплатформ осталась именно ява, как прототип сабжа
И никто никуда не полетел
Шарп к яве мало отношения имеет.
> Шарп к яве мало отношения имеет.Думаю ни для кого не секрет, что в своё время Microsoft мягко говоря вдохновлялась java. Есть ещё шутка, что .net - это Microsoft Java.
Но зря минусуете оратора выше - и платформа и язык уже сильно преобразились и во многих аспектах, осмелюсь сказать, ушли вперёд
>> Шарп к яве мало отношения имеет.
> Думаю ни для кого не секрет, что в своё время Microsoft мягко
> говоря вдохновлялась java. Есть ещё шутка, что .net - это Microsoft
> Java.Они вдохновлялись Делфи насколько я знаю.
Они рекламировали дотнет как замену для жавы, очень активно.
Так же в своём маркетинге много уделяли внимания близости синтаксиса шарпа к с++(мол ненужно ничего учить всё знакомо и понятно)Но с жавой дотнет имеет только то сходство что он не в нативный код компилируется.
А схожесть с с++ исключительно поверхностная.
Для меня секрет почему это для многих секрет когда это было понятно и известно во времена появления дотнета.
Как по мне .net 1-2 старались быть просто "как джава". Помимо clr/jvm, IL/byte code схожая философия, компоненты, оопшная часть. Я не могу найти столько общего ни с одной другой платформой.
Акцентирую внимание, что я веду речь про первые версии, далее вектор явно сменился
В джаве были/есть компоненты?Вот например историческое свидетельство:
http://codebetter.com/petervanooijen/2005/12/28/c-sharp-and-.../>In those days most Delphi people considered C#/.NET a (bad) copy of Object Pascal/VCL framework. C sharp as a synonym for D(elphi) flat. Which, amongst less amusing ones, resulted in musical discussions.
Но должно быть много других, если ещё энтропия их не стёрла.
Для меня дотнет и джава всегда были вещами совершенно разными.
Да, виртуальная машина, байткод, идеи похожие, но реализация ведь другая.
Вы наверное ведете речь про Win Forms / WPF, тут вы правы - явно вдохновлялись делфиНо если взять сам язык, стандартные библиотеки классов и инструменты, то можно увидеть много сходств.
Когда-то давно я пробовал писать на джаве (будучи .net разработчиком). Мне не приходилось гуглить синтаксис, не приходилось глубоко изучать аттрибуты и рефлексию, даже названия многих стандартных методов были вполне интуитивны после .net. В ООПшной части наткнулся буквально на несколько минорных различий, но, естественно, просидел час дебажа почему сравнение одинаковых строк через == не работает XD
Так всё-таки разницу вы ощутили.
А на Делфи вам приходилось писать?
Было дело. Паскаль, конечно, даже не родственник c#, а десктопные компоненты да, похожие. Но я не считаю инструменты разработки под десктоп чем-то фундаментальным, это всего лишь один из возможных типов проекта
Речь про Объектный Паскаль.
Вы же знаете чем занимался создатель Шарпа да создания Шарпа?
> Речь про Объектный Паскаль.
> Вы же знаете чем занимался создатель Шарпа да создания Шарпа?Он создатель turbo pascal, object pascal - поделие apple
>не приходилось глубоко изучать аттрибуты и рефлексию, даже названия многих стандартных методов были вполне интуитивныЯ так могу про любой язык с стандартным ООП сказать.
Например про питон.
Вы кстати С++ использовали? После С++ всё эти языки с ходу понятны. Потому что "похожи" и с пониманием потрохов данным С++ никакой магии не представляют.Но повторюсь, внешняя схожесть ничего ещё не говорит о истинной сути вещей.
Так можно сказать что Байден похож на Трампа, две руки две ноги нос голова глаза, одно и то же.
> Да, виртуальная машина, байткод, идеи похожие, но реализация ведь другая.На самом деле сишарп не просто вдохновлён, а на начальных этапах скопирован с джавы, вместе со всеми ошибками.
Например ковариантность массивов https://codeblog.jonskeet.uk/2013/06/22/array-covariance-not.../
Или методы Object
https://codeblog.jonskeet.uk/2008/12/05/redesigning-system-o.../
Но сам язык в конце концов хороший и удобный
>Например ковариантность массивовЭто просто логично, только так и должно быть.
Если это в жаве то потому что это логично.Я бы вообще конечно возможность сделать object[] objects = strings; из языка убрал, это не здорово так делать. Могу предположить что очень редко может пригодиться но лучше без этого.
Вечное System.Console.WriteLine() vs System.out.println().
Ничто не способно заменить прожорливость Java в отношении оперативной памяти у.
GraalVM Native Image
> Ничто не способно заменить прожорливость Java в отношении оперативной памяти у.Прожорливость жавы на самом деле миф созданным стараниями программистов кровавого энтерпрайза.
Верно то, что небрежно написанное жава приложение с куда большей вероятностью будет поглощать память нежели сишное. Правда у сишного с большей вероятностью память потечёт.
js: "Hold my beer"
> и платформа и язык уже сильно
> преобразились и во многих аспектах, осмелюсь сказать, ушли вперёдВы о шарпе видимо. Да, и платформа и язык получили много развития.
в принципе любая скриптовая муть более менее кроссплатформенна не только ява, последнюю просто раскормили
>[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
> Пожалуй, один из лучших и проработанных языков программирования в мире.язык хрень, вы предвзяты.
первое что бросается в глаза - избыточный синтаксис.
в с++ достаточно написать public: и все методы и переменные класса станут публичными. Пишешь другой спецификатор, к примеру private: и дальше все приватное.в шарпе надо писать public перед каждой переменной и методом.
это избыточно и не нужно.
не могли нормально сделать? нахрен этот мусор синтаксический?и в конце концов с каких пор стали доверять мелкосоту?
> в с++ достаточно написать public: и все методы и переменные класса станут публичными.Если для вас это плюс, то вы абсолютно ничего не понимаете в ООП.
Не надо переходить на личности
Тут многие даже в clos понимают, косочек которога ваше как бы ооп и есть
> Если для вас это плюс, то вы абсолютно ничего не понимаете в ООП.Мой код работает в продакшине лет уже 25....
мне не нужно никому ничего доказывать.
Но ты конечно понимаешь и сейчас всем расскажешь.Не смеши, ты тут главный неосилятор программирования в целом. за 41 год даже до элементарного кода не дорос.
Плюсую адеквата.
Избыточность никогда не была чем-то плохим.
А сравнение с с++ странно.Интересно что вы о Аде скажите.
Давайте, всё же, без фанатизма. Если на каждый чих сто кило бойлерплейта, то избыточность будет "чем-то плохим".
Синдром утенка.В с++ каждый раз приходится скроллить чтобы понять область видимости. Это не есть гуд.
зачем скролть в notepad редактируете код?любая вменяемая IDE даст подсказку по типу видимости и аргументам в виде иконки или всплывающего тултипа или можно посмотреть в окне браузера класса
А помимо модификаторов нужно ещё и явные приведения делать гораздо чаще, чем в плюсах. Давно явность - это минус?
> первое что бросается в глаза - избыточный синтаксис.А если сложнее Hello World, то всё наоборот.
Пусть есть интерфейс (абстрактный класс) и 2 прямых наследника в каждом из которых есть динамическое выделение памяти (двумерные массивы-буферы). Абстрактный класс задаёт интерфейсы по работе. Первый наследник добавляет работу с первым буфером, второй наследник от первого наследника добавляет второй буфер, перегружает виртуальные методы по-своему и добавляет свои.
И пусть есть статическая функция, которая, принимает в качестве аргумента типы первого наследника и второго наследника, цель которое менять реальные значения внутри этих самых массивов-буферов.
Ну так вот. Вы в С++ напишите такую поэму с передачей указателя на буферы и виртуальными деструкторами, что переосмыслите свой предыдущий комментарий. А если у вас есть вторая статическая функция, которой нужны копии и третья, которой нужны полные копии вы упишитесь конструкторами копирования на все возможные случаи.
Для сравнения шарпе вы пишите только реализацию глубокого копирования, деструкторы только в случае потоков да и то вам скорее нужен просто IDispose. И ссылки в шарпе работают как надо, а не как в крестах.
И это я еще про итераторы в с++ молчу.
Есть разница между тем чтобы явно указывать модификаторы public перед каждой функцией и писать реализацию тонны рутинного мусора, которая в с++ обязательна для выполнения типовых задач.
> И ссылки в шарпе работают как надо, а не как в крестах.А как надо?
Видимо как в shared_ptr. По крайней мере так работают ссылки в C# и Java.
Настоящий синтаксический мусор - это header-файлы и вот эти вот :: постоянные приколы в плюсах))
> первое что бросается в глаза - избыточный синтаксис.В c# всё по умолчанию приватно. Публики добавляются только по необходимости.
> нахрен этот мусор синтаксический?
Судя по категоричности вашего сообщения, вы делаете выводы о языке в целом по одной мелочи, которой большинство вообще не придаёт внимания.
Сообщил как ядро или ось соберут на этом ...
Операционная система Cosmos написана на C#. Язык поддерживает работу с сырыми указателями, поэтому можно на нём писать как на Си. На этой урезанной версии языка уже можно делать runtime для полноценного C#.
>Пожалуй, один из лучших и проработанных языков программирования в мире.F#? Да, согласен.
>Пожалуй, один из лучших и проработанных языков программирования в мире.Ты чё? А как же Rust?
Ээээ, "WPF, Windows Forms" - неужели под линукс завесли??
Да давно в Моно работает
Написано же ".NET Desktop Runtime 6 поставляется только для Windows"
WinForms есть под Mono - и настоящая (но под Linux корявая и лишённая визуального дизайнера в котором весь смак, зато реально кроссплатформенная), и ещё более нативная для Linux GTK#.У WPF есть кроссплатформенный клон Avalonia. Если сейчас мне придётся забабахать пользовательский интерфейс то я выберу именно её.
Спс. Обязательно гляну.
MAUI - это, по сути, бывший Xamarin Forms, только из него поддержку линукса нагло вырвали
А реально работать в прод на .net под ляликсом? Или никто такого на работу не возьмёт?
А смысл?
Дуракам закон не писан
у меня крутится прод под дотнетом на centos
Уже давно. А вы думаете кто-то кроме кровавого энтерпрайза ещё делает продакшн веб на винде?
Реально. И mono, и .net core. Вполне себе работает. Причём разрабы живут на венде, а прод — на красной шапке.
Видал такое. Консольный моно, разлитый по виртуалкам на редхате. И крошится он тоже знатно.
У нас уже давно оно просто так, от нечего делать, не падает. А корка даже постабильнее будет и лучше по одинаковости поведения с вендой.
Вообще, проблем типа «в венде работает, а в линуксе валится» с коркой как-то и не припомню. Каждый раз, когда нечто подобное было, оказывалось что в венде у разрабов настройки приложения немного другие, файлики с данными другие и тд. Как только песочницу синхронизировали с продом — проблема воспроизводилась.
а я и не говорил что оно в венде работает :D
Если говорить про веб, то без проблем крутится в линуксе. Был как-то на проекте, где не было ни одного .net разработчика, работающего на винде
что у них в качестве средств разработки?пока только сервер у нас на линуксе, но планируем дев машины тоже перевести
выбор небольшой либо мак и бывшая монодеволоп (но причесанна и с поддержкой от мс) либо линукс и дотдевелоп, либо райдер со всеми вытекающими
raider прекрасен, какие тут вытекающие? 2 мини минуса - стоимость (хотя дешевле чем vs professional) и малость запаздывающая поддержка новых релизов. остальное - jetbrains наше всё.
хотя vscode вроде не так плох для .net core
Что-то так и не смог пересесть на Rider. Но вот их DataGrip просто божественный, всякие навикаты идут лесом
Ну что поделать. Я заметил, что все прелести райдера в мелочах, которые обнаруживаешь спустя год работы.Я вообще продукты джет брейнсов люблю.
> raider прекрасен, какие тут вытекающие? 2 мини минуса - стоимость (хотя дешевле
> чем vs professional) и малость запаздывающая поддержка новых релизов. остальное -
> jetbrains наше всё.
> хотя vscode вроде не так плох для .net coreрайдер вечная бета за счет разработчиков, да лучше, чем ничего, на фоне отсутствия конкурентов, но вашего свинячего восторга не разделяю, точнее не совсем так... я тоже сильно раздухарился как только он вышел и но сразу поутих как только столкнулся с реальными проблемы дальше hello world
возможно я тоже буду долбить саппорт в желании наладить рабочие процессы под линхой, но вот с опаской я смотрю на эти тикеты висящие месяцами и даже годами на yourtrack
а я не смотрю, а работаю в raider с почти что первого релиза. сначала по виндой, ща под линух. при этом... у меня полная подписка на jetbrains, и я пользую еще pycharm, datagrip, android studio... и внезапно, проекты нифига не хэллоуворлд. но все работает. ну иногда глючит. но не чаще чем студия под виндой.
> а я не смотрю, а работаю в raider с почти что первого
> релиза. сначала по виндой, ща под линух. при этом... у меня
> полная подписка на jetbrains, и я пользую еще pycharm, datagrip, android
> studio... и внезапно, проекты нифига не хэллоуворлд. но все работает. ну
> иногда глючит. но не чаще чем студия под виндой.студия начала глючить когда индусов пустили ее на xproj переделывать, но потом все сильно быстро починили
а вот райдер не вылазит из состояния, когда проекты не пашут в принципе,
если изначально проект создавался в VS, то Rider будет глючить капитально,
один applicationhost.config чего только стоит
Ой, вот эта шляпа от свидетелей безбажного зелёного никогда... там раньше 2012-ой вообще всё было тлен и печалька, крэшило, особенно при наличии сторонних компонент, просто адски.Ну и про райдер - у вас какой-то странный опыт. Выглядит как вы один раз что-то не так сделали, не разобрались где сами накосячили и ушли обиженные
На работе и дома уже давно бубунта. Жизнь стала гораздо спокойнее. Никаких сюрпризов в духе "Шиндошс-8 -- отошёл на час -- Шиндошс-10". VS Code -- дом родной. Go, python3, oberon7, FreePascal.
Я бы поставил тебе плюсы, будь в твоём списке плюсы...
> Я бы поставил тебе плюсы, будь в твоём списке плюсы...Я поставил тебе минус. В твоём списке одни минусы.
Запомни. аноним: с волками жить -- по волчьи выть.
Какой примитив... В твоей бинарной логике нет понятия нуля или "не ставить"? Ну, так я поясню: не ставить плюс != ставить минус.
> Какой примитив... В твоей бинарной логике нет понятия нуля или "не ставить"?
> Ну, так я поясню: не ставить плюс != ставить минус.Ну да, ну да. Знакомая буржуазная логика. Кому бы повыгодней лизнуть сапожок. Кто не с нами -- тот против нас.
Oberon7 ? У вас есть прод на Обероне?
> Oberon7 ? У вас есть прод на Обероне?Если полевые устройства считать продом -- да, есть. Полно.
БлюПилл с SPI.
VSCode ещё, как вариант
Все на rider. Я быстро привык, через пол года не смог вернуться обратно на vs
>Или никто такого на работу не возьмёту нормальных жабистов сейчас вилка по зп 250-400к (у буржуев от 10к баксов)... смысл извращаться?
Инфраструктура проще в разы. Но глюков пока масса. Это я про LTS-версии. Ну и очень сложно заткнуть телеметрию.
Реально. Если вы воин света и добра, то тут даже больше заход сбоку прокатывает: можно совращать чисто виндовые проекты переползать на лялих и net core.
а поддержка unsafe вставок rust есть?
Там свои unsafe.
https://docs.microsoft.com/en-us/dotnet/csharp/language-refe...
Злой ты, делаешь местным экспертам больно.
все есть
О, вот и платформеры. Прямо платформа платформой погоняет. Тьфу
Добавили экспериментальную поддержку iOS и Android, эксперды opennet'a плачут.
> Добавлена поддержка библиотеки OpenSSL 3это что? откуда? как?
https://wiki.openssl.org/index.php/OpenSSL_3.0
> https://wiki.openssl.org/index.php/OpenSSL_3.0да, я уже (и наконец-то) в курсе. с августа был занят проектами и вот не уследил за таким космическим скачком (1.1.1 -> 3.0) в разработке
"Релиз открытой платформы платформы"
Я просто часто нажимаю Ctrl+V Ctrl+V Ctrl+V Ctrl+V Ctrl+V ...
> Поддержка .NET 6.0 и C# 10 включена в свободный редактор кода Visual Studio Code.Так всё-таки "свободный" или "бесплатный"?
Условно-свободный. Есть распространяемый под свободной лицензией исходный код и форки/сборки. Но этот код, а соответственно и совместимость форков с плагинами не полны. Примерно как Android с Google Play Services.
А не один хрен? Абы бинарник был с цифровой подписью и скачать его можно было бесплатно. Все эти лицензии нормального человека не интересует от слова совсем.
Какие цифровые подписи? Зачем они нормальному человеку? Скачать сетуп.ехе, некст, некст, некст. Всё.
мусье не понимает видимо, что даже у setup.exe может быть цифровая подпись. попробуй правой кнопкой по файлу setup.exe в винде... и там в свойствах... хотя мож че поменялось лет за 10, хз
> Какие цифровые подписи? Зачем они нормальному человеку? Скачать сетуп.ехе, некст, некст,
> некст. Всё.Цифровая подпись гарантирует отсутствие троянов в бинарнике. Это единственная причина почему я ничего не качаю с торрентов, т.к. нет веры васянам которые распространяют хакнутые программы. Вот если бы было всё как в 2000-х, когда для регистрации достаточно было лицензионного ключа, тогда бы качал бинарь с официального сайта разработчика, а с торрентов брал только сирийник.
А зачем мне запариваться о каких-то троянах в бинарнике? Мне пофигу последствия, что юридические с лицензиями, что каким-то там "трояны". ;)
Лицензии разработчика должны интересовать, если он не хочет попасть впросак.
> Лицензии разработчика должны интересовать, если он не хочет попасть впросак.Мне как разработчику-одиночке вообще нacpaть на лицензии. Лицензии у меня никакой нет. Код я свой не свечу, распространяю только бинарники "как есть" вот уже почти 30 лет. И все должны так делать. Бюрократия ни к чему.
https://github.com/microsoft/vscode
Комментарии на Опеннете – это как комментарии в одноклассниках мира IT. Особенно забавно читать про избыточность синтаксиса из-за спецификаторов public и private, действительно, лучшие специалисты по ООП только на опеннете. А также обязательно часть комментариев про ненавистный мелкософт, пятнадцать лет одно и то же. Однозначно мелкософт для опенсорса чделал больше, чем любая другая корпорация из бигтеха, то ни для кого не секрет.А по теме: однозначно лучший релиз, особенно круто, что полноценно работает Blazor, это и в общем-то полноценная замена фронта на JS для веба и десктопа.
ну я не согласен что нужно омитить модификаторы доступаНО я согласен что избыточность определенная есть, но лучше так, чем майкрософт займется обязаловка и какой-нибудь конченый var стенет безальтернативным и тд.
насчет Blazor есть очень много вопросов: и контролов под него нету, и вопросы интеграции с существующим кодом (хотя вот тут пишут что в 6ом как раз полечили надо проверить пока нет времени), и рантайм который тянет блазор просто огромен, у меня в этот размер умудряется влезть все приложение вместте с картинками и всей логикой и фреймворками и контролами бустрапа.
неплохо, но мы пока подождем, а то мы помним как было с сильверлайтом... тупо просpали денег на разработке притом сильно раньше окончания цикла поддержки.. так что пошли майки наху1
Сильверлайт это всё другое, оно умерло как флеш, а что касается дотнета, то майки до сих пор поддерживают морально устаревший Windows Forms. А контролы это дело наживное, всё будет. Есть много сторонних, а также вполне официальный FluentUI/FastUI.
Насчет синтаксиса категорически не согласен. Мы все как раз и любим шарп за то, чего в других языках нет, и что плохого в var? Microsoft рекомендует использовать var.
Согласен ты или не согласен... Это случилось и теперь тебе с этим жить. Прими это и жизнь станет проще.
Blazor да, тяжёлый. Но сама возможность C# -> wasm крайне интересна. UI можно отрисовывать чем угодно, а логику вынести в легковесный бинарник на C#. И будет песня.
> Blazor да, тяжёлый. Но сама возможность C# -> wasm крайне интересна. UI
> можно отрисовывать чем угодно, а логику вынести в легковесный бинарник на
> C#. И будет песня.не все так сладко, на клиенте в логике приложения 90% кода - это обработка UI
в большинстве приложений нихрена не производится кроме процесинга пользовательской морды
геймдев не в счет, а больше наверное считать то и нечего, кроме крайне редких случаев
так вот сопряжение пользовательских действий и обработчиков оказывается самым слабым местом в вашем подходе
так что на уровне идей всё очень интересно, а на уровне реализации - уровень "Сатья Наделал"
Это не так. Сейчас модные PWA приложения и обрабатывается столько, что приходится разносить по воркерам. Плюс бандлы огромные. wasm всё нужнее.
> Комментарии на Опеннете – это как комментарии в одноклассниках мира IT.Своим комментарием ты только подтвердил это, шайтан.
а ещё более уродский ник слабо было найти?
А если я скажу что избыточный? и что мс расширяет синтаксис, настолько, что мало кто из разработчиков успевает осилисть новые релизы языка? и что это всё хорошо, но очень много, и регулярно хечется сказать горшочек не вари?
> А если я скажу что избыточный? и что мс расширяет синтаксис, настолько,
> что мало кто из разработчиков успевает осилисть новые релизы языка? и
> что это всё хорошо, но очень много, и регулярно хечется сказать
> горшочек не вари?Вам ответят "Если вам не нравится новый синтаксис - не пользуйтесь". А "не пользоваться" вы не сможете потому что все ваши коллеги будут писать так как им нравится
Увы
> А также обязательно часть комментариев про ненавистный мелкософт, пятнадцать лет одно и то же.чего это пятнадцать? опеннет постарше будет.
А несли эту чепуху еще в 90е. Примерно с тем же апломбом и тем же успехом (давится, морщится, блюет - но жрьоооот!)
M$ Java
лишняя сущность
"Бойтесь данайцев дары приносящих!.."А по сути: ещё одна мёртворождённая отрыжка корпорации, к-я никому не нужна при наличии кучи развитых свободных языков.
Куча разных не во всём свободных сводится к python, js, C/C++ и немного Go. Не очень много на самом деле
я бы в свободности go сильно усомнился
быстрее java - там всё же community, пусть и из компораций
java мёртв. Да здравствует kotlin
А jvm для Kotlin кто будет писать, JetBrains? - не смешите мои тапочки.
Про Kotlin native мы в курсе - 10 лет никак не могут разродиться, да и не разродятся.
Да, но зато СКОЛЬКО у нас разных питонов! Полный гадюшник, и не угадаешь, какой будет модно через год!
Так и пое6дим мелкософт!
А как же Ruby, Perl, Crystal, FreePascal?Java, Go, Python - это всё тоже корпоративные отрыжки. Python начинался как свободный, а потом Гвидо продался в Гугл.
После донного с++ или раста это как глоток воздуха.
С такими мыслями тебе на паскаль надо, дотнет делался как жалкая пародия на него.
Вообще никакой связи с паскалем.
Связь есть: один из ключевых архитекторов дотнета, ЕМНИП, раньше разрабатывал Delphi.На этом всё. :-)
По скорости не уступает Java-е на похожих проектах (т.е. в десятки раз быстрее всего скриптового и безтипового). Инфраструктура проще и не такая фрагментированная. Но пока не ясно, что будет с поддержкой и правовыми последствиями использования.
Насколько безопастна эта платформа, друзья?
> Насколько безопастна эта платформа, друзья?Если умеешь выпиливать зонды м знаешь как настроить файрволл -- в целом безопасно.
Файер мало помогает. Вообще, очень уж много всего шлёт и самыми хитрыми путями.
> Файер мало помогает. Вообще, очень уж много всего шлёт и самыми хитрыми
> путями.Файрволл на венде в этом смысле -- бесполезен.
Прошу не путать файрволл от венды и файрволл от бубунты (например).
безопасна, gc делает своё дело.Или вы про что?
Поддержка 3 года как LTS - это вообще ни о чём, слишком мало. И в новости релиза нет списка breaking changes, того, что они поломали с предыдущего релиза. Где можно найти breaking changes?
https://docs.microsoft.com/en-us/dotnet/core/compatibility/6.0
Спасибо. Что-то прям много всего поломали. Какой-нибудь крупный проектс закосом под энтерпрайз как раз три года и будет мигрировать на .net 6. А есть увеличенная поддержка, чтобы не три года, а хотя бы 6-8-10 лет?
нет, все lts у .net core, а теперь просто .net живут 3 года. по современным меркам это не так мало... + миграция не такая ацкая как кажется. проект на 500 тыс строк, переползает на новую версию обычно за неделю. и то все недовольны. 500 тыс строк на .net в сопровождении это не питон или js.
3 года по любым меркам это очень и очень мало. Приходит крупная компания и решает, какую платформу использовать для своего программного продукта, который будет работать в ближайшие 10-15 лет. Допустим, возьмём команду из 10 .net разработчиков (или найдём outsource), они за год-полтора пишут все и внедряют. Дальше их нет смысла держать, достаточно 1-2-3 для тех. сопровождения и правок багов. Причём оплата за задачи, то есть накапливается несколько задач, это оценивается в N часов, вот за эти N часов и идёт оплата. Если программный продукт крупный, то у него будут различные интеграции (с какой-нибудь ERP, 1C и прочей чертовщиной). И тут обычным обновлением версий не обойдешься.И само обновление для крупного программного продукта - процесс более сложный. Нужен план обновления, checklist/тестплан, методика обновления, опытной эксплуатации, решение в вводе новой версии в промышленную эксплуатацию, где донабрать команду на обновление и тестирования и мониторинг, чтобы ничего не отвалилось (в том числе и интеграции). И самое главное - надо обосновать бизнес, зачем он должен на всё это выделять деньги, когда такое обновление приносит ему нулевую выгоду.
Дотнет это...
...когда программа 100КБ стартует пару минут.
Дотнет это...
...когда простейший код нагружает процессор вдвое сильнее оычной проги.
Дотнет это...
...когда окошки мерцают и обновляются с вызовом эпилепсии вместо коллбэков.
Ты что, отобрал первопень у бабки? Верни, вдруг у ней ещё не все одноглазники передохли
Так было раньше, теперь виртуальная машина стартует вместе с виндой и ждет приложения на исполнение.
У Вантуза всегда так: "Да, раньше было плохо, но не сейчас. Потерпите, вот сейчас-то заживём".
Я не настолько поехавший чтоб дотнет подгружать при старте )
Не, я понимаю, что у людей бывает на дотнете прод. Но дома я стараюсь такого не держать. Только какая-нибудь редкая софтина "чтобы открыть файл ультра-экзотического формата", вот как раз эти 100КБ - и грузится минуту. Самое смешное, что огромные Qt (и даже Gtk) софтины под виндой грузятся быстрее и выглядят лучше (но не Gtk).
> теперь виртуальная машина стартует вместе с виндойТ.е. раньше тормоза были при запуске приложения, а теперь - всегда...
>Добавлена поддержка компиляции .NET-кода в представление на WebAssembly.Только наверное бинарник будет полгига весить.
Живой демки на их сайтах найти не удалось...
>> В ASP.NET Core, HttpClient и gRPC добавлена поддержка протокола HTTP/3.А в Apache? Nginx? лет через 5?
.net может и без них. чэсн.
актуальнее nginx, traefik и haproxy
апач как реверспрокси... троху не по назначению
На тебе боже что нам не гоже
Помянем любые начиная Bloatware-вендора.
Ну, вендоры же пишут свои коды, ну а что? А потом их драйверы людям поставляют https://ibb.co/r3f9JyR
https://github.com/dotnet/runtimelab/tree/feature/NativeAOT
Я бы не сказал, что дотнет это bloatware.Изначально Microsoft делал свою реализацию Java, включив её в Win98 и NT. При этом, они делали свою Java так, чтобы программы от сторонних разработчиков зачастую не работали в других реализациях Java (в частности, от Sun). А так как Windows установлена на 99% домашних компов и офисных рабочих станций, всё шло к тому, что официальной "явой" никто не будет пользоваться, придя к массовому мнению, что "на ней ничего не работает".
Это называется EEE (но не ноут от ASUS, а другое).
Sun увидела, к чему это идёт, и запретила Майкрософту делать такое по суду. Те обиделись и сказали "мы сделаем свою Яву!". Только не в плане очередной реализации Java, а совершенно другой язык, вдохновлённый Явой.
И сделали. Получился реально кроссплатформенный .NET, когда для 32- и 64-битных систем подходит один бинарник. По-идее, этот же бинарник подходит и для других ОС... если бы там был .NET
И Мигель Де Икаса стал делать .NET на другие ОС, назвав его Mono. Это реально работало. А если кому-то хочется назвать его предателем, просто вспомните, что в составе GCC в то же самое время разрабатывали компилятор Java-кода GCJ - это что же получается, GCC тоже предатели? Учитывая, что на тот момент Java была проприетарной, а разработчики проекта GCC пытались сделать её более открытой.
Странно, что .NET не был опенсорсным изначально. Учитывая, как проги под него стали запускаться на других платформах с минимальными усилиями благодаря Мигелю и его команде.
Но стоит вспомнить, что и Java тоже была с закрытым кодом до 2008 года.
А Майкрософт тогда с опенсорсом враждовала. Потом сменилось руководство, отношение к линуксу изменилось, и .NET открыли, как в своё время открыли Java.