2013-11-27 2 views
1

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

Я думаю, что это блестящая идея.

  • Кто первым придумал идею вызова стека?
  • С каких пор компьютеры имеют вспомогательные инструкции для стека?
  • Есть ли исторически значимая бумага?

ответ

1

Насколько я знаю, компьютеры использовали стек вызовов с самых ранних дней.

Штабы были впервые предложены Аланом Тьюрингом, начиная с 1946 года. Я считаю, что стеки сначала использовались в качестве теоретической концепции для определения pushdown automatons.

Первая статья о стеке вызовов, которую я мог найти, была написана Дейкстра в журнале Numerische Mathematik под названием «Рекурсивное программирование» (http://link.springer.com/article/10.1007%2FBF01386232).

Также обратите внимание, что стек вызовов существует в основном из-за рекурсии. Возможно, будет сложно узнать, кто действительно получил идею для стека вызовов, в первую очередь, поскольку довольно интуитивно понятно, что стек необходим, если вы хотите поддерживать рекурсию. Рассмотрим эту цитату из «Программирования программирования программистов» - Deep C Secrets, Peter Van Der Linden:

Стек не нужен, кроме рекурсивных вызовов. Если не для , то фиксированное количество мест для локальных переменных, параметров и обратных адресов будет известно во время компиляции и может быть выделено в BSS. [...] Разрешение рекурсивных вызовов означает, что мы должны найти способ, позволяющий одновременно создавать несколько экземпляров локальных переменных , хотя будет доступен только последний из них - классическая спецификация стека.

Это из главы 6, стр. 143/144 - если вам нравятся подобные вещи, я настоятельно рекомендую вам прочитать его.

Легко понять, что стек, вероятно, является подходящей структурой для использования, когда требуется отслеживать цепочку вызовов, поскольку вызовы функций на удержании возвращаются в режиме LIFO.

 Смежные вопросы

  • Нет связанных вопросов^_^