Perché mettere qualcosa in pila chiamato "push"?


22

Secondo http://dictionary.reference.com

spingere

verbo (usato con l'oggetto)

  1. premere sopra o contro (una cosa) con forza per allontanarla.

  2. muoversi (qualcosa) in un modo specificato esercitando forza; spingere; guidare: mettere da parte qualcosa; per aprire la porta .

  3. per effettuare o realizzare spingendo da parte gli ostacoli: farsi strada attraverso la folla.

  4. far estendere o proiettare; spinta.

  5. premere o sollecitare un'azione o un corso: sua madre lo ha spinto a trovare un lavoro.

Questo IMO si adatta alle code FIFO . C'è una spiegazione per questo?


2
Bene ... in Israele l'analogia era per una rivista di armi poiché devi spingere i proiettili in .. ma penso che mi piaccia di più il dispencer pez.
GY

@GY - LOL - Sono venuto qui per dire esattamente questo (la cosa di Pez). BASTARDO! Cultura interessante lì in Israele però ...
Edward Strange,

Immagino che solo per oggi sono FGITW!
Scott C Wilson,

1
Questa domanda è stata posta e ha risposto su stackoverflow - stackoverflow.com/questions/420315/stacks-why-push-and-pop . Push e pop sono entrambi discussi.
Bratch

Richiede tag "cronologia".
Bratch

Risposte:


47

Secondo la leggenda, la pila originale ha ricevuto il suo nome per analogia con le pile di piatti nella mensa universitaria: ne metti una in cima e la pila (caricata a molla) si abbassa un po ', ne toglie una e si apre un pochino. Pertanto, "spingere" ha ricevuto una connotazione di funzionamento verso il basso, anche se in realtà non si spinge verso il basso sul piatto: lo si limita a posare e la gravità fa il lavoro. "Pushdown stack" è ancora una frase comune e le pile tendono a crescere verso il basso nella memoria (cioè con indirizzi di memoria decrescenti), anche se è dubbio che ciò abbia a che fare con le pile di piatti o meno.


1
Il pushdown può avere origine dagli automi pushdown.
Oded,

11
@Oded Sono abbastanza sicuro che sia il contrario. Un automa pushdown è un automa finito aumentato da una pila pushdown.
Konrad Rudolph,

E sai che qualche povero pazzo là fuori sta imparando che, poiché il PC conta "in alto", gli indirizzi di memoria più bassi sono in fondo.
Filippo,

Avevo l'impressione che l'origine avesse a che fare con quei picchi di documenti. Sai, un chiodo tenuto verticalmente su cui spingi pezzi di carta
Ian

44

Pensa a un distributore Pez . Questo è il tuo modello mentale per uno stack: ultimo in entrata, primo in uscita. Quindi l'aggiunta di un oggetto a una pila richiede di spingere verso il basso gli oggetti esistenti per fare spazio.

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


2
mmmmmm ... Pez !!!
Steven A. Lowe,

1
Stavo per suggerire il modello di una rivista di munizioni, ma il distributore Pez è un'immagine mentale molto più adatta alle famiglie. +1 e vorrei poter votare di più.
KeithS,

Sono tentato di -1 per ciao gattino, ma non renderebbe giustizia alla risposta e all'analogia. Quindi +1 da me.
0xC0000022L

ed è così che spieghi "Stack" a un bambino :)
Chani,

StackOverflow sarebbe quando provi a riempirlo con un intero pacchetto di Pez e l'intera cosa si stacca dalle dita prima di inserirlo in modo che si diffonda in tutto il luogo.
timore reverenziale

3

FIFO è una coda: il primo aggiunto al gruppo è il primo servito.

LIFO è una pila - come un mucchio di vassoi. Prendi sempre quello dalla cima della pila.

Il termine push viene usato quando si aggiunge un oggetto al LIFO / Stack, perché in alcune mense la pila di vassoi si trova su una superficie caricata a molla. Man mano che vengono inseriti più oggetti nella pila, l'intera pila affonda più in basso.

Quando l'elemento superiore / più recente viene rimosso dalla pila, quello superiore viene "estratto" dalla parte superiore della pila.


La pila di piatti in una caffetteria viene spesso utilizzata per illustrare come funziona una struttura di dati di pila, ma hai qualche prova che sia da lì che viene la terminologia?
Caleb,

@Caleb, TAOCP Volume 1 (p. 237 nella seconda edizione) implica che lo fa, ma non dà una citazione. La pagina precedente parla di come i termini "pila" e "coda" stanno "diventando gradualmente terminologia standard", quindi questo potrebbe essere il primo riferimento potenziale.
mpdonadio,

3

Le illustrazioni che usavano piatti o vassoi da mensa, distributori di pez e pile di libri arrivarono tutte dopo. Da Wikipedia: (con riferimenti)

"La pila è stata proposta per la prima volta nel 1946, nel progetto al computer di Alan M. Turing (che ha usato i termini" seppellire "e" non seppellire ") come mezzo per chiamare e tornare dalle subroutine." Altri lavori e brevetti seguiti da altri seguirono nel 1957. Le attuali illustrazioni di pile che usiamo oggi potrebbero aver fatto evolvere in push e pop i termini originali di seppellimento e sepoltura di Turing. Forse questi termini suonano meglio.

Trovare esattamente dove o quando ciò è accaduto è la risposta alla domanda del PO. Forse la risposta è sepolta in uno dei riferimenti di Wikipedia come " Verfahren zur automatischen Verarbeitung von kodierten Daten und Rechenmaschine zur Ausübung des Verfahrens ".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.