Stack: co to jest i aplikacja

01.03.2020

Stos jest zjawiskiem programistycznym i naturalnym rozwiązaniem. Stos natychmiast przyszedł do biznesu komputerowego i stał się taką "rodziną", jakby wszystko zaczęło się od tego.

co to za stos

Bez stosu procesor nie działa, nie ma rekursji i niemożliwe jest zorganizowanie efektywnych wywołań funkcji. Każdy algorytm może obejść się bez kolejki, listy, kolekcji, macierzy lub systemu zorganizowanych obiektów, ale nic, łącznie z wszystkimi powyższymi, działa bez pamięci i stosu.

U zarania początku: procesor, pamięć i stos

Idealna pamięć zapewnia adresowanie bezpośrednio do wartości - są to poziomy maszynowe i język wysokiego poziomu. W pierwszym przypadku procesor przechodzi przez adresy pamięci i wykonuje polecenia. W drugim przypadku programista manipuluje tablicami. W obu odcinkach są:

  • address = value;
  • index = wartość.

Adres może być bezwzględny i względny, indeks może być numeryczny i asocjacyjny. Adres i indeks mogą być innym adresem, a nie wartością, ale są to szczegóły adresowania pośredniego. Bez pamięci procesor nie może działać, ale bez stosu poleceń i danych - jest jak łódź bez wioseł.

Stos płyt to tradycyjna opowieść o istocie stosu: koncepcja stosu i tłumaczenia w powszechnej codziennej świadomości. Nie możesz wziąć płyty od dołu, możesz wziąć tylko górę, a wtedy wszystkie płyty będą nietknięte.

Tłumaczenie stosu

Wszystko, co przychodzi ostatnio na stos, idzie na pierwszym miejscu. Idealne rozwiązanie. Zasadniczo stos, jako tłumaczenie jednej akcji na drugą, przekształca pomysły na temat algorytmu jako ciąg operacji.

Istota i koncepcja stosu

Procesor i pamięć - główne elementy konstrukcyjne komputera. Procesor wykonuje polecenia, manipuluje adresami pamięci, wyodrębnia i modyfikuje wartości na tych adresach. W języku programowania wszystko to jest przekształcane na zmienne i ich wartości. Istota stosu i koncepcja ostatniego na wyjściu (LIFO) pozostają niezmienione.

Skrót LIFO nie jest już używany tak często jak wcześniej. Prawdopodobnie dlatego, że listy zostały przekształcone w obiekty, a kolejki pierwszego na wyjściu (FIFO) są stosowane w razie potrzeby. Dynamika typy danych utraciło to znaczenie w kontekście opisu zmiennych, ale nabrało swojego znaczenia w momencie wykonywania wyrażeń: rodzaj danego jest określany w momencie jego użycia i do tego momentu można opisać wszystko i cokolwiek.

ostatnio na pierwszym miejscu

A więc stos - co to jest? Teraz wiesz, że to pytanie jest nieistotne. Rzeczywiście, bez stosu, nie ma nowoczesnego programowania. Każde wywołanie funkcji jest przeniesieniem parametrów i adresów zwrotnych. Funkcja może wywoływać inną funkcję - to znów przekazuje parametry i adresy zwrotne. Ustanowienie mechanizmu wywoływania wartości bez stosu jest dodatkową pracą, chociaż możliwe do osiągnięcia rozwiązanie jest z pewnością możliwe.

Wiele osób pyta: "Stack - co to jest?". W kontekście wywołania funkcji składa się z trzech akcji:

  • zapisz adres zwrotny;
  • zapisywać do nich wszystkie przesyłane zmienne lub adresy;
  • wywołanie funkcji.

Jak tylko wywoływana funkcja spełni swoją misję, po prostu przekaże sterowanie do adresu zwrotnego. Funkcja może wywoływać dowolną liczbę innych funkcji, ponieważ limit jest narzucany tylko przez rozmiar stosu.

Właściwości stosu

Stos nie jest abstrakcyjnym typem danych, ale prawdziwym mechanizmem. Na poziomie procesora jest to "silnik", który udoskonala i uzupełnia pracę głównego cyklu procesora. Podobnie jak arytmetyka bitowa, stos przechwytuje proste i oczywiste zasady działania. Jest bezpieczny.

Charakterystyczne właściwości stosu to jego rozmiar i długość elementów. Na poziomie procesora wszystko zależy od głębi bitowej, adresowania pamięci i fizyki dostępu do niej. Ciekawa cecha i tradycja: stos rośnie, to znaczy w kierunku malejących adresów pamięci, a pamięć programów i danych - w górę. Jest to zazwyczaj, ale nie jest konieczne. Tutaj znaczenie jest ważne - przyszło na końcu i zostało jako pierwsze. Ta zaskakująco prosta reguła pozwala budować interesujące algorytmy pracy przede wszystkim w językach wysokiego poziomu. Teraz nie zapytasz, stos - co to jest.

abstrakcyjny typ danych

Doskonała wydajność sprzętu jest normą od dawna, ale w czołówce technologii informatycznych idea stosu przyjmuje nowe i obiecujące aplikacje.

W rzeczywistości nie ma znaczenia, jaki stos znajduje się na poziomie procesora. To jest naturalny składnik. architektura komputerowa. Ale w programowaniu stos zależy od konkretnego zastosowania i umiejętności programisty.

Tablice, kolekcje, listy, kolejki ... Stos!

Często ludzie zadają pytanie: "Stack - co to jest?". "Programowanie" i "systematyzacja" to interesujące pojęcia: nie są one synonimami, ale są tak blisko ze sobą powiązane. Programowanie przebiegało bardzo szybko tak długą drogą, że osiągnięte szczyty wydają się idealne. Najprawdopodobniej tak nie jest. Ale oczywiście inny.

Idea stosu stała się znana nie tylko na poziomie różnych języków programowania, ale także na poziomie ich konstrukcji i możliwości tworzenia typów danych. Każda tablica ma push i pop, a pojęcia "pierwszy i ostatni element tablicy" stały się tradycyjne. Kiedyś były tylko elementy tablicowe, ale dzisiaj są:

  • elementy tablicy;
  • pierwszy element tablicy;
  • ostatni element tablicy.

Operacja umieszczenia elementu w tablicy przesuwa wskaźnik, a pobieranie elementu od początku tablicy lub od jej końca ma znaczenie. Zasadniczo jest to ten sam stos, ale stosowany do innych typów danych.

Idea pełnego stosu stosowanego do programisty!

Na szczególną uwagę zasługuje fakt, że popularne języki programowania nie mają konstrukcji stosu. Ale w pełni przekazują swój pomysł deweloperowi.