Stack: co to je a aplikace

1. 3. 2020

Stack je programovací jev a přirozené řešení. Hromada okamžitě přišla k podnikání v počítači a stala se tak "rodinou", jako by to všechno začalo.

co je ten stoh

Bez zásobníku procesor nefunguje, neexistuje rekurze a není možné organizovat efektivní volání funkcí. Jakýkoli algoritmus lze provést bez fronty, seznamu, sbírky, pole nebo systému organizovaných objektů, ale nic, včetně všech výše uvedených, pracuje bez paměti a zásobníku.

Na úsvitu počátku: procesor, paměť a zásobník

Ideální paměť umožňuje adresování přímo na hodnotu - to jsou úrovně stroje a vysoký stupeň jazyků. V prvním případě procesor iteruje přes adresy paměti a provádí příkazy. Ve druhém případě programátor manipuluje s poli. V obou epizodách jsou:

  • adresa = hodnota;
  • index = hodnota.

Adresa může být absolutní a relativní, index může být číselný a asociativní. Adresa a index mohou mít jinou adresu, nikoliv hodnotu, ale to jsou detaily nepřímého adresování. Bez paměti procesor nemůže fungovat, ale bez stohu příkazů a dat - je to jako loď bez vesel.

Stoh talířů je tradiční příběh o podstatě zásobníku: koncept zásobníku a překlad do obecného každodenního vědomí. Nemůžete vzít talíř ze spodu, můžete vzít pouze vrchol a všechny desky budou neporušené.

stack translation

Všechno, co přichází poslední na zásobník, je první. Dokonalé řešení. V podstatě zásobník, jako překlad jedné akce do druhé, přeměňuje myšlenky na algoritmus jako postup operací.

Podstata a koncept zásobníku

Procesor a paměť - hlavní konstrukční prvky počítače. Procesor provádí příkazy, manipuluje s adresami paměti, extrahuje a upravuje hodnoty na těchto adresách. V programovacím jazyce se toto vše transformuje na proměnné a jejich hodnoty. Podstata zásobníku a koncepce posledního prvního výstupu (LIFO) zůstávají nezměněny.

Zkratka LIFO se již nepoužívá tak často jako dříve. Pravděpodobně proto, že seznamy byly přeměněny na objekty a podle potřeby jsou aplikovány fronty první (FIFO). Dynamika datových typů ztratil svou relevanci v kontextu popisu proměnných, ale získal svou důležitost v době provádění výrazů: typ daného je určen v době jeho použití a až do té chvíle můžete popsat nic a co.

poslední v prvním out

Takže stack - co to je? Teď víte, že tato otázka je irelevantní. Ve skutečnosti, bez zásobníku, neexistuje žádné moderní programování. Každé volání funkce je přenos parametrů a adresy návratu. Funkce může volat jinou funkci - to je opět předávání parametrů a návratových adres. Zavedení mechanismu pro vyvolání hodnot bez zásobníku je mimořádnou prací, i když je určitě možné dosáhnout dosažitelného řešení.

Mnoho lidí se ptá: "Stack - co je to?". V kontextu volání funkce se skládá ze tří akcí:

  • uložit návratovou adresu;
  • uložit všechny přenášené proměnné nebo adresy;
  • volání funkce.

Jakmile požadovaná funkce splní své poslání, jednoduše vrátí kontrolu zpětné adrese. Funkce může volat libovolný počet dalších funkcí, protože limit je uložen pouze velikostí zásobníku.

Vlastnosti zásobníku

Stack není abstraktní typ dat, ale skutečný mechanismus. Na úrovni procesoru je to "motor", který zdokonaluje a doplňuje práci hlavního cyklu procesoru. Stejně jako bitová aritmetika, zásobník zachycuje jednoduchá a zřejmá pravidla provozu. Je to bezpečné a bezpečné.

Charakteristické vlastnosti zásobníku jsou jeho velikost a délka prvků. Na úrovni procesoru je vše určeno hloubkou bitů, adresou paměti a fyzikou přístupu k němu. Zajímavá vlastnost a tradice: zásobník roste, to znamená ve směru klesající adresy paměti a paměť programů a dat. To je obvykle, ale není nutné. Zde je důležitý význam - přišel poslední a odešel první. Toto překvapivě jednoduché pravidlo umožňuje vytvářet zajímavé pracovní algoritmy především v jazycích vysoké úrovně. Nyní se nebudete ptát, stack - co to je.

abstraktní datový typ

Dokonalý hardwarový výkon je již dlouhou dobu normou, ale na špičce informačních technologií se myšlenka zásobníku zabývá novými a slibnými aplikacemi.

Ve skutečnosti nezáleží na tom, jaký je zásobník na úrovni procesoru. To je přirozená součást. počítačové architektury. Programování však závisí na konkrétní aplikaci a schopnostech programátora.

Pole, sbírky, seznamy, fronty ... Stack!

Lidé často kladou otázku: "Stack - co je to?". "Programování" a "systematizace" jsou zajímavé pojmy: nejsou synonyma, ale jsou tak úzce spjaty. Programování probíhalo velmi rychle tak dlouhou cestou, že dosažené vrcholy vypadají jako ideální. S největší pravděpodobností to není. Ale samozřejmě další.

Myšlenka zásobníku se stala známou nejen na úrovni různých programovacích jazyků, ale také na úrovni jejich konstrukčních a datových typů. Každé pole má push a pop a pojmy "první a poslední prvky pole" se staly tradičními. Byly zde jen prvky pole, ale dnes existují:

  • prvky pole;
  • první prvek pole;
  • poslední prvek pole.

Funkce umísťování prvku do pole posune ukazatel a získávání prvku od začátku pole nebo od jeho záležitostí. V podstatě je to stejný zásobník, ale vztahuje se na jiné typy dat.

Myšlenka plného zásobníku aplikovaného na vývojáře!

Je zvláště pozoruhodné, že populární programovací jazyky nemají konstrukci zásobníku. Ale oni dávají jeho myšlenku vývojáři v plném rozsahu.