Stack: kaj je in aplikacija

1. 3. 2020

Sklad je fenomen programiranja in naravna rešitev. Stack je takoj prišel v računalniško poslovanje in postal taka »družina«, kot da se je vse od nje začelo.

kaj je to stack

Brez sklada, procesor ne deluje, ni rekurzije in je nemogoče organizirati učinkovite klice funkcij. Vsak algoritem lahko brez čakalne vrste, seznama, zbirke, niza ali sistema organiziranih objektov, vendar nič, vključno z vsem zgoraj navedenim, ne deluje brez pomnilnika in skladov.

Na začetku začetka: procesor, pomnilnik in sklad

Idealen spomin omogoča neposredno obravnavanje vrednosti - to so ravni strojev in jezik visoke stopnje. V prvem primeru procesor preiskuje naslove pomnilnika in izvrši ukaze. V drugem primeru programer manipulira polja. V obeh epizodah:

  • naslov = vrednost;
  • index = vrednost.

Naslov je lahko absoluten in relativen, indeks je lahko številčen in asociativen. Naslov in indeks sta lahko drugačen naslov, ne vrednost, vendar sta podrobnosti posrednega naslavljanja. Brez pomnilnika, procesor ne more delovati, vendar brez kupa ukazov in podatkov - je kot čoln brez vesla.

Kup plošč je tradicionalna zgodba o bistvu kupa: pojem stack in prevod v splošno vsakodnevno zavest. Ne morete vzeti ploščo od spodaj, lahko vzamete samo vrh, nato pa bodo vse plošče nepoškodovane.

prevod stack

Vse, kar je zadnje na stacku, gre najprej. Popolna rešitev. V bistvu stack, kot prevod enega dejanja v drugega, pretvori ideje o algoritmu kot zaporedje operacij.

Bistvo in koncept sklada

Procesor in pomnilnik - glavni strukturni elementi računalnika. Procesor izvaja ukaze, manipulira naslove pomnilnika, ekstrahira in spreminja vrednosti na teh naslovih. V programskem jeziku se vse to spremeni v spremenljivke in njihove vrednosti. Bistvo sklada in koncept zadnjega prvega izhoda (LIFO) ostaja nespremenjen.

Kratica LIFO se ne uporablja več tako pogosto, kot prej. Verjetno zato, ker so bili seznami preoblikovani v objekte in so po potrebi uporabljene čakalne vrste prve v prvem izhodu (FIFO). Dinamika podatkovnih tipov izgubil svoj pomen v kontekstu opisa spremenljivk, vendar je pridobil svoj pomen v času izvajanja izrazov: tip danega se določi v času njegove uporabe in do tega trenutka lahko opišemo karkoli in karkoli.

zadnji v prvem

Torej, stack - kaj je to? Zdaj veste, da to vprašanje ni pomembno. Dejansko, brez kupa, ni sodobnega programiranja. Vsak klic funkcije je prenos parametrov in povratnih naslovov. Funkcija lahko pokliče drugo funkcijo - to je ponovno posredovanje parametrov in povratnih naslovov. Vzpostavitev mehanizma za priklic vrednosti brez sklada je dodatno opravilo, čeprav je možna rešitev.

Veliko ljudi se sprašuje: "Stack - kaj je to?". V okviru klica funkcije je sestavljen iz treh dejanj:

  • shranite povratni naslov;
  • shranite vse prenesene spremenljivke ali naslove nanje;
  • klic funkcije.

Takoj ko klicana funkcija izpolni svoje poslanstvo, bo preprosto vrnila nadzor na povratni naslov. Funkcija lahko kliče poljubno število drugih funkcij, saj je omejitev določena samo z velikostjo sklada.

Lastnosti skladov

Stack ni abstrakten tip podatkov, ampak pravi mehanizem. Na procesorski ravni je to »motor«, ki izpopolnjuje in dopolnjuje delo glavnega procesorskega cikla. Tako kot bitna aritmetika, stack zajame preprosta in očitna pravila delovanja. Je varna in varna.

Značilne lastnosti dimnika so njegova velikost in dolžina elementov. Na ravni procesorja je vse odvisno od globine bita, naslavljanja pomnilnika in dostopa do fizike. Zanimiva lastnost in tradicija: stack se zniža, to je v smeri zmanjševanja naslovov pomnilnika in pomnilnika programov in podatkov - navzgor. To je običajno, vendar ni potrebno. Tukaj je pomen pomemben - prišel je zadnji in zapustil prvi. To presenetljivo preprosto pravilo vam omogoča gradnjo zanimivih delovnih algoritmov predvsem v jezikih na visoki ravni. Sedaj ne boste vprašali, ali je stack - kaj je to.

abstraktni tip podatkov

Popolna zmogljivost strojne opreme je že dolgo norma, toda na najnovejšem področju informacijske tehnologije je ideja o skladbi dobila nove in obetavne aplikacije.

Pravzaprav ni pomembno, kaj je stack na ravni procesorja. To je naravna sestavina. računalniška arhitektura. Toda pri programiranju je sklad odvisen od specifične uporabe in sposobnosti programerja.

Nizi, zbirke, seznami, čakalne vrste ... Stack!

Pogosto ljudje postavljajo vprašanje: "Stack - kaj je to?". "Programiranje" in "sistematizacija" sta zanimiva koncepta: nista sinonimi, temveč sta tesno povezana. Programiranje je potekalo zelo hitro tako dolgo, da so doseženi vrhovi videti idealni. Najverjetneje ni. Ampak očitno drugo.

Zamisel o stacku se je spoznala ne samo na ravni različnih programskih jezikov, temveč tudi na ravni njihovih konstrukcij in zmožnosti ustvarjanja podatkovnega tipa. Vsako polje ima push in pop, koncepti "prvi in ​​zadnji elementi polja" pa so postali tradicionalni. Včasih so bili samo elementi matrike, danes pa obstajajo:

  • Elementi nizov;
  • prvi element matrike;
  • zadnji element polja.

Postopek umeščanja elementa v polje premakne kazalec in pridobi element od začetka matrike ali njegovih končnih zadev. V bistvu je to isti stack, vendar se uporablja za druge vrste podatkov.

Zamisel o polnem kupu, ki velja za razvijalca!

Še posebej je treba omeniti, da priljubljeni programski jeziki nimajo konstrukta skladov. Ampak oni dal svojo idejo, da razvijalec v celoti.