Імпэратыўнае праграмаваньне

**Імпэратыўнае праграмаваньне** (, даслоўна — загаднае праграмаваньне) у інфарматыцы разглядаецца як супрацьлегласьць дэкляратыўнаму праграмаваньню, гэта парадыгма праграмаваньня, у якой вылічэньне апісваецца ў тэрмінах стану праграмы і камандаў зьмены гэтага стану. Загадны лад у натуральных мовах выражае каманды зрабіць дзеяньне, а імпэратыўныя праграмы — гэта набор праграм для выкананьня кампутарам.

Імпэратыўнае праграмаваньне не падобнае да іншых тыпаў праграмаваньня, такіх як функцыянальнае і лягічнае. Функцыянальныя мовы праграмаваньня, такія як *[[Haskell]]*, не зьяўляюцца мовамі, у якіх праграмы выглядаюць пасьлядоўнасьцю апэратараў і ня маюць глябальнага стану. Мовы лягічнага праграмаваньня, напрыклад *[[Prolog]]*, указваюць, «што» трэба зрабіць, а ня «як» гэта трэба зрабіць.

## Агляд
Праграмнае забесьпячэньне амаль усіх кампутараў імпэратыўнае; амаль усе кампутары выконваюць машынны код, родны кампутару, напісаны ў імпэратыўным стылі. З гэтага нізкаўзроўневага пункту гледжаньня, стан праграмы вызначаецца зьместам памяці, а каманды — гэта інструкцыі ў машыннай мове кампутару. Высокаўзроўневыя імпэратыўныя мовы выкарыстоўваюць зьменныя і больш складаныя каманды, але ўсё ж выкарыстоўваюць тую самую парадыгму.

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

Апэрацыі прысвойваньня, у агульным, выконваюць апэрацыю над інфармацыяй у памяці і зьберагаюць вынік у памяці для далейшага выкарыстаньня. Высокаўзроўневыя імпэратыўныя мовы, акрамя таго, дазваляюць вылічэньне складаных выразаў, якія ўключаюць арыфмэтычныя апэрацыі вылічэньня функцыяў і запіс выніку ў памяць. З дапамогай цыкляў можна выканаць нейкія дзеі патрэбную колькасьць разоў ці выконваць іх, пакуль ня будзе выкананая ўмова. З дапамогаю апэратараў умоўных пераходаў можна выканаць часткі кода толькі тады, калі нейкая ўмова выконваецца. Безумоўныя пераходы дазваляюць перайсьці да выкананьня коду ў другой частцы праграмы. Гэты ўключае *jump*, які называецца ў многіх мовах праграмаваньня «*[[goto]]*» , і вызаў падпраграмы, ці працэдуры.

## Гісторыя
Першымі імпэратыўнымі мовамі праграмаваньня былі машынныя мовы арыгінальных кампутараў. У гэтых мовах інструкцыі былі вельмі простымі, што дазваляла лягчэй ствараць праграмнае забесьпячэньне, аднак перашкаджала стварэньню складаных праграм. FORTRAN, створаны Джонам Бэкусам у IBM у 1957 годзе, быў першай мовай праграмаваньня, якая забрала перапоны машыннага коду пры стварэньні складаных праграм. FORTRAN быў кампілюемай мовай і меў званыя зьменныя, складаныя выражэньні, падпраграмы і шмат іншых магчымасьцей, якія зараз сустракаюцца ў імпэратыўных мовах праграмаваньня. У наступныя два дзесяцігодзьдзі распрацоўвался шмат іншых імпэратыўных моваў праграмаваньня. У канцы 1950-х — 1960-х гадоў быў створаны ALGOL для лягчэйшага выражэньня матэматычных альгарытмаў, і ён нават выкарыстоўваўся як асноўная мова апэрацыйных сыстэм нейкіх кампутараў. Мовы праграмаваньня COBOL (1960) і BASIC (1964) былі спробамі стварыць мову, болей падобную на ангельскую. У 1970-х гадах Ніклаўс Вірт стварыў Pascal, Дэніс Рычы, пад час сваёй работы ў Bell Laboratories, стварыў C. Пасьля гэтага Вірт стварыў мовы Modula-2, Modula-3 і Oberon. Для патрэбаў Дэпартамэнту абароны ЗША, Жан Іхбія і каманда Honeywell пачалі ствараць мову праграмаваньня Ada ў 1974 годзе, якая сфакусавана на аспэктах бясьпекі і была скончаная ў 1983 годзе.

У 1980-х гадах назіралася вялікае павелічэньне цікавасьці да аб'ектна-арыентаванага праграмаваньня. Мовы зь яго падтрымкай былі імпэратыўнымі, аднак з дадатковымі магчымасьцямі падтрымкі аб’ектаў. Апошнія два дзесяцігодзьдзі 20 стагодзьдзя распрацоўваліся такія мовы. Smalltalk-80, прыдуманы Аланам Кеем у 1969 годзе, быў рэалізаваны ў 1980 годзе ў Xerox Palo Alto Research Center. Выкарыстоўваючы ідэі іншай аб’ектна-арыентаванай мовы — Simula (якая лічыцца першай у сьвеце аб’ектна-арыентаванай мовай праграмаваньня, створанай у 1960-я гады) — Б'ярнэ Строўструп стварыў C++ — аб’ектна-арыентаваную мову на аснове C. C++ была ўпершыню рэалізаваная ў 1985 годзе. У канцы 1980-х і ў 1990-х гадах, заметнай імпэратыўнай і аб’ектна-арыентаванай мовай праграмаваньня сталі Perl, створаная ў 1987 годзе Лары Ўолам; Python, створаная ў 1990 годзе Гвіда ван Росумам; PHP, створаная ў 1994 годзе Расмусам Лердорфам; і Java, упершыню створаная ў Sun Microsystems у 1994 годзе.

## Прыклады моваў
Кананічныя прыклады імпэратыўных моваў праграмаваньня — *[[FORTRAN]]* і *[[Algol]]*. Сярод іншых — *[[Pascal]]*, *[[C (мова праграмаваньня)|C]]* і *[[Ada]]*.

## Глядзіце таксама
* Дэкляратыўнае праграмаваньне
* Парадыгмы праграмаваньня
* Працэдурнае праграмаваньне

## Літаратура
* Pratt, Terrence W. and Marvin V. Zelkowitz. Programming Languages: Design and Implementation. 3rd ed. Englewood Cliffs, N.J.: Prentice Hall, 1996.
* Sebesta, Robert W. Concepts of Programming Languages. 3rd ed. Reading, Mass.: Addison-Wesley Publishing Company, 1996.

Катэгорыя:Праграмаваньне
Катэгорыя:Парадыгмы праграмаваньня