Pull to refresh
64
0
Павел Тупицын @kefirr

Ignite.NET maintainer

Send message

Да уж, что поделать, программисты пишут неэффективный код (потому что это дешевле и быстрее - рыночек решает) и софт тормозит даже на лучшем железе, а на старом просто не работает.

Великолепная статья, спасибо!

Когда впервые попробовал `ref struct` в деле, сразу Rust вспомнился. Отличная статья, спасибо. Помогла осознать scoped.

Согласен с вышесказанным.

Со структурами в любом виде много граблей. `struct` - это по сути оптимизация и ничего больше. Поэтому стоит как следует подумать, не является ли она преждевременной в каждом конкретном случае.

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

Помимо работы рекомендую потреблять весь интересующий контент тоже на английском - новости, хобби, и так далее. Мне особенно помог Top Gear: любимая телепередача + очень чёткая речь ведущих, легко понимать (в отличие от американского кино, где даже носители не всегда улавливают все слова - Movie Dialogue Has Gotten More Difficult To Understand).

Да, нагрузка на память в Решении 5 ровно такая же, как в Решении 1. Под капотом вызывается RuntimeHelpers.GetSubArray, который создаёт новый массив.

есть массив в мегабайт, далее я создал range на 3 элемента и собираюсь пользоваться только им - не получится ли так, что в памяти будет болтаться 1 мегабайт бесхозной памяти, потому что Span удерживает ссылку на массив в целом

Так и получится. Чудес нет - либо выделяем новый массив из 3 элементов, и старый будет удалён сборщиком мусора, либо делаем AsMemory / AsSpan- очень быстро и не выделяет память, но удерживает большой массив.

Вообще в подобной статье было бы здорово упомянуть AsMemory & AsSpan, они тоже работают с Range:

var numbers = new int[] { 5, 1, 4, 2, 3, 7 };
Memory<int> result = numbers.AsMemory()[2..5];

То есть ты считаешь, что MCAS норм тема, а виноваты пилоты?

Хороший доклад на эту тему https://youtu.be/h4V6V0u__8I

На рейсе 302 ручной привод стабилизатора было физически невозможно провернуть из-за повышенной нагрузки на стабилизатор (примерно 27 минута на видео).

Java streams - бледное подобие LINQ.

  • Гибкость и удобство намного ниже из-за отсутствия extension methods.

Спустя почти сотню лет, Тесла смогла таки воплотить "безкоробочное" решение на своих электрокарах

Большинство электрокаров "безкоробочные", и появилось это "решение" ещё в 19 веке.

https://en.wikipedia.org/wiki/History_of_the_electric_vehicle

Поздние экземпляры набирали 120 км/ч за 10 секунд: https://en.wikipedia.org/wiki/Doble_steam_car

Современное видео Jay Leno's Garage, где понятно, что машина легко набирает скорость: https://www.youtube.com/watch?v=rUg_ukBwsyo

Cross my heart and hope to die ожидал здесь увидеть. Если piece of cake или once in a blue moon можно довольно легко понять из контекста, то эта идиома выглядит совершенно бессмысленной. Часто встречается в песнях.

В статье упущены значительные улучшения single-file applications — почти полностью ушли от распаковки файлов во временную директорию, скорость первого запуска в связи с этим заметно увеличилась.

linqpad

Только windows :(

хочу в перспективе удаленно работать на буржуев

Если это — единственная цель, то ответ — нет. Лучше учить Javascript, вакансий намного больше.


Но если есть цель стать хорошим разрабом, то C# — один из лучших вариантов для обучения, потому что даёт возможность попробовать себя во всех областях (бэк, фронт, игры, мобилки), и даёт понимание разнообразных концепций и подходов (асинхронщина, функциональщина, итд). После опыта с шарпом несложно переходить на другие языки. А вот с жаваскрипта перейти на что-то другое будет посложнее.

Rider и IDEA — это одна и та же IDE, заточенная под разные языки (как и все прочие IDE от жетбрейнс). Пользуюсь и тем и другим ежедневно, под Linux. Возможности примерно одинаковые.

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

Проблема в том, что CompletableFuture — это аналог TaskCompletionSource, возвращать его из public API не айс, это нарушает инкапсуляцию — кто угодно снаружи может вызвать complete(). Казалось бы, можно возвращать CompletionStage, но оно не реализует Future. Более того, у CompletionStage есть toCompletableFuture(), что возвращает нас к изначальной проблеме. Всё это выглядит как ошибка проектирования.


Вышесказанное, а так же исторические причины, приводит к тому, что многие популярные либы возвращают свои собственные фьючи (см Netty, Lettuce). Можно представить, как здорово смотрятся 3 разных фьючи в рамках одного проекта.

Какую роль в 2020 играет регион? Все на удаленке. Важна глобальная ситуация.

На java написано много всякого распределенного и высоконагруженного. См spark, hadoop, kafka, lucene, elasticsearch. На C#/.NET ничего такого практически нет (RavenDB, что ещё?)


Как результат, на C# много вакансий клепать круды и формочки, а на java больше интересных вариантов.

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Registered
Activity