Стек: какво е то и приложението

Стекът е явление на програмиране и естествено решение. Стека веднага дойде на компютъра бизнес и стана толкова "роден", сякаш от всичко започна.

Никой процесор не работи без стек, няма рекурсия и ефективните функции за повикване не могат да бъдат организирани. Всеки алгоритъм може да се справи без опашка, списък, колекция, масив или система от организирани обекти, но без памет и стек нищо не работи, включително всичко изброено.

В зората на началото: процесор, памет и стек

Идеалната памет осигурява адресиране директно към стойността - това са машини и езици на високо ниво. В първия случай процесорът последователно премества адресите на паметта и изпълнява команди. Във втория случай програмистът манипулира масиви. И в двата епизода има:
  • адрес = стойност;
  • индекс = стойност.
  • Адресът може да бъде абсолютен и относителен, индексът може да бъде дигитален и асоциативен. Адресът и индексът могат да имат различен адрес от стойността, но това са подробности за непрякото адресиране. Без памет, процесорът не може да работи, но без куп от команди и данни - това е като лодка без весла. Стек плочи - традиционна история за същността на стека: концепцията за стека и превода в общото съзнание. Можете да вземете една чиния отдолу, можете да вземете само отгоре, а след това всички плочи ще бъдат цели.
    Всичко, което е последно в стака, е първото. Идеално решение. По същество, стека, като превод на едно действие в друго, преобразува концепцията на алгоритъма като последователност от операции.

    Същността и концепцията на стека

    Процесор и памет -основните конструктивни елементи на компютъра. Процесорът изпълнява команди, манипулира адресите на паметта, извлича и променя стойностите на тези адреси. В програмния език всичко това се превръща в променливи и техните значения. Същността на стека и понятието "последно на първо място" (LIFO) остава непроменена.


    Съкращението LIFO вече не се използва толкова често, колкото преди. Динамиката на типовете данни е загубила своята значимост в контекста на описанието на променливите, но е придобила нейното значение в момента на изпълнение на изрази: видът на това се определя в момента на неговото използване и до този момент е възможно да се опише всичко и все пак.
    Да, стека - какво е това? Сега знаете, че този въпрос е неподходящ. В края на краищата, без стак няма модерно програмиране. Извикването на функция е прехвърлянето на параметри и адреси за връщане. Функцията може да извика друга функция - това е прехвърлянето на параметри и обратния адрес отново. Създаването на механизъм за извикване на стойности без стек е ненужна задача, въпреки че постижимото решение определено е възможно.

    Мнозина питат: „Стек - какво е това?“. В контекста на извикване на функция, той се състои от три действия:
  • съхраняване на обратен адрес;
  • запазване на всички предавани променливи или адреси върху тях;
  • функция за повикване. Веднага след като извиканата функция изпълни мисията си, тя просто ще върне контрола на обратния адрес. Функцията може да предизвика произволен брой други функции, тъй като ограничението е наложено само върху размерастека.

    Свойства на стека

    Стекът не е абстрактен тип данни, а реален механизъм. На нивото на процесора - това е "двигател", който уточнява и допълва работата на основния цикъл на процесора. Като битова аритметика, стека улавя прости и очевидни правила на работа. Той е безопасен и сигурен.
    Характерните свойства на комина са неговият размер и дължина на елементите. На нивото на процесора всичко се определя от бита, адреса на паметта и физиката на достъпа. Интересна характеристика и традиция: стека се увеличава надолу, т.е. към намаляване на адресите на паметта и паметта на програмите и данните - нагоре. Това обикновено е, но не е задължително. Ето едно важно съдържание - дойде последното и отиде първо. Това учудващо просто правило ви позволява да изграждате интересни алгоритми на работа главно на езици на високо ниво. Сега няма да питате стека - какво е това.
    Безупречната работа с хардуера отдавна е норма, но на върха на информационните технологии идеята за стек открива нови и обещаващи приложения. По същество няма значение какъв стек на нивото на процесора. Това е естествен компонент на компютърната архитектура. Но при програмирането стека зависи от конкретното приложение и способности на програмиста.

    Масиви, колекции, списъци, опашки Stack!

    Често хората задават въпроси: "Стек - какво е това?". "Програмиране" и "систематизация" са интересни понятия: те не са синоними, а са толкова тясно свързани. Програмирането беше много бързо и дълготрайно, тъй като срещите на върха изглеждаха перфектни. Най-вероятно не е така. Но очевидно различен.

    Идеята за стак е станала обичайнане само на ниво различни езици за програмиране, но и на нивото на техните конструкции и възможността за създаване на типове данни. Всеки масив има пук и поп, а концепцията за "първи и последни елементи на масива" е станала традиционна. Преди това имаше само елементи от масива, а днес има:
  • елементи на масива;
  • първият елемент на масива;
  • Последният елемент от масива.
  • Действието на пространството на елемент в масив движи показалеца, а отстраняването на елемент от началото на масив или от неговия край е важно. По същество той е един и същ стек, но се прилага и за други типове данни.
    Особено забележително е, че популярните езици за програмиране нямат дизайн на стека. Но те дават идеята му на предприемача изцяло.

    Свързани публикации