Чому вкладається щось на стек під назвою "push"?


22

За даними http://dictionary.reference.com

поштовх

дієслово (використовується з об’єктом)

  1. натискати на або проти (річ) силою, щоб відсунути її.

  2. рухатись (чимось) певним чином, здійснюючи силу; засунути; привід: відсунути щось убік; відсунути двері .

  3. здійснити чи досягти, відсуваючи перешкоди вбік: просуватися через натовп.

  4. викликати продовження чи проект; тяга.

  5. щоб натиснути або закликати до якоїсь дії чи курсу: Мати підштовхнула його до роботи.

Цей IMO підходить до черг FIFO . Чи є для цього пояснення?


2
Ну .. в Ізраїлі аналогія була для журналу гармати, як вам потрібно ПУСИТИ кулі в .., але я думаю, що мені більше подобається диспенсер pez.
GY

@GY - LOL - Я прийшов сюди, щоб сказати саме це (річ Пеза). БАСТАРД! Цікава культура є в Ізраїлі, хоча ...
Едвард Странд

Я здогадуюсь, якщо тільки сьогодні я FGITW!
Скотт C Вілсон

1
Це запитання було задано і відповіли на stackoverflow - stackoverflow.com/questions/420315/stacks-why-push-and-pop . І те, і інше обговорюються.
Братч

Потрібен тег "історія".
Братч

Відповіді:


47

За легендою, оригінальний стек отримав свою назву за аналогією із стосами посуду в університетській кафетерії: ви ставите один зверху, і (навантажений весною) стоп посуду трохи опускається, ви забираєте один, і він спливає трохи вгору. Тому "натискання" отримало конотацію роботи вниз, навіть якщо ви насправді не натискаєте на тарілку - ви просто встановите її, і сила тяжіння спрацює. "Стек Pushdown" все ще є поширеною фразою, і стеки, як правило, зростають в пам'яті (тобто, зі зменшенням адрес пам'яті), хоча сумнівно, чи має це щось спільне з набором страв чи ні.


1
Pushdown може походити від Pushdown Automata.
Одід

11
@Oded Я майже впевнений, що це навпаки. Автомат "pushdown" - це кінцевий автомат, доповнений стеком натискання.
Конрад Рудольф

І ви знаєте, якийсь бідний дурень там вчиться, тому що ПК нараховується "вгору", нижчі адреси пам'яті знаходяться внизу.
Філіп

У мене було враження, що походження пов'язане з цими документами. Знаєте, цвях, утримуваний вертикально, на який ви натискаєте шматочки паперу,
Ян

44

Подумайте про дозатор Pez . Це ваша ментальна модель для стека - останнє, перше. Таким чином, додавання елемента в стек вимагає відсунути наявні елементи, щоб звільнити місце.

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


2
мммммм ... Пез !!!
Стівен А. Лоу

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

Я спокусився -1 для привіт-кошеня, але це не зробить відповіді та справедливості аналогії. Тож +1 від мене.
0xC0000022L

і ось як ви пояснюєте дитині "Стек" :)
Chani

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

3

FIFO - черга - перша, додана до групи, - перша, яку подають.

LIFO - це стопка - як купа лотків. Ви завжди берете той із верхньої частини стопки.

Термін push використовується при додаванні предмета до LIFO / Stack, оскільки в деяких кафетеріях стос лотків знаходиться на завантаженій пружиною поверхні. Оскільки більше елементів висувається на стек, весь стек опускається нижче.

Коли верхній / найновіший елемент виймається зі стека, верхній "вискакує" з верхньої частини стека.


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

@Caleb, TAOCP Том 1 (стор. 237 у другій редакції) означає, що він це робить, але не дає цитування. Попередня сторінка розповідає про те, як терміни "стек" та "черга" "поступово стають стандартною термінологією", тому це може бути найранішим потенційним посиланням.
mpdonadio

3

Ілюстрації, що використовували тарілки чи підноси для кафетеріїв, дозатори пез та купи книг, з’явилися пізніше. З Вікіпедії: (з посиланнями)

"Стек був вперше запропонований у 1946 р. В комп'ютерному дизайні Алана М. Тьюрінга (який використовував терміни" поховати "і" unbury ") як засіб виклику та повернення з підпрограм." Додаткові роботи та патенти інших людей випливали в 1957 р. Поточні ілюстрації стеків, якими ми користуємось сьогодні, могли призвести до того, що оригінальні умови поховання та unbury Тюрінга перетворилися в push and pop. Можливо, ці терміни просто звучать краще.

Дізнатися, де або коли це сталося - це відповідь на питання ОП. Можливо, відповідь похований у одній із посилань у Вікіпедії на кшталт " Verfahren zur automatisis Verarbeitung von kodierten Daten und Rechenmaschine zur Ausübung des Verfahrens ".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.