КампутарыПраграмаванне

"Што гэта" прыйшло ў стэк, "што гэта" вярнулася назад: абстрактны падмурак рэальнасці

Магчыма, у нейкай будучыні вылічальнае справу забудзецца пра нулі і адзінкі, а працэсары будуць апераваць ня байтамі і словамі, але пакуль усё прадстаўлена двайковым светам і жыве па яго правілах. Што такое стэк і дзе ён ужываецца, - хутчэй за ўсё, стане абсалютна не ясна. Яшчэ ў пачатку свайго з'яўлення першы працэсар меў рэгістры, а логіка яго працы мела патрэбу ў памяці. У выніку рэалізацыі простых ідэй стэк "што гэта" стаў дэ факта «так трэба».

Функцыі, працэсар, двайковая логіка

Працэсар кіруе памяццю і рэалізуе логіку цыклічнага выканання кода. Праграма - гэта адна або набор функцый, якія ўяўляюць сабой паслядоўнасць аперацый: выбраць нешта, зрабіць так-то, пакласці туды-то. Аперацыйная сістэма - таксама код, больш адказны: яму даручана выконваць і кантраляваць іншыя праграмы.

Уласна функцыя (самастойны элемент алгарытму) - усяго толькі паслядоўнасць двайковых аперацый. Праграма адрозніваецца ад функцыі тым, што рэалізуе сябе і каардынуе іншыя часткі кода.

Прынята алгарытм распрацоўваць ў выглядзе паслядоўнасці асобных самастойных элементаў. Кожны выконвае ўласную (звычайна толькі адну) функцыю - гэта зручна для адладкі, наглядна, практычна. Такое праграмаванне дазваляе спрасціць працэс распрацоўкі, ствараць бібліятэкі алгарытмаў і выкарыстоўваць іх у іншых праектах.

Перадача і вяртанне кіравання

Праграма выклікае функцыю і, перадаючы ёй дадзеныя, разлічвае атрымаць вынік. Так выкананне іншага ўчастку кода ініцыюецца звонку, таму вяртанне кіравання павінен быць ажыццёўлены на наступную за выклікам аперацыю. Гэтым механізмам забяспечваецца парадак выканання кода і дасягненне выніку праграмы ў цэлым.

Код загружаецца ў памяць і паслядоўна выконваецца. Каб выклікаць функцыю (іншы ўчастак кода), выкарыстоўваецца стэк. Што гэта? Памяць (і паказальнік да яе), адрозная ад звычайнай тым, што кожны наступны элемент змяшчаецца над папярэднім. Таму, каб атрымаць кожны, які знаходзіцца ніжэй, трэба ўзяць і адпрацаваць усе, што знаходзяцца над ім. Паказальнік заўсёды паказвае на бягучую пазіцыю ў стэку.

Першапачаткова ў стэк трапляе адрас вяртання - адрас наступнай за выклікам аперацыі. Затым туды змяшчаюцца ўсе неабходныя для выкліканай функцыі дадзеныя. Выкліканая функцыя выбірае дадзеныя, апрацоўвае іх, фармуе вынік і вяртае кіраванне па апошнім элементу стэка. Каманда: «стэк, што гэта» перамяшчае паказальнік на папярэдняе дадзенае, а наадварот "гэта" паступае ў апрацоўку.

Рэгістры AX, BX, CX, DX, EX сталі свайго роду знакамі эпохі пачатку інфармацыйнай эры, але SP і SS - гэта яе галоўны талісман. Як ўжываюць стэк у праграмаванні? Прыклады мінулага не стануць помнікамі архітэктуры пачатку эры. Стэк прыйшоў у двайковы свет разам са словамі "функцыя" і "Рэкурсія" і растварыўся ў агульнай логіцы развіцця практыкі праграмавання.

Сервіраваць дадзеныя, каб вырашыць, што рабіць

Стековых механізм дапускае шматлікія выклікі розных участкаў кода, у тым ліку і рэкурсіі: выклік функцыяй самой сябе. Ёсць натуральныя абмежаванні: памеры памяці пад стэк і пад код павінны быць дастатковымі. Калі праграма карэктная, то яе выкананне будзе стабільным, перадача / вяртанне кіравання - дакладнымі.

Стэк запаўняецца, як талеркі кладуцца ў чарку, якая адпраўляецца сервіраваць стол. Лёс талерак, гэта значыць іх напаўненне, вырашаецца ў месцы, куды яна перададзеная. Па логіцы ўзаемадзеяння, каманда "стэк, што гэта» дае загадзя ўзгодненае дадзенае між тым, хто выклікаў, і тым, каго ён выклікаў. Па завяршэнні працэсу важна вярнуць ўпраўленне па адрасе, наступнага за тым, што адправіў стос на стол.

Вельмі простая і эфектыўная логіка. Што робіцца на стале, як прымаецца рашэнне - справа функцыі, як яна паступіць з атрыманымі дадзенымі - яе клопат, на які стол яна адправіць свой стос дадзеных - яе клопат, галоўнае ў тым, каб кіраванне заўсёды вярталася на наступную за выклікам аперацыю. Функцыя можа выклікаць саму сябе, толькі калі яна дапускае рэкурсіі, а Рэкурсія магчымая толькі ў тым выпадку, калі дадзеныя кладуцца ў стэк.

фундаментальныя абстракцыі

Калі штодзённае і практычнае становіцца асновай віртуальна-перспектыўнага, можна абгрунтавана разлічваць на аб'ектыўнасць і доўгае жыццё апошняга. Чарка талерак дала жыццё стэку, а стэк забяспечыў працу працэсараў, аперацыйных сістэм, праграм, функцый і сферы высокіх тэхналогій у цэлым.

Класічны выпадак, калі простае стала асновай, але рэдкі выпадак, калі гэта можна ацаніць без пустых спрэчак пра сінтаксіс, семантыцы, механізмах праграмавання і прыярытэтаў у барацьбе моў за выжыванне.

Зменная, як была ячэйкай памяці, так і засталася ёю па гэты дзень, толькі вось ўяўленні аб ёй змяніліся. Ўпэўнена прайшоўшы скрозь пекла строгай тыпізацыі, яны сёння сцвярджаюць: что-то можа быць чым заўгодна і займаць у рэальнай памяці што заўгодна, паколькі менавіта гэта ўжо зусім не важна.

Аператары прысвойвання, умоў, цыклаў, блокаў ... змяніліся значна менш у сэнсавым плане, ну а сінтаксіс ўжо даўно не мае значэння. Барацьба моў праграмавання за ідэалы не дала шанец на перамогу аднаму з іх. Інструмент (кампілятар / інтэрпрэтатар / абалонка) абавязаны проста працаваць, быць стабільным і поўнафункцыянальным, а як і што напісаць / выкарыстоўваць - клопат праграміста, а не аўтара мовы.

Стэк набыў новае значэнне ў гэтым глабальным працэсе развіцця уяўленняў і тэхналогій. Зменныя ў тым выглядзе, у якім ім быць зручна, напластоўваюцца адзін на аднаго, а алгарытмы і аператары ўключаюцца сябар у сябра. Часта можна чуць пра стэку пратаколаў, калі адзін забяспечвае працу іншага.

Стэк, функцыянальнасць і Рэкурсія - зусім ня сінонімы, але яны выдатна дапаўняюць адзін аднаго, дазваляючы ствараць унікальныя варыянты прадстаўлення і апрацоўкі інфармацыі.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 be.atomiyme.com. Theme powered by WordPress.