Re[12]: Правомерно ли такое
От: ollv СССР https://youtu.be/DQDoYs6wHoo
Дата: 27.08.20 17:54
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Здравствуйте, rg45, Вы писали:


R>>Ну, я могу только порассуждать на эту тему. По расходу памяти — это ведь смотря как писать код. Размеры блоков не лимитированы и число временных объектов, создаваемых в подвыражениях, могло бы зашкаливать за разумные рамки.


TB>На практике я на некотором другом языке (тоже с RAII) писал, там по сути любое выражение вида

TB>
TB>f(g())
TB>

TB>означало что-то типа
TB>
TB>tmp=g();
TB>f(tmp);
TB>

TB>И этот tmp жил до конца текущего блока, и что-то стек с кучей от этого не переполнялись.
Ну о куче тут вообще нет разговора, а вот стек ) это до поры до времени. Вот внедрится эта хрень куда-то в рекурсивный разбор,

foo(v = g())
{
foo(g());
// и тут вычисления, что исключит оптимизацию в хвостовую рекурсию и вуаля, стек будет выеден мгновенно
}

R>>А с другой стороны, наверное, не смогли придумать сценариев, когда бы это создавало какие-то непреодолимые трудности.


TB>Даже на чистом асме нет непреодолимых трудностей.

есть, в реальных проектах вполне.

TB>В данном примере трудность была создана — удалось получить ссылку на объект, у которого уже вызвался деструктор.

TB>Да, она преодолима. Но это трудность, на решение которой будут тратиться лишние человекочасы.
Лишние человекочасы это не снос проекта, когда логика изменений для простой задачи размазывается по всему 10*n-летнему коду. или при появлении новых технологий проект безнадежно устаревает, и сделать с ним ничего нельзя.
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.