Re[3]: Применимость и будущее С++(для подкаста)
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 28.07.24 10:11
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Но, если открыть навскидку десяток-другой книг по C++, написанных за последние тридцать лет, в них самые первые примеры почти всегда будут с iostreams, контейнерами, исключениями, шаблонной магией и прочими вещами, которые у типичного сишника прочно ассоциируются с классическими ЯВУ, неприменимыми в тех областях, где он успешно применяет C. Разумеется, он сразу же делает вывод "это не для меня", закрывает книгу, и продолжает использовать голый C, регулярно наступая с ним на все те грабли, для изжития которых C++ и создавался.


Вот ты мне скажи — когда у тебя в ядре Windows драйвер на C++, у него есть cin и cout? Если нет, то почему?

Авторы всех до единой книг по C++, которые я видел, рассчитывают на hosted + userland. Наверно, тебе надо написать свою, чтобы поломать эту тенденцию.
The God is real, unless declared integer.
Re[4]: Применимость и будущее С++(для подкаста)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 28.07.24 11:23
Оценка:
Здравствуйте, netch80, Вы писали:

N>когда у тебя в ядре Windows драйвер на C++, у него есть cin и cout?


Есть. Они как-то определяются в WDK, а деталей не смотрел. Возможно, cout заведен на ядреный отладочный вывод, а cin всегда возвращает конец потока.

А new/delete у меня свои.

N>Если нет, то почему?


Если б их не было, я б ответил — "не определили". Это ж просто обычные плюсовые классы с наборами методов, их можно определить для чего угодно, хоть для самого мелкого МК, и работать через них с каким-нибудь RS232. Только надо ответить на вопрос "зачем?".

Вот плюсовые исключения в ядре не реализованы — только родные структурные, которые разматывают стек вызовов, но ничего не знают про деструкторы. В принципе, нет никаких технических проблем сделать поддержку плюсовых исключений и в ядре, но они ж так по-дурацки определены, что не могут работать без RTTI, который в ядро уж точно никто не потащит. Если б исключения в C++ были определены попроще — возможно, и сделали бы поддержку в ядре. Структурные исключения само ядро вполне себе использует.

И реализаций STL для виндового ядра, насколько я знаю, никто не делал, хотя разумное подмножество сделать нетрудно.

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

N>Авторы всех до единой книг по C++, которые я видел, рассчитывают на hosted + userland.


Такая же фигня, пока не попалось "Введение в C++" Столярова. Но его книги неокрепшим умам читать опасно — может развиться линуксоидность головного мозга.

N>Наверно, тебе надо написать свою, чтобы поломать эту тенденцию.


Полноформатную книгу я вряд ли осилю, а вот что-нибудь вроде статьи об использовании C++ в ядре ОС и на голом железе, может, и рожу когда-нибудь.

Щас хохмы ради накидал простейший пример наследования с виртуальными функциями, собрал под ATTiny13 (самый мелкий МК от AVR) — прошивка получилась аж на двести байт.
Re[5]: Применимость и будущее С++(для подкаста)
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 28.07.24 13:43
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Вот плюсовые исключения в ядре не реализованы — только родные структурные, которые разматывают стек вызовов, но ничего не знают про деструкторы. В принципе, нет никаких технических проблем сделать поддержку плюсовых исключений и в ядре, но они ж так по-дурацки определены, что не могут работать без RTTI, который в ядро уж точно никто не потащит. Если б исключения в C++ были определены попроще — возможно, и сделали бы поддержку в ядре. Структурные исключения само ядро вполне себе использует.


RTTI как раз тривиально включить, в чём проблема? Ещё один указатель в каждой VMT, и константная структурка.
А вот исключения которые аллоцируют объект на каждую генерацию — могут быть проблемой. Было предложение на исключение которое не объект, а просто указатель на тип (в стиле Ada) — пока не прошло.

N>>Авторы всех до единой книг по C++, которые я видел, рассчитывают на hosted + userland.

ЕМ>Такая же фигня, пока не попалось "Введение в C++" Столярова. Но его книги неокрепшим умам читать опасно — может развиться линуксоидность головного мозга.

N>>Наверно, тебе надо написать свою, чтобы поломать эту тенденцию.


ЕМ>Полноформатную книгу я вряд ли осилю, а вот что-нибудь вроде статьи об использовании C++ в ядре ОС и на голом железе, может, и рожу когда-нибудь.


Ну так оно и набирается из статей
The God is real, unless declared integer.
Re[6]: Применимость и будущее С++(для подкаста)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 28.07.24 14:23
Оценка:
Здравствуйте, netch80, Вы писали:

N>RTTI как раз тривиально включить, в чём проблема?


В том, что все это на фиг не нужно для обработки исключений, как таковых.

N>Ещё один указатель в каждой VMT, и константная структурка.


Плюс дополнительный код в catch, который выясняет, какой тип был выброшен.

N>А вот исключения которые аллоцируют объект на каждую генерацию — могут быть проблемой.


Не только "аллоцируют", но и копируют его в обработчик catch.

N>Было предложение на исключение которое не объект, а просто указатель на тип


Да, это было бы удобно. Но вряд ли прокатит — кого из комитетчиков это парит? Ну гоняются там несчастные сотни байтиков по стеку, какое это может иметь значение на фоне мировой революции нынешнего представления о том, что софт, требующий под сотню метров памяти считается "весьма компактным"?
Re[7]: Применимость и будущее С++(для подкаста)
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 28.07.24 14:28
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Да, это было бы удобно. Но вряд ли прокатит — кого из комитетчиков это парит? Ну гоняются там несчастные сотни байтиков по стеку, какое это может иметь значение на фоне мировой революции нынешнего представления о том, что софт, требующий под сотню метров памяти считается "весьма компактным"?


Хех. У меня в одном недавнем проекте был бинарник с объёмом кода 250MB ;\
The God is real, unless declared integer.
Re[8]: Применимость и будущее С++(для подкаста)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 28.07.24 15:03
Оценка:
Здравствуйте, netch80, Вы писали:

N>У меня в одном недавнем проекте был бинарник с объёмом кода 250MB ;\


Было бы очень любопытно узнать распределение сущностей по объему — код, двоичные данные для кода, тексты, изображения, видео и т.п.
Re[7]: Применимость и будущее С++(для подкаста)
От: Pitirimov США  
Дата: 28.07.24 16:05
Оценка: -1 :)
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Я бы предпочел получить более конкретное объяснение связи вышеописанного с обсуждаемой тематикой. Пока не вижу ни малейшей связи — чистое фантазирование.

Я сравнил использование кодов возврата из функций чистого Си в сравнении с исключениями Си++. Ты же сам написал что именно программистов на Си не устраивает в Си++, я тебе и разъяснил почему люди так считают.
Тут "плюсисты" обычно высказываются о том, что никто не заставляет использовать исключения, где они не нужны. Это похоже на то, что выдать рабочим по тарелке супа за обедом, поставить тарелку винограда на стол и наказать, чтобы никто не ел виноград. Наверное, это удовольствие бить по рукам людей, тянущихся за виноградом, следя за ними из-за занавески? Природу животного мира в людях никто пока что никто не смог искоренить и красть еду исподтишка — всего лишь один из способов выживания особи в дикой природе. Отец Сергий отрезал себе палец, когда к нему в землянку зашла женщина среди ночи и метели. А теперь представь, что эта же самая женщина зашла бы к пьяным рабочим-вахтовикам в их вагончик — бабу не просто грубо облапали бы, а чего и похуже бы сделали с вероятностью 99 процентов.
Единственный выход — ограничить внесение лажи в проект через написание ПО на чистом Си вместо Си++, чтобы с плёткой не стоять у людей над душой.
Re[8]: Применимость и будущее С++(для подкаста)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 28.07.24 17:43
Оценка:
Здравствуйте, Pitirimov, Вы писали:

P>Я сравнил использование кодов возврата из функций чистого Си в сравнении с исключениями Си++.


С какой целью Вы это делали? Ну, кроме как натянуть сову на глобус?

P>Ты же сам написал что именно программистов на Си не устраивает в Си++, я тебе и разъяснил почему люди так считают.


Теперь мне требуется разъяснение, почему именно программистов на C не устраивает в C++ сам факт наличия исключений, которое им, в случае перехода, не будет стоить ничего. Или сишники все, как один, такие донельзя убогие, как Вы описали ниже? Я вот уже лет тридцать делаю софт только на плюсах, и не использую не только исключений, но и STL. Святой, наверное.

P>Тут "плюсисты" обычно высказываются о том, что никто не заставляет использовать исключения, где они не нужны.


Да, именно так. Ну, по крайней мере, у тех, кто дружит с головой.

P>Это похоже на то, что выдать рабочим по тарелке супа за обедом, поставить тарелку винограда на стол и наказать, чтобы никто не ел виноград.


Нет, это похоже на то, что кто-то отчаянно хочет найти убедительные причины, но не может, и вынужден сочинять корявые фантазии, не утруждаясь при этом обеспечить хотя бы минимальную похожесть.

P>Природу животного мира в людях никто пока что никто не смог искоренить и красть еду исподтишка — всего лишь один из способов выживания особи в дикой природе. Отец Сергий отрезал себе палец, когда к нему в землянку зашла женщина среди ночи и метели. А теперь представь, что эта же самая женщина зашла бы к пьяным рабочим-вахтовикам в их вагончик — бабу не просто грубо облапали бы, а чего и похуже бы сделали с вероятностью 99 процентов.


Почему у меня это сразу ассоциируется с сишными операциями "неограниченного" приведения типов, "тихими" сужающими преобразованиями, практикой передачи через void *, полностью ручным управлением память. Странно, вроде бы никакой связи. Наверное, музыкой навеяло...

P>Единственный выход — ограничить внесение лажи в проект через написание ПО на чистом Си вместо Си++, чтобы с плёткой не стоять у людей над душой.


При таком подходе, самый правильный выход — сразу застрелиться насовсем, дабы не мучить себя искушениями бесовскими.
Re[9]: Применимость и будущее С++(для подкаста)
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 07.09.24 11:57
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, netch80, Вы писали:


N>>У меня в одном недавнем проекте был бинарник с объёмом кода 250MB ;\


ЕМ>Было бы очень любопытно узнать распределение сущностей по объему — код, двоичные данные для кода, тексты, изображения, видео и т.п.


В основном огромное число толстых библиотек, из бо́льшей части которых используется минимум всякого, но подключали по принципу leftpadʼа.
The God is real, unless declared integer.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.