Stack: što je to i primjena

Stack je fenomen programiranja i prirodno rješenje. Stog je odmah došao do računala i postao tako "autohtoni", kao da je sve počelo.

Nijedan procesor ne radi bez stog, nema rekurzije i učinkovite funkcije poziva se ne mogu organizirati. Bilo koji algoritam može bez redova, popisa, zbirke, niza ili sustava organiziranih objekata, ali bez memorije i stog ništa ne radi, uključujući sve navedeno.

U zoru početka: procesor, memorija i stog

Idealna memorija omogućuje izravno adresiranje vrijednosti - to su strojevi i jezici na visokoj razini. U prvom slučaju, procesor stalno pomiče adrese memorije i izvršava naredbe. U drugom slučaju programator manipulira nizovima. U obje epizode postoje:
  • adresa = vrijednost;
  • indeks = vrijednost.
  • Adresa može biti apsolutna i relativna, indeks može biti digitalna i asocijativna. Adresa i indeks mogu imati različitu adresu od vrijednosti, 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. Stack ploče - tradicionalna priča o biti stog: pojam stog i prijevod u opću svijest. Možete uzeti ploču odozdo, možete uzeti samo odozgo, a onda će sve ploče biti cijele.
    Sve što je posljednje u stogu je prvo. Idealno rješenje. U biti, stog, kao prijevod jedne radnje u drugu, pretvara koncept algoritma kao slijed operacija.

    Suština i koncept stogova

    Procesor i memorija -glavni konstruktivni elementi računala. Procesor izvršava naredbe, manipulira adresama memorije, izvlači i mijenja vrijednosti za te adrese. U programskom jeziku sve se to pretvara u varijable i njihova značenja. Suština stog i koncept "zadnjeg u prvom izlazu" (LIFO) ostaje nepromijenjena.


    LIFO kratica se više ne koristi tako često kao prije, vjerojatno zato što su popisi pretvoreni u objekte i redove prvi u Po potrebi se koristi prvi izlaz (FIFO). Dinamika tipova podataka izgubila je svoju važnost u kontekstu opisa varijabli, ali je dobila njezino značenje u vrijeme izvođenja izraza: vrsta se određuje u trenutku njezina korištenja, a do tog trenutka moguće je opisati bilo što i sve.
    Da, stog - što je to? Sada znate da je ovo pitanje neprikladno. Uostalom, bez stog nema modernog programiranja. Pozivanje funkcije je prijenos parametara i povratnih adresa. Funkcija može pozvati drugu funkciju - to je prijenos parametara i povratna adresa ponovno. Postavljanje mehanizma za pozivanje vrijednosti bez stog je nepotreban posao, iako je moguće ostvarivo rješenje. Mnogi pitaju: "Stack - što je ovo?". U kontekstu poziva funkcije, sastoji se od tri akcije:
  • pohranjivanje povratne adrese;
  • spremanje svih poslanih varijabli ili adresa na njih;
  • funkcija poziva.
  • Čim pozvana funkcija ispuni svoju misiju, ona će jednostavno vratiti kontrolu na povratnu adresu. Funkcija može uzrokovati neograničen broj drugih funkcija, budući da je ograničenje postavljeno samo na veličinustog.

    Svojstva stogova

    Stack nije apstraktni tip podataka, nego pravi mehanizam. Na razini procesora - to je "motor", koji određuje i nadopunjuje rad glavnog ciklusa procesora. Kao bitna aritmetika, stog obuhvaća jednostavna i očita pravila rada. To je sigurno i sigurno.
    Karakteristična svojstva dimnjaka su njezina veličina i duljina elemenata. Na razini procesora sve se određuje bitom, adresom memorije i pristupom fizici. Zanimljiva značajka i tradicija: stog raste prema dolje, tj. Prema smanjenju memorijskih adresa, te memorija programa i podataka - gore. To je obično, ali ne nužno. Ovdje je važan sadržaj - došao je zadnji i otišao prvi. Ovo iznenađujuće jednostavno pravilo omogućuje vam izgradnju zanimljivih algoritama rada prvenstveno na jezicima visoke razine. Sada nećete pitati stog - što je to.
    Besprijekoran rad s hardverom već je dugo bio norma, ali na samom rubu informacijske tehnologije ideja o stogu pronalazi nove i obećavajuće aplikacije. U biti, nije važno što je stog na razini procesora. To je prirodna komponenta arhitekture računala. Ali u programiranju stog ovisi o specifičnoj primjeni i sposobnostima programera.

    Nizovi, zbirke, popisi, redovi redova!

    Često ljudi postavljaju pitanja: "Stack - što je to?". "Programiranje" i "sistematizacija" zanimljivi su pojmovi: oni nisu sinonimi, već su tako usko povezani. Programiranje je bilo vrlo brzo i dugotrajno, tako da su se vrhovi činili savršenima. Najvjerojatnije nije. Ali očito drugačije.

    Ideja o hrpi postala je uobičajena pojavane samo na razini različitih programskih jezika, već i na razini njihovih konstrukcija i sposobnosti stvaranja tipova podataka. Bilo koji niz ima push i pop, a koncept "prvog i posljednjeg elementa polja" postao je tradicionalan. Ranije su postojali samo elementi niza, a danas postoje:
  • elementi niza;
  • prvi element niza;
  • Posljednji element polja.
  • Rad prostora elementa u nizu pomiče pokazivač, a uklanjanje elementa s početka niza ili njegovog kraja je važno. U biti, to je isti stog, ali se primjenjuje na druge vrste podataka.
    Posebno je vrijedno spomenuti da popularni programski jezici nemaju dizajn stogova. Ali oni daju njegovu ideju developeru u cijelosti.

    Povezane publikacije