Сообщение Re[28]: .Net на эльбрусах от 07.09.2022 18:40
Изменено 07.09.2022 18:45 vdimas
Re[28]: .Net на эльбрусах
Здравствуйте, Sinclair, Вы писали:
S>Что сдерживает вас от написания трёх строчек кода?
Публикуемый своей рукой код желательно сначала проверить лично.
Чтобы не запутаться, где какая переменная итерируется, берём матрицы разных размерностей (L, M и N как в вики):
В переменных i, j, k это будет:
V>>Да без проблем — допили тот код до работы с произвольными размерами матриц и замерь.
V>>Дай бог получить результаты как у интеловской либы, а замеров по ней в сети хватает.
S>Интеловская либа, судя по найденным мной статьям — ещё не предел.
Боюсь, для того самого общего случая, т.е. стандарта BLAS — предел.
V>>А как они могут гоняться совместно? ))
S>Ну, вас же не смутила ссылка, где совместно гоняется EML и наивный код на Интеле.
Потому что хватает ссылок, где наивный код сравнивается с EML.
Я просмотрел пару таких ссылок, везде ускорение примерно в 10 раз (плюс-минус проценты), позволил себе сделать соотв. прикидки от обсуждаемых цифр.
S>При этом, когда я пишу интринсики, они компилируются ровно в нужные мне векторные команды. А не случайно параллелятся компилятором в зависимости от фазы луны.
Или в зависимости от опции компилятора для целевой архитетуры.
В общем, зря тут упираешься.
V>>Это тебе нет, хотя конкретно тебе говорили, как оно будет, и оно так и было.
V>>Зато ты фантазировал безудержно, помнится.
V>>(не только ты, но ты громче всех)
S>И в итоге оказалось, что всё произошло так, как я говорил, хоть и не сразу
Пока что мало чего произошло, оно только-только начинает происходить (заметные подвижки начались с 5-го и 6-го дотнета ) и это очень надолго.
Тебе сразу говорилось, что до твоей пенсии ты своё светлое будущее не застанешь.
Я приводил в пример чистые ФП-языки, которые дают намного больше простора для бета-редукций, но за ~15 лет активных телодвижения результаты были слишком скромные на середину нулевых.
Уже более 30-ти лет примерно с теми же результатами.
А жить надо было как-то здесь и сейчас, и ближайшие лет 10 (твои прогнозы) каким-то образом тоже.
Вот почему я считал ошибкой ту стратегию, что MS примерно на 8-10 лет натурально забило на нейтив.
Помнишь проект Avalon и фантазии, что всё GUI в будущих Windows будет managed?
В итоге в 8-х виндах они докрутили С++ компилятор до возможности оперировать расширенной метаинформацией (банально атрибутами и некоторыми типами, которые компилятор "знает в лицо") — и ву а ля, менее чем за год разработали подсистему GUI UWP, которую Avalon с нужной эффективностью так и не породил за ~6 лет.
А которые C# UWP-приложения — там лишь тонкая обёртка над нейтивной подсистемой, и оно пашет в разы шустрее, чем WPF, да еще в памяти чуть ли не на порядок меньше мусора.
Боюсь, что по этому вопросу "наша" точка зрения победила даже не до твоей пенсии, а до конца твоей жизни.
И что меня раздражало в оппонентах (не только в тебе) — я подробно разбирал низкоуровневую механику WPF и объяснял почему так — загвоздка в вызове пайплайна подсистемы GUI, в необходимости осуществлять тысячи вызовов низлежащего рендерера (а для последних версий DirectX вызовов еще больше, хотя сами вызовы легковесней).
И в этом месте дотнет сильно проседает.
Как они выкрутились в WPF — со стороны C# идёт сериализация команд в некий байт-буфер, отправка сериализованных команд в специальный поток, обслуживаемый нейтивной библиотекой.
В этом потоке нейтивный код десериализует команды, пакеты вида { код_операции, операнды... } и по таблице кодов команд вызывает соотв. методы-адаптеры, которые, в свою очередь, вызывают ф-ии низлежащего GUI с поданными в сообщении аргументами.
И так вышло, что обход графа со стороны C# с сериализацией, что динамический расчёт лейаута, что применение стилей — всё на стороне C# почему-то тормозит и жрёт ресурсы.
Плюс задержки с сериализацией и передачей сцены нейтивной либе.
Как эти ограничения переплюнуть точному GC — лично я ума не приложу.
Плюс соображения интероперабельности с другими языками/технологиями — они все умеют взаимодействовать с нейтивом тем или иным образом изкаробки, бо все поверх нейтива пашут.
Но как взаимодействовать с АПИ дотнета — вопрос вопросов.
Поэтому, совершенно согласен с тем, что на сторону C# надо отдавать только биндинги к св-вам и событиям GUI-компонент и не более того.
И точно так же для любых других "высокоуровневых" технологий.
Здесь подход мало чем отличается от биндинга Питоновских либ к нейтивным BLAS-либам.
Так вот, подводя жирную черту под всеми этими фапаниями на несостоявшийся Avalon когда-то:
— технологии навроде дотнета/джавы важны и нужны, хотя бы по той причине, что работают лучше скриптовых языков/сред, являясь порой более удобными/легкими в разработке;
— но такие технологии не должны были претендовать на исключительное своё положение, тем более в первые же годы своей жизни;
— архитектура компонент и низлежащие принципы работы WPF заведомо антиинженерные, такие решения могли быть приняты только через ангажированность/болтологию/веру в близкое светлое мега-будущее.
Я много и глубого исследовал Рефлектором дотнет когда-то, сейчас регулярно пасусь на гитхабе проекта, да и вообще не представляю себе работу без решарпера, который сам подгружает дебаг-информацию и дизассемблирует сборки.
Почти всегда мне понятны мотивы принятых тех или иных решений (хотя местами улыбали явно индусские мотивы, но это обычно был не самый критичный код).
Однако, рассматривая внутренности WPF я только за голову хватался...
Собсно, будучи сам поначалу интузиастом дотнета в этом месте я сильно к дотнету охладел. ))
Ну и, люди, навроде тебя (Влад, AVK и прочие) своими речами наглядно мне продемонстрировали, как и почему подобные грубейшие архитектурные ошибки проползают в ведущие технологии. А технология WPF на момент разработки пророчилась в кач-ве ведущей для GUI.
Всё вместе это болото, токсичность, невозможность поступления свежего воздуха, как грится, невозможность даже просто предметно дисскутировать.
Секта.
И вот так оно в кач-ве секты с 98-го (год начала разработки) до 2017-го (т.е. почти 20 лет) и просуществовало.
А потом эту секту грубо разогнали нафик и подтянули простых работяг, не замутнённых никакими предрассудками.
Почитывал периодически блог руководителя дотнетного направления (уже забыл как его), был рад, что его турнули.
Он писал всё правильно, но всё не о том...
Какой-то разрыв первого рода м/у пониманием требований разработчиков разных складов и подходов к задачам, ограничений современных архитектур и возможностей своей команды.
Маниловщина в чистом виде...
Например, такого пошиба типчик не выжил в тех условиях, в которых работаю я, он довольно быстро зарекомендовал себя как болтун низкой полезности и почти нулевого выхлопа.
Боже, его эксперименты с кодом были до того идиотскими в своей наивности, что я порой был в шоке, как он вообще на эту должность попал и почему так долго продержался.
Даже если сам чел был не идиот, но взятый им тон был для идиотов.
А значит, вольно или невольно таковым было позиционирование результатов работы его команды.
Было всё это вдино еще тогда — конечно было.
Периодически об этом говорилось, вы в привычной манере язвительно (т.е. контрпродуктивно) огрызались.
Со стороны — секта, ноль практичности, игнор насущных требований разрабов.
V>>Джава давно повернулась лицом к опенсорсу, но огромного кол-ва ревьюверов джава-машинки я не наблюдаю.
S>А я — наблюдаю. Просто вы не вращаетесь в тех кругах, где принято пилить JVM.
Э, нет, я одно время (пару лет назад) наблюдал весьма плотно, поплотнее, чем за дотнетом.
(у нас есть версия продукта и для Джавы)
В экосистеме Джавы в разработке высокоуровневого энтерпрайз г-на народу пасётся прилично и ротация имеется, но на низком уровне одни и те же лица чуть ли не десятилетиями, любопытство со стороны минимальное.
Это приплызд.
В дотнете постоянно сыплют предложениями случайные люди и поток этот неиссякаем.
(сам репортил как ошибки, так и предлагал исправления/улучшения)
V>>Если джава не повторит за дотнетом поворачивание лицом к таким людям — постепенно уйдёт примерно туда же, куда ушел популярный когда-то Perl.
S>Увы, не уйдёт. Но это оффтоп к данной дискуссии.
Про Перл тоже так думали, бо вменяемых альтернатив не было полтора десятилетия.
Но чуть заматерел Питон, потом выстрелил сразу же мощно JS-node — и досвидан.
Я не утверждаю асболютно, я говорю "если".
Ввели же генерики в Джаве, подсуетились... ))
И почему оффтоп в теме ".Net на Эльбрусах"?
Конкурент номер один дотнету — Джава.
Судьба дотнета во многом будет зависеть от судьбы Джавы и наоборот.
V>>Сначала стали контрибутить нейтивные фишки, и только затем подтянулась широкая общественность.
V>>Т.е. между тем, как открыли в опенсорс и тем, как подтянулось приличное кол-во людей, прошло прилично времени.
S>Хм. А кто контрибутил нейтивные фишки?
Изначально программисты MS, у которых почему-то стоит C/C++ в профиле.
Т.е. подкинули в проект портирования дотнета на линуха плюсовиков, по понятной причине.
И вот тут всё заверте...
S>Что сдерживает вас от написания трёх строчек кода?
Публикуемый своей рукой код желательно сначала проверить лично.
Чтобы не запутаться, где какая переменная итерируется, берём матрицы разных размерностей (L, M и N как в вики):
Пусть даны две прямоугольные матрицы A и B размерности l х m и m х n соответственно.
Тогда матрица C размерностью l x n, в которой:
называется их произведением.
В переменных i, j, k это будет:
unsafe {
const int L = 2, M = 3, N = 4;
var a = stackalloc float[L * M] {
1, 2, 3,
4, 5, 6
};
var b = stackalloc float[M * N] {
1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12
};
var c = stackalloc float[L * N];
for(var k = 0; k < L; k++)
for(var j = 0; j < N; j++)
for (var i = 0; i < M; i++)
c[k * N + j] += a[k * M + i] * b[i * N + j];
for(var i = 0; i < L; i++) {
if(i != 0)
Console.WriteLine();
for(var j = 0; j < N; j++) {
if(j != 0)
Console.Write(", ");
Console.Write(c[i * N + j]);
}
}
Console.WriteLine();
}
V>>Да без проблем — допили тот код до работы с произвольными размерами матриц и замерь.
V>>Дай бог получить результаты как у интеловской либы, а замеров по ней в сети хватает.
S>Интеловская либа, судя по найденным мной статьям — ещё не предел.
Боюсь, для того самого общего случая, т.е. стандарта BLAS — предел.
V>>А как они могут гоняться совместно? ))
S>Ну, вас же не смутила ссылка, где совместно гоняется EML и наивный код на Интеле.
Потому что хватает ссылок, где наивный код сравнивается с EML.
Я просмотрел пару таких ссылок, везде ускорение примерно в 10 раз (плюс-минус проценты), позволил себе сделать соотв. прикидки от обсуждаемых цифр.
S>При этом, когда я пишу интринсики, они компилируются ровно в нужные мне векторные команды. А не случайно параллелятся компилятором в зависимости от фазы луны.
Или в зависимости от опции компилятора для целевой архитетуры.
В общем, зря тут упираешься.
V>>Это тебе нет, хотя конкретно тебе говорили, как оно будет, и оно так и было.
V>>Зато ты фантазировал безудержно, помнится.
V>>(не только ты, но ты громче всех)
S>И в итоге оказалось, что всё произошло так, как я говорил, хоть и не сразу
Пока что мало чего произошло, оно только-только начинает происходить (заметные подвижки начались с 5-го и 6-го дотнета ) и это очень надолго.
Тебе сразу говорилось, что до твоей пенсии ты своё светлое будущее не застанешь.
Я приводил в пример чистые ФП-языки, которые дают намного больше простора для бета-редукций, но за ~15 лет активных телодвижения результаты были слишком скромные на середину нулевых.
Уже более 30-ти лет примерно с теми же результатами.
А жить надо было как-то здесь и сейчас, и ближайшие лет 10 (твои прогнозы) каким-то образом тоже.
Вот почему я считал ошибкой ту стратегию, что MS примерно на 8-10 лет натурально забило на нейтив.
Помнишь проект Avalon и фантазии, что всё GUI в будущих Windows будет managed?
В итоге в 8-х виндах они докрутили С++ компилятор до возможности оперировать расширенной метаинформацией (банально атрибутами и некоторыми типами, которые компилятор "знает в лицо") — и ву а ля, менее чем за год разработали подсистему GUI UWP, которую Avalon с нужной эффективностью так и не породил за ~6 лет.
А которые C# UWP-приложения — там лишь тонкая обёртка над нейтивной подсистемой, и оно пашет в разы шустрее, чем WPF, да еще в памяти чуть ли не на порядок меньше мусора.
Боюсь, что по этому вопросу "наша" точка зрения победила даже не до твоей пенсии, а до конца твоей жизни.
И что меня раздражало в оппонентах (не только в тебе) — я подробно разбирал низкоуровневую механику WPF и объяснял почему так — загвоздка в вызове пайплайна подсистемы GUI, в необходимости осуществлять тысячи вызовов низлежащего рендерера (а для последних версий DirectX вызовов еще больше, хотя сами вызовы легковесней).
И в этом месте дотнет сильно проседает.
Как они выкрутились в WPF — со стороны C# идёт сериализация команд в некий байт-буфер, отправка сериализованных команд в специальный поток, обслуживаемый нейтивной библиотекой.
В этом потоке нейтивный код десериализует команды, пакеты вида { код_операции, операнды... } и по таблице кодов команд вызывает соотв. методы-адаптеры, которые, в свою очередь, вызывают ф-ии низлежащего GUI с поданными в сообщении аргументами.
И так вышло, что обход графа со стороны C# с сериализацией, что динамический расчёт лейаута, что применение стилей — всё на стороне C# почему-то тормозит и жрёт ресурсы.
Плюс задержки с сериализацией и передачей сцены нейтивной либе.
Как эти ограничения переплюнуть точному GC — лично я ума не приложу.
Плюс соображения интероперабельности с другими языками/технологиями — они все умеют взаимодействовать с нейтивом тем или иным образом изкаробки, бо все поверх нейтива пашут.
Но как взаимодействовать с АПИ дотнета — вопрос вопросов.
Поэтому, совершенно согласен с тем, что на сторону C# надо отдавать только биндинги к св-вам и событиям GUI-компонент и не более того.
И точно так же для любых других "высокоуровневых" технологий.
Здесь подход мало чем отличается от биндинга Питоновских либ к нейтивным BLAS-либам.
Так вот, подводя жирную черту под всеми этими фапаниями на несостоявшийся Avalon когда-то:
— технологии навроде дотнета/джавы важны и нужны, хотя бы по той причине, что работают лучше скриптовых языков/сред, являясь порой более удобными/легкими в разработке;
— но такие технологии не должны были претендовать на исключительное своё положение, тем более в первые же годы своей жизни;
— архитектура компонент и низлежащие принципы работы WPF заведомо антиинженерные, такие решения могли быть приняты только через ангажированность/болтологию/веру в близкое светлое мега-будущее.
Я много и глубого исследовал Рефлектором дотнет когда-то, сейчас регулярно пасусь на гитхабе проекта, да и вообще не представляю себе работу без решарпера, который сам подгружает дебаг-информацию и дизассемблирует сборки.
Почти всегда мне понятны мотивы принятых тех или иных решений (хотя местами улыбали явно индусские мотивы, но это обычно был не самый критичный код).
Однако, рассматривая внутренности WPF я только за голову хватался...
Собсно, будучи сам поначалу интузиастом дотнета в этом месте я сильно к дотнету охладел. ))
Ну и, люди, навроде тебя (Влад, AVK и прочие) своими речами наглядно мне продемонстрировали, как и почему подобные грубейшие архитектурные ошибки проползают в ведущие технологии. А технология WPF на момент разработки пророчилась в кач-ве ведущей для GUI.
Всё вместе это болото, токсичность, невозможность поступления свежего воздуха, как грится, невозможность даже просто предметно дисскутировать.
Секта.
И вот так оно в кач-ве секты с 98-го (год начала разработки) до 2017-го (т.е. почти 20 лет) и просуществовало.
А потом эту секту грубо разогнали нафик и подтянули простых работяг, не замутнённых никакими предрассудками.
Почитывал периодически блог руководителя дотнетного направления (уже забыл как его), был рад, что его турнули.
Он писал всё правильно, но всё не о том...
Какой-то разрыв первого рода м/у пониманием требований разработчиков разных складов и подходов к задачам, ограничений современных архитектур и возможностей своей команды.
Маниловщина в чистом виде...
Например, такого пошиба типчик не выжил в тех условиях, в которых работаю я, он довольно быстро зарекомендовал себя как болтун низкой полезности и почти нулевого выхлопа.
Боже, его эксперименты с кодом были до того идиотскими в своей наивности, что я порой был в шоке, как он вообще на эту должность попал и почему так долго продержался.
Даже если сам чел был не идиот, но взятый им тон был для идиотов.
А значит, вольно или невольно таковым было позиционирование результатов работы его команды.
Было всё это вдино еще тогда — конечно было.
Периодически об этом говорилось, вы в привычной манере язвительно (т.е. контрпродуктивно) огрызались.
Со стороны — секта, ноль практичности, игнор насущных требований разрабов.
V>>Джава давно повернулась лицом к опенсорсу, но огромного кол-ва ревьюверов джава-машинки я не наблюдаю.
S>А я — наблюдаю. Просто вы не вращаетесь в тех кругах, где принято пилить JVM.
Э, нет, я одно время (пару лет назад) наблюдал весьма плотно, поплотнее, чем за дотнетом.
(у нас есть версия продукта и для Джавы)
В экосистеме Джавы в разработке высокоуровневого энтерпрайз г-на народу пасётся прилично и ротация имеется, но на низком уровне одни и те же лица чуть ли не десятилетиями, любопытство со стороны минимальное.
Это приплызд.
В дотнете постоянно сыплют предложениями случайные люди и поток этот неиссякаем.
(сам репортил как ошибки, так и предлагал исправления/улучшения)
V>>Если джава не повторит за дотнетом поворачивание лицом к таким людям — постепенно уйдёт примерно туда же, куда ушел популярный когда-то Perl.
S>Увы, не уйдёт. Но это оффтоп к данной дискуссии.
Про Перл тоже так думали, бо вменяемых альтернатив не было полтора десятилетия.
Но чуть заматерел Питон, потом выстрелил сразу же мощно JS-node — и досвидан.
Я не утверждаю асболютно, я говорю "если".
Ввели же генерики в Джаве, подсуетились... ))
И почему оффтоп в теме ".Net на Эльбрусах"?
Конкурент номер один дотнету — Джава.
Судьба дотнета во многом будет зависеть от судьбы Джавы и наоборот.
V>>Сначала стали контрибутить нейтивные фишки, и только затем подтянулась широкая общественность.
V>>Т.е. между тем, как открыли в опенсорс и тем, как подтянулось приличное кол-во людей, прошло прилично времени.
S>Хм. А кто контрибутил нейтивные фишки?
Изначально программисты MS, у которых почему-то стоит C/C++ в профиле.
Т.е. подкинули в проект портирования дотнета на линуха плюсовиков, по понятной причине.
И вот тут всё заверте...
Re[28]: .Net на эльбрусах
Здравствуйте, Sinclair, Вы писали:
S>Что сдерживает вас от написания трёх строчек кода?
Публикуемый своей рукой код желательно сначала проверить лично.
Чтобы не запутаться, где какая переменная итерируется, берём матрицы разных размерностей (L, M и N как в вики):
В переменных i, j, k это будет:
V>>Да без проблем — допили тот код до работы с произвольными размерами матриц и замерь.
V>>Дай бог получить результаты как у интеловской либы, а замеров по ней в сети хватает.
S>Интеловская либа, судя по найденным мной статьям — ещё не предел.
Боюсь, для того самого общего случая, т.е. стандарта BLAS — предел.
V>>А как они могут гоняться совместно? ))
S>Ну, вас же не смутила ссылка, где совместно гоняется EML и наивный код на Интеле.
Потому что хватает ссылок, где наивный код сравнивается с EML.
Я просмотрел пару таких ссылок, везде ускорение примерно в 10 раз (плюс-минус проценты), позволил себе сделать соотв. прикидки от обсуждаемых цифр.
S>При этом, когда я пишу интринсики, они компилируются ровно в нужные мне векторные команды. А не случайно параллелятся компилятором в зависимости от фазы луны.
Или в зависимости от опции компилятора для целевой архитетуры.
В общем, зря тут упираешься.
V>>Это тебе нет, хотя конкретно тебе говорили, как оно будет, и оно так и было.
V>>Зато ты фантазировал безудержно, помнится.
V>>(не только ты, но ты громче всех)
S>И в итоге оказалось, что всё произошло так, как я говорил, хоть и не сразу
Пока что мало чего произошло, оно только-только начинает происходить (заметные подвижки начались с 5-го и 6-го дотнета ) и это очень надолго.
Тебе сразу говорилось, что до твоей пенсии ты своё светлое будущее не застанешь.
Я приводил в пример чистые ФП-языки, которые дают намного больше простора для бета-редукций, но за ~15 лет активных телодвижения результаты были слишком скромные на середину нулевых.
Уже более 30-ти лет примерно с теми же результатами.
А жить надо было как-то здесь и сейчас, и ближайшие лет 10 (твои прогнозы) каким-то образом тоже.
Вот почему я считал ошибкой ту стратегию, что MS примерно на 8-10 лет натурально забило на нейтив.
Помнишь проект Avalon и фантазии, что всё GUI в будущих Windows будет managed?
В итоге в 8-х виндах они докрутили С++ компилятор до возможности оперировать расширенной метаинформацией (банально атрибутами и некоторыми типами, которые компилятор "знает в лицо") — и ву а ля, менее чем за год разработали подсистему GUI UWP, которую Avalon с нужной эффективностью так и не породил за ~6 лет.
А которые C# UWP-приложения — там лишь тонкая обёртка над нейтивной подсистемой, и оно пашет в разы шустрее, чем WPF, да еще в памяти чуть ли не на порядок меньше мусора.
Боюсь, что по этому вопросу "наша" точка зрения победила даже не до твоей пенсии, а до конца твоей жизни.
И что меня раздражало в оппонентах (не только в тебе) — я подробно разбирал низкоуровневую механику WPF и объяснял почему так — загвоздка в вызове пайплайна подсистемы GUI, в необходимости осуществлять тысячи вызовов низлежащего рендерера (а для последних версий DirectX вызовов еще больше, хотя сами вызовы легковесней).
И в этом месте дотнет сильно проседает из-за дороговизны вызова нейтивных ф-ий.
Как они выкрутились в WPF — со стороны C# идёт сериализация команд в некий байт-буфер, отправка сериализованных команд в специальный поток, обслуживаемый нейтивной библиотекой.
В этом потоке нейтивный код десериализует команды, пакеты вида { код_операции, операнды... } и по таблице кодов команд вызывает соотв. методы-адаптеры, которые, в свою очередь, вызывают ф-ии низлежащего GUI с поданными в сообщении аргументами.
И так вышло, что обход графа со стороны C# с сериализацией, что динамический расчёт лейаута, что применение стилей — всё на стороне C# почему-то тормозит и жрёт ресурсы.
Плюс задержки с сериализацией и передачей сцены нейтивной либе.
Как эти ограничения переплюнуть точному GC — лично я ума не приложу.
Плюс соображения интероперабельности с другими языками/технологиями — они все умеют взаимодействовать с нейтивом тем или иным образом изкаробки, бо все поверх нейтива пашут.
Но как взаимодействовать с АПИ дотнета — вопрос вопросов.
Поэтому, совершенно согласен с тем, что на сторону C# надо отдавать только биндинги к св-вам и событиям GUI-компонент и не более того.
И точно так же для любых других "высокоуровневых" технологий.
Здесь подход мало чем отличается от биндинга Питоновских либ к нейтивным BLAS-либам.
Так вот, подводя жирную черту под всеми этими фапаниями на несостоявшийся Avalon когда-то:
— технологии навроде дотнета/джавы важны и нужны, хотя бы по той причине, что работают лучше скриптовых языков/сред, являясь порой более удобными/легкими в разработке;
— но такие технологии не должны были претендовать на исключительное своё положение, тем более в первые же годы своей жизни;
— архитектура компонент и низлежащие принципы работы WPF заведомо антиинженерные, такие решения могли быть приняты только через ангажированность/болтологию/веру в близкое светлое мега-будущее.
Я много и глубого исследовал Рефлектором дотнет когда-то, сейчас регулярно пасусь на гитхабе проекта, да и вообще не представляю себе работу без решарпера, который сам подгружает дебаг-информацию и дизассемблирует сборки.
Почти всегда мне понятны мотивы принятых тех или иных решений (хотя местами улыбали явно индусские мотивы, но это обычно был не самый критичный код).
Однако, рассматривая внутренности WPF я только за голову хватался...
Собсно, будучи сам поначалу интузиастом дотнета в этом месте я сильно к дотнету охладел. ))
Ну и, люди, навроде тебя (Влад, AVK и прочие) своими речами наглядно мне продемонстрировали, как и почему подобные грубейшие архитектурные ошибки проползают в ведущие технологии. А технология WPF на момент разработки пророчилась в кач-ве ведущей для GUI.
Всё вместе это болото, токсичность, невозможность поступления свежего воздуха, как грится, невозможность даже просто предметно дисскутировать.
Секта.
И вот так оно в кач-ве секты с 98-го (год начала разработки) до 2017-го (т.е. почти 20 лет) и просуществовало.
А потом эту секту грубо разогнали нафик и подтянули простых работяг, не замутнённых никакими предрассудками.
Почитывал периодически блог руководителя дотнетного направления (уже забыл как его), был рад, что его турнули.
Он писал всё правильно, но всё не о том...
Какой-то разрыв первого рода м/у пониманием требований разработчиков разных складов и подходов к задачам, ограничений современных архитектур и возможностей своей команды.
Маниловщина в чистом виде...
Например, такого пошиба типчик не выжил в тех условиях, в которых работаю я, он довольно быстро зарекомендовал себя как болтун низкой полезности и почти нулевого выхлопа.
Боже, его эксперименты с кодом были до того идиотскими в своей наивности, что я порой был в шоке, как он вообще на эту должность попал и почему так долго продержался.
Даже если сам чел был не идиот, но взятый им тон был для идиотов.
А значит, вольно или невольно таковым было позиционирование результатов работы его команды.
Было всё это вдино еще тогда — конечно было.
Периодически об этом говорилось, вы в привычной манере язвительно (т.е. контрпродуктивно) огрызались.
Со стороны — секта, ноль практичности, игнор насущных требований разрабов.
V>>Джава давно повернулась лицом к опенсорсу, но огромного кол-ва ревьюверов джава-машинки я не наблюдаю.
S>А я — наблюдаю. Просто вы не вращаетесь в тех кругах, где принято пилить JVM.
Э, нет, я одно время (пару лет назад) наблюдал весьма плотно, поплотнее, чем за дотнетом.
(у нас есть версия продукта и для Джавы)
В экосистеме Джавы в разработке высокоуровневого энтерпрайз г-на народу пасётся прилично и ротация имеется, но на низком уровне одни и те же лица чуть ли не десятилетиями, любопытство со стороны минимальное.
Это приплызд.
В дотнете постоянно сыплют предложениями случайные люди и поток этот неиссякаем.
(сам репортил как ошибки, так и предлагал исправления/улучшения)
V>>Если джава не повторит за дотнетом поворачивание лицом к таким людям — постепенно уйдёт примерно туда же, куда ушел популярный когда-то Perl.
S>Увы, не уйдёт. Но это оффтоп к данной дискуссии.
Про Перл тоже так думали, бо вменяемых альтернатив не было полтора десятилетия.
Но чуть заматерел Питон, потом выстрелил сразу же мощно JS-node — и досвидан.
Я не утверждаю асболютно, я говорю "если".
Ввели же генерики в Джаве, подсуетились... ))
И почему оффтоп в теме ".Net на Эльбрусах"?
Конкурент номер один дотнету — Джава.
Судьба дотнета во многом будет зависеть от судьбы Джавы и наоборот.
V>>Сначала стали контрибутить нейтивные фишки, и только затем подтянулась широкая общественность.
V>>Т.е. между тем, как открыли в опенсорс и тем, как подтянулось приличное кол-во людей, прошло прилично времени.
S>Хм. А кто контрибутил нейтивные фишки?
Изначально программисты MS, у которых почему-то стоит C/C++ в профиле.
Т.е. подкинули в проект портирования дотнета на линуха плюсовиков, по понятной причине.
И вот тут всё заверте...
S>Что сдерживает вас от написания трёх строчек кода?
Публикуемый своей рукой код желательно сначала проверить лично.
Чтобы не запутаться, где какая переменная итерируется, берём матрицы разных размерностей (L, M и N как в вики):
Пусть даны две прямоугольные матрицы A и B размерности l х m и m х n соответственно.
Тогда матрица C размерностью l x n, в которой:
называется их произведением.
В переменных i, j, k это будет:
unsafe {
const int L = 2, M = 3, N = 4;
var a = stackalloc float[L * M] {
1, 2, 3,
4, 5, 6
};
var b = stackalloc float[M * N] {
1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12
};
var c = stackalloc float[L * N];
for(var k = 0; k < L; k++)
for(var j = 0; j < N; j++)
for (var i = 0; i < M; i++)
c[k * N + j] += a[k * M + i] * b[i * N + j];
for(var i = 0; i < L; i++) {
if(i != 0)
Console.WriteLine();
for(var j = 0; j < N; j++) {
if(j != 0)
Console.Write(", ");
Console.Write(c[i * N + j]);
}
}
Console.WriteLine();
}
V>>Да без проблем — допили тот код до работы с произвольными размерами матриц и замерь.
V>>Дай бог получить результаты как у интеловской либы, а замеров по ней в сети хватает.
S>Интеловская либа, судя по найденным мной статьям — ещё не предел.
Боюсь, для того самого общего случая, т.е. стандарта BLAS — предел.
V>>А как они могут гоняться совместно? ))
S>Ну, вас же не смутила ссылка, где совместно гоняется EML и наивный код на Интеле.
Потому что хватает ссылок, где наивный код сравнивается с EML.
Я просмотрел пару таких ссылок, везде ускорение примерно в 10 раз (плюс-минус проценты), позволил себе сделать соотв. прикидки от обсуждаемых цифр.
S>При этом, когда я пишу интринсики, они компилируются ровно в нужные мне векторные команды. А не случайно параллелятся компилятором в зависимости от фазы луны.
Или в зависимости от опции компилятора для целевой архитетуры.
В общем, зря тут упираешься.
V>>Это тебе нет, хотя конкретно тебе говорили, как оно будет, и оно так и было.
V>>Зато ты фантазировал безудержно, помнится.
V>>(не только ты, но ты громче всех)
S>И в итоге оказалось, что всё произошло так, как я говорил, хоть и не сразу
Пока что мало чего произошло, оно только-только начинает происходить (заметные подвижки начались с 5-го и 6-го дотнета ) и это очень надолго.
Тебе сразу говорилось, что до твоей пенсии ты своё светлое будущее не застанешь.
Я приводил в пример чистые ФП-языки, которые дают намного больше простора для бета-редукций, но за ~15 лет активных телодвижения результаты были слишком скромные на середину нулевых.
Уже более 30-ти лет примерно с теми же результатами.
А жить надо было как-то здесь и сейчас, и ближайшие лет 10 (твои прогнозы) каким-то образом тоже.
Вот почему я считал ошибкой ту стратегию, что MS примерно на 8-10 лет натурально забило на нейтив.
Помнишь проект Avalon и фантазии, что всё GUI в будущих Windows будет managed?
В итоге в 8-х виндах они докрутили С++ компилятор до возможности оперировать расширенной метаинформацией (банально атрибутами и некоторыми типами, которые компилятор "знает в лицо") — и ву а ля, менее чем за год разработали подсистему GUI UWP, которую Avalon с нужной эффективностью так и не породил за ~6 лет.
А которые C# UWP-приложения — там лишь тонкая обёртка над нейтивной подсистемой, и оно пашет в разы шустрее, чем WPF, да еще в памяти чуть ли не на порядок меньше мусора.
Боюсь, что по этому вопросу "наша" точка зрения победила даже не до твоей пенсии, а до конца твоей жизни.
И что меня раздражало в оппонентах (не только в тебе) — я подробно разбирал низкоуровневую механику WPF и объяснял почему так — загвоздка в вызове пайплайна подсистемы GUI, в необходимости осуществлять тысячи вызовов низлежащего рендерера (а для последних версий DirectX вызовов еще больше, хотя сами вызовы легковесней).
И в этом месте дотнет сильно проседает из-за дороговизны вызова нейтивных ф-ий.
Как они выкрутились в WPF — со стороны C# идёт сериализация команд в некий байт-буфер, отправка сериализованных команд в специальный поток, обслуживаемый нейтивной библиотекой.
В этом потоке нейтивный код десериализует команды, пакеты вида { код_операции, операнды... } и по таблице кодов команд вызывает соотв. методы-адаптеры, которые, в свою очередь, вызывают ф-ии низлежащего GUI с поданными в сообщении аргументами.
И так вышло, что обход графа со стороны C# с сериализацией, что динамический расчёт лейаута, что применение стилей — всё на стороне C# почему-то тормозит и жрёт ресурсы.
Плюс задержки с сериализацией и передачей сцены нейтивной либе.
Как эти ограничения переплюнуть точному GC — лично я ума не приложу.
Плюс соображения интероперабельности с другими языками/технологиями — они все умеют взаимодействовать с нейтивом тем или иным образом изкаробки, бо все поверх нейтива пашут.
Но как взаимодействовать с АПИ дотнета — вопрос вопросов.
Поэтому, совершенно согласен с тем, что на сторону C# надо отдавать только биндинги к св-вам и событиям GUI-компонент и не более того.
И точно так же для любых других "высокоуровневых" технологий.
Здесь подход мало чем отличается от биндинга Питоновских либ к нейтивным BLAS-либам.
Так вот, подводя жирную черту под всеми этими фапаниями на несостоявшийся Avalon когда-то:
— технологии навроде дотнета/джавы важны и нужны, хотя бы по той причине, что работают лучше скриптовых языков/сред, являясь порой более удобными/легкими в разработке;
— но такие технологии не должны были претендовать на исключительное своё положение, тем более в первые же годы своей жизни;
— архитектура компонент и низлежащие принципы работы WPF заведомо антиинженерные, такие решения могли быть приняты только через ангажированность/болтологию/веру в близкое светлое мега-будущее.
Я много и глубого исследовал Рефлектором дотнет когда-то, сейчас регулярно пасусь на гитхабе проекта, да и вообще не представляю себе работу без решарпера, который сам подгружает дебаг-информацию и дизассемблирует сборки.
Почти всегда мне понятны мотивы принятых тех или иных решений (хотя местами улыбали явно индусские мотивы, но это обычно был не самый критичный код).
Однако, рассматривая внутренности WPF я только за голову хватался...
Собсно, будучи сам поначалу интузиастом дотнета в этом месте я сильно к дотнету охладел. ))
Ну и, люди, навроде тебя (Влад, AVK и прочие) своими речами наглядно мне продемонстрировали, как и почему подобные грубейшие архитектурные ошибки проползают в ведущие технологии. А технология WPF на момент разработки пророчилась в кач-ве ведущей для GUI.
Всё вместе это болото, токсичность, невозможность поступления свежего воздуха, как грится, невозможность даже просто предметно дисскутировать.
Секта.
И вот так оно в кач-ве секты с 98-го (год начала разработки) до 2017-го (т.е. почти 20 лет) и просуществовало.
А потом эту секту грубо разогнали нафик и подтянули простых работяг, не замутнённых никакими предрассудками.
Почитывал периодически блог руководителя дотнетного направления (уже забыл как его), был рад, что его турнули.
Он писал всё правильно, но всё не о том...
Какой-то разрыв первого рода м/у пониманием требований разработчиков разных складов и подходов к задачам, ограничений современных архитектур и возможностей своей команды.
Маниловщина в чистом виде...
Например, такого пошиба типчик не выжил в тех условиях, в которых работаю я, он довольно быстро зарекомендовал себя как болтун низкой полезности и почти нулевого выхлопа.
Боже, его эксперименты с кодом были до того идиотскими в своей наивности, что я порой был в шоке, как он вообще на эту должность попал и почему так долго продержался.
Даже если сам чел был не идиот, но взятый им тон был для идиотов.
А значит, вольно или невольно таковым было позиционирование результатов работы его команды.
Было всё это вдино еще тогда — конечно было.
Периодически об этом говорилось, вы в привычной манере язвительно (т.е. контрпродуктивно) огрызались.
Со стороны — секта, ноль практичности, игнор насущных требований разрабов.
V>>Джава давно повернулась лицом к опенсорсу, но огромного кол-ва ревьюверов джава-машинки я не наблюдаю.
S>А я — наблюдаю. Просто вы не вращаетесь в тех кругах, где принято пилить JVM.
Э, нет, я одно время (пару лет назад) наблюдал весьма плотно, поплотнее, чем за дотнетом.
(у нас есть версия продукта и для Джавы)
В экосистеме Джавы в разработке высокоуровневого энтерпрайз г-на народу пасётся прилично и ротация имеется, но на низком уровне одни и те же лица чуть ли не десятилетиями, любопытство со стороны минимальное.
Это приплызд.
В дотнете постоянно сыплют предложениями случайные люди и поток этот неиссякаем.
(сам репортил как ошибки, так и предлагал исправления/улучшения)
V>>Если джава не повторит за дотнетом поворачивание лицом к таким людям — постепенно уйдёт примерно туда же, куда ушел популярный когда-то Perl.
S>Увы, не уйдёт. Но это оффтоп к данной дискуссии.
Про Перл тоже так думали, бо вменяемых альтернатив не было полтора десятилетия.
Но чуть заматерел Питон, потом выстрелил сразу же мощно JS-node — и досвидан.
Я не утверждаю асболютно, я говорю "если".
Ввели же генерики в Джаве, подсуетились... ))
И почему оффтоп в теме ".Net на Эльбрусах"?
Конкурент номер один дотнету — Джава.
Судьба дотнета во многом будет зависеть от судьбы Джавы и наоборот.
V>>Сначала стали контрибутить нейтивные фишки, и только затем подтянулась широкая общественность.
V>>Т.е. между тем, как открыли в опенсорс и тем, как подтянулось приличное кол-во людей, прошло прилично времени.
S>Хм. А кто контрибутил нейтивные фишки?
Изначально программисты MS, у которых почему-то стоит C/C++ в профиле.
Т.е. подкинули в проект портирования дотнета на линуха плюсовиков, по понятной причине.
И вот тут всё заверте...