Почему в стек помещается что-то, что называется «push»?


22

По данным http://dictionary.reference.com

От себя

глагол (используется с объектом)

  1. давить на или против (вещь) с силой, чтобы отодвинуть ее.

  2. двигаться (что-то) определенным образом, прикладывая силу; пихать; диск: отодвинуть что-то в сторону; толкнуть дверь .

  3. осуществлять или достигать, отбрасывая препятствия в сторону: пробиваться сквозь толпу.

  4. вызвать, чтобы расширить или проектировать; тяги.

  5. нажимать или побуждать к какому-либо действию или курсу: его мать заставила его устроиться на работу.

Это ИМО подходит для очередей FIFO . Есть ли объяснение этому?


2
Ну что ж ... в Израиле аналогия была с оружейным магазином, так как нужно толкать патроны ... но я думаю, что мне больше нравится дозатор Pez.
GY

@GY - LOL - Я пришел сюда, чтобы сказать именно это (вещь Pez). УБЛЮДОК! Интересная культура там, в Израиле, хотя ...
Эдвард Стрендж

Я догадываюсь, если только на сегодня я FGITW!
Скотт С Уилсон

1
Этот вопрос задавался и отвечал на stackoverflow - stackoverflow.com/questions/420315/stacks-why-push-and-pop . Пуш и поп оба обсуждаются.
Bratch

Нужен тег "история".
Bratch

Ответы:


47

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


1
Pushdown может происходить из Pushdown Automata.
Одед

11
@ Сейчас я уверен, что все наоборот. Автомат с нажатием - это конечный автомат, дополненный стеком с нажатием.
Конрад Рудольф

И вы знаете, что какой-то бедный дурак узнает, что, поскольку ПК считает «вверх», нижние адреса памяти находятся внизу.
Филипп

У меня сложилось впечатление, что происхождение было связано с этими шипами документов. Вы знаете, гвоздь, удерживаемый вертикально, на который вы кладете кусочки бумаги
Ян

44

Подумайте о дозаторе Pez . Это ваша ментальная модель для стека - последний пришел, первый вышел. Таким образом, добавление предмета в стек требует от вас выталкивания существующих предметов, чтобы освободить место.

http://i.stack.imgur.com/VJkYi.jpg


2
мммммм ... Pez !!!
Стивен А. Лоу

1
Я собирался предложить модель журнала боеприпасов, но дозатор Pez - гораздо более дружелюбная для семьи ментальная картина. +1, и я хотел бы больше проголосовать.
KeithS

У меня искушение -1 для привет котенок, но это не будет ответ и справедливость аналогии. Так что +1 от меня.
0xC0000022L

и вот как вы объясняете «Стек» ребенку :)
Чани

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

3

FIFO - это очередь, первая добавленная в группу - первая доставленная.

LIFO - это стек, как куча лотков. Вы всегда берете тот из вершины стека.

Термин « толчок» используется при добавлении элемента в LIFO / Stack, поскольку в некоторых кафе стопка лотков находится на подпружиненной поверхности. Чем больше предметов помещается в стек, тем меньше становится весь стек.

Когда верхний / новый элемент удаляется из стека, верхний элемент «выталкивается» из верха стека.


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

@Caleb, том 1 TAOCP (стр. 237 во втором издании) подразумевает, что это так, но не дает цитаты. На предыдущей странице говорится о том, как термины «стек» и «очередь» «постепенно становятся стандартной терминологией», так что это может быть самой ранней потенциальной ссылкой.
mpdonadio

3

Иллюстрации с использованием тарелок или подносов столовой, дозаторов и стопок книг появились позже. Из Википедии: (со ссылками)

«Стек был впервые предложен в 1946 году в компьютерном проекте Алана М. Тьюринга (который использовал термины« похоронить »и« похоронить ») в качестве средства вызова и возврата из подпрограмм». Дополнительные работы и патенты других авторов последовали в 1957 году. Текущие иллюстрации стеков, которые мы используем сегодня, возможно, привели к тому, что первоначальные термины Тьюринга «похоронить и похоронить» превратились в «толчок и популярность». Возможно, эти термины звучат лучше.

Точное определение того, где и когда это произошло, является ответом на вопрос ОП. Может быть, ответ скрыт в одной из ссылок Википедии, таких как « Verfahren zur automatischen Verarbeitung von kodierten Daten und Rechenmaschine zur Ausübung des Verfahrens ».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.