Здравствуйте, Codealot, Вы писали:
V>>Суть произошедшего понятна — конфликт метаинформации, из-за чего две взаимодействующие подсистемы рассматривали лейаут объекта в памяти по-разному.
C>И это привело к выходу за массив
За "массив данных" в тексте, плюс говорилось о полях объекта, плюс язык статьи предназначен для неспециалистов, но из описательной части видно, что произошёл выход за границы лейаута объекта в памяти.
А это уже не столь тривиально, как выход за границы массива-сущности ЯП, но в этих тонкостях разбираются только специалисты-айтишники, что выход за пределы данных при обращении к полю структуры — это более обескураживающий сценарий, чем оперирование невалидным индексом при обращении к массиву.
C>а не ошибке типизации
Это ошибка типизации, произошедшая из-за отсутствия полноценной метаинформации в рантайме VM, где такой рантайм следит за тем, чтобы информация о типах была синглтоном.
Это должно объяснять, почему AOT в дотнете не спешат делать для модулей (DLL/so), а лишь для приложения целиком, бо можно нарваться на похожие эффекты.
C>Если ты не облажался, то выхода за массив у тебя быть не должно. Всё остальное — всего лищь оправдания.
А кто перед кем тут оправдывается?
Что за манеры переводить обсуждение технических вещей в тыкание друг друга пальцами?
V>>Вопрос риторический понятно, бо ответ мне хорошо известен — усилиями многих вредителей в отрасли вокруг байт-кодов сложилась нездоровая атмосфера эдакого всепрощенчества.
C>Да ладно, не втирай. Во времена доминирования крестов говнокодеры были такие же, и львиная доля кода работала только благодаря тому, что звезды на текущий момент стояли в правильных созвездиях. Достаточно вспомнить про цирк с CString.Format("%s")
Ну да, теперь говнокодеры подались в другие языки, с другой "планочкой входа".
Теперь пишут на шарпах еще смешнее:
if (result.ToString().ToUpper() == "TRUE")
О чём и речь, что борьбу с говнокодерством некоторые несознательные трансформируют в борьбу с языками.
За это и порка. ))
V>>Например, через создание Span произвольного размера от произвольной управляемой ссылки через InteropServices.
C>Это разве не ансейф?
Запретить unsafe в проекте можно, и когда-то возможность такого запрета подавалась "железобетонным аргументом", почему я и привёл примеры для safe-кода.
V>>Это я наблюдаю каждый день, в т.ч. в экспериментах, в том числе в профайлере смотрю на блоки памяти.
C>"Мамой клянусь" — это не аргумент. Нужно посмотреть на конкретные доки и/или данные, которые можно проверить.
Это просто делёжка информацией, а не "мамой клянусь", бо слишком тривиальные вещи.
Я тебе дал сразу два способа, которые ты можешь проверить за единицы минут.
=============
Вдогонку.
Мне шарп нравится, это удобный инструмент для многих задач.
Мне не нравится отношение некоторых весьма продуктивных здесь в общении товарищей к шарпу и к области байт-кодов в целом.
Ребятки классически с водой выплёскивают ребенка. ))