Агляд парадыгм праграмавання
У гэтым артыкулы мы зробім агульны агляд наступных трох парадыгм: структурнае праграмаванне, аб’ектна-арыентаванае праграмаванне і функцыянальнае праграмаванне.
Структурнае праграмаванне
Першай парадыгмай, якая атрымала агульнае прызнанне (але не першая з прыдуманых) была парадыгма структурнага праграмавання, прапанаваная Эдсгерам Вібэ Дэйкстрай у 1968 годзе. Дэйкстра паказаў, што бескантрольнае выкарыстанне пераходаў (інструкцый goto
) шкодна для структуры праграмы. Ён прапанаваў замяніць пераходы больш зразумелымі канструкцыямі if\else
і do\while\until
.
То-бок:
Структурнае праграмаванне накладвае абмежаванне на прамую перадачу кіравання.
Аб’ектна-арыентаванае праграмаванне
Другой парадыгмай, якая атрымала шырокае распаўсюджанне, стала парадыгма, якая з'явілася на два гады раней, у 1966 годзе і прапанаваная Оле-Ёханам Дале і Крыстэнам Нюгарам. Гэтыя два праграмісты заўважылі, што ў мове ALGOL ёсць магчымасць перамясціць кадр стэка выкліку функцый у дынамічную памяць (кучу), дзякуючы чаму лакальныя пераменныя, аб’яўленыя ўнутры функцыі, могуць захоўвацца пасля выхаду з яе. У выніку функцыя пераўтваралася ў канструктар класа, лакальныя пераменныя - у пераменныя экзэмпляра, а ўложаныя функцыі - у метады. Гэта прывяло да адкрыцця полімарфізму праз строгае выкарыстанне паказальнікаў на функцыі.
То-бок:
Аб’ектна-арыентаванае праграмаванне накладае абмежаванне на ўскосную перадачу кіравання.
Функцыянальнае праграмаванне
Трэцяй парадыгмай, якая атрымала шырокае распаўсюджанне адносна нядаўна, з'яўляецца самая першая з прыдуманых. Фактычна вынаходству гэтай парадыгмы папярэднічала з'яўленне самой ідэі праграмавання. Парадыгма функцыянальнага праграмавання з'яўляецца прамым вынікам работы Алонза Чорча, які ў 1936 годзе прыдумаў лямбда-вылічэння, калі даследаваў тую ж матэматычную задачу, якую прыкладна ў той жа час вырашаў Алан Цьюрынг. Яго лямбда-вылічэнне лягло ў аснову мовы LISP, распрацаванай у 1958 годзе Джонам Макарці. Асноўным паняццем лямбда-вылічэнняў з'яўляецца нязменнасць - то-бок немагчымасць змянення значэнняў сімвалаў. Фактычна гэта значыць, што функцыянальная мова не мае інструкцыі прысвойвання. У рэальнасці большасць функцыянальных моў маюць некаторыя сродкі, якія дазваляюць змяняць значэнні пераменных, але ў вельмі абмежаваных выпадках.
То-бок:
Функцыянальнае праграмаванне накладае абмежаванне на прысвойванне.
Заключэнне
Звярніце ўвагу, што кожная парадыгма забірае ў праграміста нейкія магчымасці. Ні адна не дадае новыя магчымасці. Кожная накладае дадатковыя абмежаванні. Парадыгмы кажуць не што рабіць, а што нельга рабіць.
Тры парадыгмы забіраюць у нас інструкцыю goto
, паказальнік на функцыю і аператар прысвойвання. Цi ёсць яшчэ нешта, што можна забраць?
Хутчэй за ўсё, не. Таму, хутчэй за ўсё, гэтыя тры парадыгмы застануцца адзінымі, што мы пабачым - прынамсі адзінымі, што забіраюць у нас. Доказам адсутнасці новых парадыгм з'яўляецца той факт, што ўсе тры парадыгмы былі адкрыты цягам дзесяцігоддзя паміж 1958 і 1968 гадамі. Пасля гэтага не з'явілася ніводнай новай парадыгмы.
Каментары
(Каб даслаць каментар залагуйцеся ў свой уліковы запіс)