Stack: što je to i primjena

1. 3. 2020.

Stog je fenomen programiranja i prirodno rješenje. Snop je odmah došao u računalo i postao takva "obitelj", kao da je sve počelo od toga.

što je to stog

Bez stog, procesor ne radi, nema rekurzije i nemoguće je organizirati učinkovite pozive funkcija. Bilo koji algoritam može raditi bez reda, popisa, zbirke, polja ili sustava organiziranih objekata, ali ništa, uključujući sve gore navedeno, ne funkcionira bez memorije i stog.

U zoru početka: procesor, memorija i stog

Idealno pamćenje omogućuje adresiranje izravno vrijednosti - to su razine stroja i jezik visokog stupnja. U prvom slučaju, procesor iterira kroz adrese memorije i izvršava naredbe. U drugom slučaju programator manipulira nizovima. U obje epizode postoje:

  • adresa = vrijednost;
  • index = vrijednost.

Adresa može biti apsolutna i relativna, indeks može biti numerički i asocijativni. Adresa i indeks mogu biti različita adresa, a ne vrijednost, ali to su detalji indirektnog adresiranja. Bez memorije, procesor ne može raditi, ali bez hrpe naredbi i podataka - to je kao brod bez vesala.

Gomila ploča je tradicionalna priča o suštini stog: pojam stog i prijevod u općoj svakodnevnoj svijesti. Ne možete uzeti ploču od dna, možete uzeti samo vrh, a onda će sve ploče biti netaknute.

stack translation

Sve što dođe do zadnjeg stog ide prvo. Savršeno rješenje. U biti, stog, kao prijevod jedne radnje u drugu, pretvara ideje o algoritmu kao slijed operacija.

Suština i koncept stog

Procesor i memorija - glavni strukturni elementi računala. Procesor izvršava naredbe, manipulira adresama memorije, izvlači i mijenja vrijednosti na tim adresama. U programskom jeziku sve se pretvara u varijable i njihove vrijednosti. Suština stog i koncept posljednjeg u prvom izlazu (LIFO) ostaje nepromijenjena.

Kratica LIFO se više ne koristi tako često kao prije. Vjerojatno zato što su popisi pretvoreni u objekte, a prvi u prvi izlaz (FIFO) redovi se primjenjuju prema potrebi. dinamika vrste podataka izgubio je svoju važnost u kontekstu opisa varijabli, ali je svoju važnost stekao u vrijeme izvršavanja izraza: tip danog određuje se u trenutku njegove uporabe, a do tog trenutka možete opisati bilo što i ništa.

posljednji u prvom

Dakle, stog - što je to? Sada znate da je ovo pitanje irelevantno. Doista, bez stog, nema modernog programiranja. Svaki poziv funkcije je prijenos parametara i povratnih adresa. Funkcija može pozvati drugu funkciju - to je opet prosljeđivanje parametara i povratnih adresa. Uspostavljanje mehanizma za pozivanje vrijednosti bez stog je dodatni posao, iako je moguće ostvarivo rješenje.

Mnogi pitaju: "Stack - što je to?". U kontekstu poziva funkcije, sastoji se od tri akcije:

  • spremi povratnu adresu;
  • spremiti sve poslane varijable ili adrese na njih;
  • poziva.

Čim pozvana funkcija ispuni svoju misiju, ona će jednostavno vratiti kontrolu na povratnu adresu. Funkcija može pozvati bilo koji broj drugih funkcija, budući da je granica nametnuta samo veličinom snopa.

Svojstva stog

Stog nije apstraktni tip podataka, nego pravi mehanizam. Na razini procesora, to je "motor" koji oplemenjuje i nadopunjuje rad glavnog ciklusa procesora. Poput bitne aritmetike, stog obuhvaća jednostavna i očita pravila rada. To je sigurno i sigurno.

Karakteristična svojstva dimnjaka su njegova veličina i duljina elemenata. Na razini procesora sve je određeno dubinom bita, adresiranjem memorije i pristupom fizici. Zanimljiva značajka i tradicija: stog se smanjuje, to jest, u smjeru smanjivanja memorijskih adresa, i memorije programa i podataka - gore. To je obično, ali nije potrebno. Ovdje je značenje važno - došlo je posljednje i prvo je otišlo. Ovo iznenađujuće jednostavno pravilo omogućuje vam stvaranje zanimljivih algoritama rada prvenstveno na jezicima visoke razine. Sada nećete pitati, stog - što je to.

sažetak podataka

Savršene performanse hardvera bile su norma već duže vrijeme, ali na samom rubu informacijske tehnologije ideja o stogu preuzima nove i obećavajuće aplikacije.

Zapravo, nije važno što je stog na razini procesora. To je prirodna komponenta. arhitektura računala. Ali u programiranju, stog ovisi o specifičnoj primjeni i sposobnostima programera.

Nizovi, zbirke, popisi, redovi ... Stack!

Često ljudi postavljaju pitanje: "Stack - što je to?". "Programiranje" i "sistematizacija" zanimljivi su pojmovi: oni nisu sinonimi, već su usko povezani. Programiranje je prošlo vrlo brzo tako dugo da se dostignuti vrhovi čine idealnim. Najvjerojatnije nije. Ali očigledno drugo.

Ideja steka postala je poznata ne samo na razini različitih programskih jezika, već i na razini njihovih konstrukcija i mogućnosti stvaranja podatkovnih tipova. Bilo koji niz ima push i pop, a koncepti "prvi i zadnji elementi niza" postali su tradicionalni. Nekada su postojali samo elementi niza, ali danas postoje:

  • elementi niza;
  • prvi element niza;
  • posljednji element polja.

Operacija stavljanja elementa u niz pomiče pokazivač i vraća element iz početka niza ili iz njegovih krajnjih pitanja. U biti, to je isti stog, ali se primjenjuje na druge vrste podataka.

Ideja da se cijeli stack primjenjuje na razvojnog programera!

Posebno je važno napomenuti da popularni programski jezici nemaju konstrukciju stog. Ali oni daju njegovu ideju developeru u cijelosti.