Стацк: шта је то и апликација

1. 3. 2020.

Стацк је програмски феномен и природно рјешење. Стацк је одмах дошао у компјутерски бизнис и постао таква "породица", као да је све почело од тога.

шта је то стог

Без стог, процесор не ради, нема рекурзије и немогуће је организовати ефективне позиве функција. Сваки алгоритам може да ради без реда, листе, колекције, низа или система организованих објеката, али ништа, укључујући све горе наведено, не функционише без меморије и стог.

У освит почетка: процесор, меморија и стацк

Идеална меморија омогућава директно адресирање вредности - то су нивои машина и висок степен језика. У првом случају, процесор итерира преко меморијских адреса и извршава команде. У другом случају програматор манипулира низовима. У обе епизоде ​​постоје:

  • адреса = вредност;
  • индек = валуе.

Адреса може бити апсолутна и релативна, индекс може бити нумерички и асоцијативни. Адреса и индекс могу бити различита адреса, а не вриједност, али то су детаљи индиректног адресирања. Без меморије, процесор не може радити, али без хрпе команди и података - то је као брод без весала.

Гомила плоча је традиционална прича о суштини стог: појам стог и превођење у опћој свакодневној свијести. Не можете узети плочу од дна, можете узети само врх, а онда ће све плоче бити нетакнуте.

стацк транслатион

Све што дође до стог иде прво. Савршено решење. У суштини, стог, као превод једне акције у другу, трансформише идеје о алгоритму као низ операција.

Суштина и концепт стог

Процесор и меморија - главни структурни елементи рачунара. Процесор извршава команде, манипулише адресама меморије, екстрахује и мења вредности на овим адресама. У програмском језику све се трансформише у варијабле и њихове вредности. Суштина стацка и концепт последњег у првом изласку (ЛИФО) остаје непромењен.

Скраћеница ЛИФО се више не користи тако често као раније. Вероватно зато што су листе трансформисане у објекте, а први у првом излазу (ФИФО) редови се примењују по потреби. Динамицс типови података изгубила је своју важност у контексту описа варијабли, али је добила свој значај у вријеме извршавања израза: тип даног одређен је у тренутку његове употребе, а до тог тренутка можете описати било шта и све.

последњи у првом

Дакле, стог - шта је то? Сада знате да је ово питање ирелевантно. Заиста, без гомиле нема модерног програмирања. Сваки позив функције је трансфер параметара и повратних адреса. Функција може да позове другу функцију - то је опет пролазак параметара и повратних адреса. Постављање механизма за позивање вриједности без стог је непотребан рад, иако је могуће оствариво рјешење.

Многи људи питају: "Стацк - шта је то?". У контексту позива функције, он се састоји од три акције:

  • сачувај повратну адресу;
  • сачувати све преносиве варијабле или адресе на њих;
  • позив функције.

Чим позвана функција испуни своју мисију, она ће једноставно вратити контролу на повратну адресу. Функција може позвати било који број других функција, јер је граница наметнута само величином снопа.

Стацк пропертиес

Стацк није апстрактни тип података, већ прави механизам. На нивоу процесора, ово је „мотор“ који оплемењује и допуњава рад главног циклуса процесора. Попут битне аритметике, стацк снима једноставна и очигледна правила рада. То је сигурно и сигурно.

Карактеристичне особине димњака су његова величина и дужина елемената. На нивоу процесора, све је одређено дубином бита, адресирањем меморије и приступом физици. Интересантна особина и традиција: стог се смањује, односно у правцу смањења меморијских адреса, а меморија програма и података расте. Ово је обично, али није неопходно. Овде је значење важно - дошло је последње и прво је отишло. Ово изненађујуће једноставно правило омогућава вам да градите занимљиве алгоритме рада првенствено на језицима високог нивоа. Сада нећете питати, стог - шта је то.

Апстрактни тип података

Савршене перформансе хардвера су норма већ дуже време, али на самом врху информационих технологија идеја о стацку преузима нове и обећавајуће апликације.

У ствари, није важно шта је стог на нивоу процесора. Ово је природна компонента. архитектура рачунара. Али у програмирању, стацк зависи од специфичне примене и способности програмера.

Низови, колекције, листе, редови ... Стацк!

Често људи постављају питање: "Стацк - шта је то?". "Програмирање" и "систематизација" су интересантни концепти: они нису синоними, већ су уско повезани. Програмирање је прошло веома брзо тако дуго да се достигнути врхови чине идеалним. Највјероватније није. Али очигледно друго.

Идеја о стацку постала је позната не само на нивоу различитих програмских језика, већ и на нивоу њихових конструкција и могућности креирања типова података. Било који низ има пусх и поп, а концепти "први и задњи елементи низа" постали су традиционални. Некада су постојали само елементи низа, али данас постоје:

  • елементи елемената;
  • први елемент низа;
  • последњи елемент поља.

Операција стављања елемента у низ помера показивач и враћа елемент из почетка низа или из његових крајњих ствари. У суштини, ово је исти стацк, али се примењује на друге типове података.

Идеја о потпуном стацку примењеном на програмера!

Посебно је важно напоменути да популарни програмски језици немају конструкцију стог. Али они дају његову идеју девелоперу у потпуности.