Por que colocar algo na pilha chamado "push"?

22

De acordo com http://dictionary.reference.com

empurrar

verbo (usado com o objeto)

  1. pressionar contra ou contra (uma coisa) com força para afastá-la.

  2. mover (algo) de uma maneira especificada, exercendo força; empurrão; drive: empurrar algo de lado; empurrar a porta aberta .

  3. efetivar ou realizar empurrando obstáculos de lado: abrir caminho através da multidão.

  4. causar estender ou projetar; impulso.

  5. pressionar ou insistir em alguma ação ou curso: sua mãe o pressionou para conseguir um emprego.

Este IMO se encaixa nas filas FIFO . Há uma explicação para isso?

doc
fonte
2
Bem ... em Israel, a analogia era para uma revista de armas, pois você precisa empurrar as balas para dentro .. mas acho que gosto mais do pez dispencer.
GY 14/05
@ GY - LOL - Eu vim aqui para dizer exatamente isso (a coisa Pez). DESGRAÇADO! Cultura interessante lá em Israel embora ...
Edward Estranho
Eu acho que se por hoje eu for FGITW!
C #: Scott C Wilson
1
Esta pergunta foi feita e respondida em stackoverflow - stackoverflow.com/questions/420315/stacks-why-push-and-pop . Push e pop são discutidos.
Bratch
Precisa da tag "history".
Bratch

Respostas:

47

Segundo a lenda, a pilha original recebeu esse nome por analogia às pilhas de pratos na cafeteria da universidade: você coloca uma em cima e a pilha de pratos (com mola) desce um pouco, você tira uma e ela se abre um pouco. Portanto, 'empurrar' recebeu uma conotação de operar para baixo, mesmo que você não empurre a placa - basta colocá-la no chão e a gravidade faz o trabalho. "Pilha de empilhamento" ainda é uma frase comum e as pilhas tendem a crescer para baixo na memória (ou seja, com a diminuição dos endereços de memória), embora seja duvidoso que isso tenha algo a ver com pilhas de pratos ou não.

Kilian Foth
fonte
1
O pushdown pode se originar do Pushdown Automata.
Oded
11
@ Oded, tenho certeza que é o contrário. Um autômato de empilhamento é um autômato finito aumentado por uma pilha de empilhamento.
Konrad Rudolph
E você sabe que algum pobre idiota está aprendendo que, como o PC conta "up", endereços de memória mais baixos estão na parte inferior.
Philip
Fiquei com a impressão de que a origem tinha algo a ver com esses picos de documentos. Você sabe, um prego na vertical em que você empurra pedaços de papel em
Ian
44

Pense em um distribuidor Pez . Esse é o seu modelo mental para uma pilha - último a entrar, primeiro a sair. Portanto, adicionar um item a uma pilha exige que você empurre os itens existentes para liberar espaço.

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

Scott C Wilson
fonte
2
mmmmmm ... Pez !!!
Steven A. Lowe
1
Eu sugeriria o modelo de uma revista de munição, mas o dispensador Pez é uma imagem mental muito mais familiar. +1 e gostaria de poder votar mais.
Keiths
Estou tentado a -1 para olá gatinha, mas não faria a resposta e a analogia de justiça. Então, um de mim.
0xC0000022L
e isso é como você explicar "Pilha" para uma criança :)
Chani
O StackOverflow seria quando você tentar preenchê-lo com um pacote inteiro de Pez, e a coisa toda sairá dos seus dedos antes de você colocá-lo para que ele se espalhe por todo o lugar.
temor
3

FIFO é uma fila - o primeiro adicionado ao grupo é o primeiro servido.

O LIFO é uma pilha - como um monte de bandejas. Você sempre pega o que está no topo da pilha.

O termo push é usado ao adicionar um item ao LIFO / Stack, porque em algumas lanchonetes a pilha de bandejas fica em uma superfície com mola. À medida que mais itens são empurrados na pilha, a pilha inteira diminui.

Quando o item superior / mais recente é removido da pilha, o item superior é "retirado" do topo da pilha.

mhoran_psprep
fonte
A pilha de pratos em uma lanchonete é frequentemente usada para ilustrar como uma estrutura de dados de pilha funciona, mas você tem alguma evidência de que é daí que a terminologia vem?
Caleb
@Caleb, TAOCP Volume 1 (p. 237 na segunda edição) implica que sim, mas não cita. A página anterior fala sobre como os termos "pilha" e "fila" estão "gradualmente se tornando uma terminologia padrão", portanto essa pode ser a referência potencial mais antiga.
Mpdonadio 15/05/12
3

As ilustrações usando pratos ou bandejas de cafeteria, dispensadores de pez e pilhas de livros vieram mais tarde. Da Wikipedia: (com referências)

"A pilha foi proposta pela primeira vez em 1946, no design de computador de Alan M. Turing (que usava os termos" enterrar "e" unbury ") como um meio de ligar e retornar das sub-rotinas." Trabalhos adicionais e patentes de outras pessoas foram seguidos em 1957. As ilustrações atuais das pilhas que usamos hoje podem ter causado os termos originais de enterramento e desentendimento de Turing a evoluir para empurrar e estourar. Talvez esses termos soem melhor.

Encontrar exatamente onde ou quando isso aconteceu é a resposta para a pergunta do OP. Talvez a resposta esteja escondida em uma das referências da Wikipedia como " Verfahren zur automatischen Verarbeitung von kodierten Daten und Rechenmaschine zur Ausübung des Verfahrens ".

Bratch
fonte