> Эта особенность языка очень неудобнаТолько до тех пор, пока вы не знаете язык, на котором вы пишите.
> и заставляет программиста писать не с использованием языка, а "на языке"
Да кто вам таких глупостей наплел, что можно писать "с использованием языка", т.е. не зная язык?! А говорить вы тоже хотите с использованием языка, а не на языке? Хотите программировать, не изучая язык -- рисуйте лучше блок схемы. Я уже насмотрелся на код силиконщиков, которые пишут всё в одной функции, используя только magic numbers, без комментариев, без использования фреймфворков и применяя какие-то абсолютно нелепые стили кодирования. Они тоже думают, что кодируют "с использованием языка". Лучше б такие люди просто блок-схемы рисовали, а нормальные программисты уже нормальный код писали по ним.
> То есть, по логике вещей хотелось бы писать
> декларативно: взяли то, сохранили там, положили туда.
Процессор не работает декларативно, он работает императивно. Чем дальше вы будете отходить от языка машины -- тем больше ресурсов будет потреблять программы, написанные на таком языке. Теперь, задача программиста -- не написать программу максимально удобным и простым для себя образом, а написать программу, которая будет наиболее выгодна и удобна пользователю (в первую очередь). А значит, будет работать максимально эффективно и потреблять минимум системных ресурсов, имея при этом максимальную отзывчивость интерфейса.
> А приходится писать так, что потом сам черт ногу сломит.
Извините, но если вам такая простая фича языка доставляет столько сложностей, то мне сложно представить, что вы скажете про мета-программирование (templates), или что вы скажете когда дойдёт дело до серьезной алгоритмики или математики, или до работы с железом, где кроме программирования надо еще понимать как работает железо, ОС, и знать электронику. Там вещи сложнее на несколько порядков, и то что временный объект в RHS выражения автоматически удаляется -- об этом вообще на автомате думаешь, без какого-либо дискомфорта.
> Вместо него язык диктует какие-то функциональные извращения
Каждый язык диктует свои правила, на то он и язык. А извращения или нет -- это субьективно. Как по мне, после 3-х лет программирования на C++ и 2-х лет на чистом Си (профессионально), -- автоматически создаваемый и убиваемый временный объект в правой части выражения -- это очень удобно, это несомненно фича, а не бага.