Основная причина, на которую, я думаю, вы ссылаетесь, когда говорите «меньше кода», это ясность и простота дизайна. На языке с такими функциями, как локальные переменные и автоматическое хранение, использовать эти функции бесконечно более естественно, чем структурировать все в домашние стеки. (В конце концов, зачем вообще использовать функции? Почему бы не написать всю программу, используя if
/ else
и while
в качестве единственных управляющих структур?)
Еще одним фактором является производительность, особенно в многопоточных средах. Рекурсия & mdash; в зависимости от языка & mdash; скорее всего будет использовать стек (обратите внимание: вы говорите "создает стек внутри", но на самом деле он использует стек, который программирует на таких языках всегда ), тогда как ручной стек структура потребует динамического выделения памяти , что часто приводит к заметному снижению производительности & mdash; не говоря уже о дополнительной сложности обеспечения освобождения всей этой памяти, когда вы, скажем, встречаете исключение.