Комментарии 33
Он также записал упращенный рассказ о современном дотнете и его даже можно использовать как введение в область :)
которая с каждым номером по сути внутри меняется целиком и забивается наработанное предыдущее (принудительный перевод на «новые» технологии)
А можно об этом поподробнее, ибо пишу на шарпе со времен .net2 и как-то не помню такого. Появление ветки .net core и в будущем единого кроссплатформенного .net5 — самое крупное архитектурное изменение фреймворка за всю его историю.
Delphi, так вот откуда у Вас такая лютая обида на .net, значит фреймворк виноват в том, что владельцы и разработчики Delphi облажались, не выдержали конкуренции, и тот в мир иной отошел?
со времен .net2
А почему не с первой версии? И не любовь у меня к .net с неповоротливых контрольных панелей от ATI\AMD и одной утилиты для настройки расходомера, потребовавшей переустанавливать под .net4 ось на рабочем ноутбуке.
Первый блин комом потому что. Я точно не помню что там было такого неправильного в первой версии, но явно не на пустом месте её забыли...
Что же до контрольной панелей и утилит — так представьте что они какой-нибудь новейший Visual C++ рантайм используют, или там 11й DirectX вместо 4.5 .NET Framework. Что-нибудь поменялось?
Ну, во-первых, исходная претензия-то заключалась не в потребляемой памяти. А во-вторых, не любая. Только что проверил — с 1-3 МБ начинается, а не с 20...
разработчики Delphi облажались, не выдержали конкуренции, и тот в мир иной отошелНе отошел, хотя и потерял долю рынка.
Кстати на днях портировал тут проект с D7 (это выпуск 2002г) на актуальную Rio, и особых проблем не получил. Так что оцениваю неплохо.
А если добавить еще лучшую отзывчивость нативного софта…
www.youtube.com/watch?v=0RhjEWVkmSk
Предлагаю забыть про былое, про легаси и попробовать разработку на современном фреймворке — .net core 3.1, или его продолжение .net 5 (но лучше подождать возможного 5.1).
Подход к разработке кора изменился: они сначала догнали легаси, а потом перегнали по количеству доступных API (не были перенесены лишь спорные/ненужные), при этом легаси довольно долго находился на мажорной цифре 4, оставшись в итоге там. Внутренние брекинченжи стараются принимать с большой осторожностью. А если вам не понравилось измененное поведения, то вы можете задать вопрос, указав примеры. Достаточно вспомнить нашумевшие темы: изменение в LINQ или string.IndexOf. То есть, разработчики рантайма прислушиваются к мнению сообщества.
К тому же, у вас есть возможность посодействовать развитию дотнета, исправив баги в BCL, или выдвинув Proposal, или опуститься вниз к JIT.
И это только то, что касается dotnet/runtime
Из чистого любопытства, WCF вы относите к спорным или ненужным? Потому как именно его отсутствие блочит портирование огромного количества библиотек и приложений на .net core.
Впрочем, по текущей статье переход на Коре 3.1 /5 будет не таким уж гладким. Хотя компиляция в нативный код может во многих случаях стоить того.
".NET Core работает с WPF и WinForms"
Я так и не понял, получается сейчас на линуксе работают WPF и WinForms?
Как видим, вывод простого Hello world занимает у нас 2–3 секунды. Давайте разберёмся, почему так долго
Мне вот интерестно, никому не приходит в голову что вывод одной строки занимает 2–3 секунды потому что Скотт Хансельмана и прочие руководители плохо выполняют свою работу и пора бы их выгнать или заставить заниматься делом
Статью не читал, но осуждаю.
Перечитайте внимательней.
2-3 секунды из-за сборки и установки пакетов.
Запустив исполняемый файл напрямую всё работает быстро.
Вот кстати кто-то тестирует компиляцию Hello word. На Java занимает 0.3 секунды, а у Скота — 2-3. Почему им никто не задает такие вопросы, как так?
stackoverflow.com/questions/2531616/why-is-the-clojure-hello-world-program-so-slow-compared-to-java-and-python
Почему им никто не задает такие вопросы, как так?
Потому что, на самом деле, всё немного иначе.
Как сказали выше, первая сборка происходит медленно т.к. собираются зависимости, востанавливаются пакеты.
Последующие сборки происходят куда быстрее:
First build run:
dotnet build ## Time Elapsed 00:00:01.16
Subsequent build run (no changes):
dotnet build ## Time Elapsed 00:00:00.78
Subsequent build run (with changes):
dotnet build ## Time Elapsed 00:00:00.94
No package restore (with changes):
dotnet build --no-restore ## Time Elapsed 00:00:00.61
No package restore (no changes):
dotnet build --no-restore ## Time Elapsed 00:00:00.46
Справедливости ради у джавистов сейчас есть Kotlin. Конечно, рантайм у Java объективно похуже по скорости чем CLR, но вот Kotlin… просто шикарен и потеснил в моем личном списке C# с первого места.
Только представьте, язык построенный на минимуме базовых синтаксических инструкций наворачивает все дополнительные фичи через встраиваемые лямбды и extension-ы. Таким образом сохраняется удивительная стройность, любую казалось бы, синтаксическую, фичу языка вроде lazy, мутаторов, можно просто глянуть в исходниках стандартной библиотеки и сразу понять как она работает.
Нет ощущения синтаксической нагромождености как с нововведениями C# 8..9, где разработчики пошли по пути добавления новых конструкций в сам язык, намертво зашивая их реализацию в компиляторе.
Помимо этого, в Kotlin изначально все заточено на иммутабельность и отсутствие синтаксических нагромождений, вроде top-level функций, отсутствия ';', все поля класса — на самом деле сразу свойства, и т. п.
все заточено на иммутабельность и отсутствие синтаксических нагромождений, вроде top-level функций, отсутствия ';', все поля класса — на самом деле сразу свойства, и т. п.
это всё есть в F#
F# в первую очередь функциональный язык и полигон для предварительной обкатки синтаксических трюков C#. Поэтому, F# не заточен под разработку типичных сценариев с которыми мы сталкиваемся в C# и Java, а предлагает иную парадигму мышления.
Kotlin же, не предлагает менять мышление, а по настоящему доводит до ума наш обычный ООП-подход. Кроме того, в F# нет встраиваемых лямбд и такой простоты расширения синтаксиса "из коробки" =)
Принт на майке шикарен. Интересно, это выражение любви, ненависти или предупреждение?
.NET в целом: обзор от Скотта Хансельмана