Вуго́рская ната́цыя — у праграмаваньні пагадненьне пра найменьне зьменных, калі зьменная або функцыя характарызуе сваё прызначэньне ці від, а ў некаторых мовах і тып.
Аўтэнтычная вугорская натацыя ў пагадненьні пра найменьні выкарыстоўвае прызначэньне ці від.
Распрацоўвалася вугорская натацыя мованезалежнай і ўпершыню шырока была выкарыстаная ў мове праграмаваньня BCPL. Паколькі BCPL ня мае ніякіх тыпаў зьвестак, акрамя машынных словаў, праграмоўца ня мае ніякіх іншых сродкаў да запамінаньня тыпу зьменных. Вугорская натацыя прапануе праграмоўцу яўнае апісаньне тыпу кожнай зьменнай.
У вугорскай натацыі назва зьменнай пачынаецца зь некалькіх літараў у ніжнім рэгістры, якія зьяўляюцца пазначэньнем тыпу ці прызначэньня гэтай зьменнай, пасьля якіх ідзе ўласна прыдуманая праграмоўцам назва зьменнай; гэтая апошняя частка часам называецца імя. Першы сымбаль імені можа пачынацца зь вялікай літары, каб адрозьніваць яго ад паказьніка тыпу (глядзіце таксама вярблюджы рэгістар).
Арыгінальную вугорскую натацыю прыдумаў Чарльз Сымоні, які ў 1972—1981 працаваў у Xerox PARC, а пазьней стаў галоўным архітэктарам у Microsoft.
Назва натацыі паходзіць ад роднай краіны Чарльза; вугорскія імёны «перакуленыя» ў параўнаньні з большасьцю іншых эўрапейскіх імёнаў: прозьвішча ідзе перад уласным імем. Напрыклад, імя «Чарльз Сымоні» па-вугорску гучыць як «Шымані Карай». Такім сама чынам і назва тыпу зьменнай папярэднічае ейнаму «імені» ў вугорскай натацыі, у адрозьненьне ад больш звыклага для эўрапейцаў парадку «тып апошнім», прынятаму ў мове Smalltalk. Падчас працы Сымоні Xerox PARC кампанія шырока карысталася менавіта апошнім тыпам найменьняў.
Пазьней натацыю Чарльза Сымоні ўзяў на ўзбраеньне дастасоўны аддзел Microsoft, адсюль прынцып стаў таксама называцца «Дастасоўная вугорская натацыя». Пазьней каманда распрацоўнікаў апэрацыйнай сыстэмы Microsoft Windows удасканаліла натацыю, якая атрымала назву «Сыстэмнай вугорскай». У адрозьненьне ад правілаў Сымоні, які прапанаваў у прэфіксе шыфраваць назву тыпу зьменнай, у сыстэмнай вугорскай натацыі распрацоўнікі Microsoft ужылі больш зразумелыя прэфіксы, якая і цяпер выкарыстоўваецца ў дастасоўным праграмным інтэрфэйсе Windows.
Прывядзем адрозьненьні дастасоўнай і сыстэмнай натацыяў у прэфіксах зьменных.
У сыстэмнай вугорскай натацыі ў прэфіксе зашыфраваны фактычны тып зьвестак зьменнай. Напрыклад:
lAccountNum
: зьменная тыпу long integer («l»
);arru8NumberList
: зьменная тыпу array of unsigned 8-bit integers («arru8»
);bReadLine(bPort,&arru8NumberList)
: функцыя, што вяртае значэньне байтавага тыпу.strName
: зьменная ўяўляе зь сябе радок («str»
) зь іменем, але не ўдакладняе, як уводзіцца гэты радок.Дастасоўная вугорская натацыя імкнецца зашыфраваць лягічны тып зьвестак, чымся фізычны; такім парадкам, яна дае падказку, якое прызначэньне мае зьменная ці што яна захоўвае.
rwPosition
: зьменная ўяўляе зь сябе рад (анг. row; «rw»
);usName
: зьменная ўяўляе зь сябе небясьпечны радок (анг. unsafe string; «us»
), які патрабуе «падчысткі» перад выкарыстаньнемszName
: зьменная ўяўляе зь сябе радок з нулявым байтам у канцы (анг. zero-terminated string; "sz"
); адзін зь першых прапанаваных Сымоні прэфіксаў.Большасьць, хоць ня ўсе, прапанаваных Сымоні прэфіксаў — сэмантычныя ў натуры. На цяперашні погляд некаторыя прэфіксы выглядаюць як фактычныя назвы тыпаў зьвестак (напрыклад, sz
); аднак тады гэтыя прэфіксы ўсё яшчэ былі сэмантычнымі, бо Сымоні прапаноўваў вугорскую натацыю для моваў, дзе немагчыма было адрозьніць некаторыя тыпы зьвестак. Цяперашнія мовы праграмаваньня ўжо немагчыма ўявіць бяз гэтых тыпаў зьвестак.
Яшчэ прыклады з арыгінальных правілаў:
pX
— паказальнік на іншы тып X; вельмі малая сэмантычная інфармацыя.d
— азначае адрозьненьне між двума значэньнямі; напрыклад, dY магло азначаць адлегласьць уздоўж восі Y графу, а зьменная y магла зьяўляцца абсалютнай каардынатай. Гэта цалкам сэмантычнае значэньне.sz
— радок з нулявым байтам у канцы. Для C гэта нясе пэўную сэмантычную інфармацыю, бо незразумела, ці зьменная тыпу char* ёсьць паказальнікам на адзін сымбаль, масіў сымбаляў ці на радок з канцавым нулявым байтам.w
— зьменная-слова. Тут цалкам адсутнічае сэмантычная інфармацыя, таму можна аднесьці гэты запіс да сыстэмнай вугорскай натацыі.b
— байт; у адрозьненьне ад w, сэмантычная інфармацыя прысутная, бо ў C адзіным тыпам зьвестак аднабайтавага памеру ёсьць char, і часам у іх могуць захоўвацца лічбавыя значэньні. Гэты прэфікс адназначна характарызуе, ці можна лічыць значэньне зьменнай сымбалем, ці байтам.bBusy
: booleanchInitial
: charcApples
: падлік элемэнтаўdwLightYears
: double word (сыстэмная)fBusy
: flag (або float)nSize
: integer (сыстэмная) ці падлік (дастасоўная)iSize
: integer (сыстэмная) ці індэкс (дастасоўная)fpPrice
: floating-pointdbPi
: double (сыстэмная)pFoo
: pointerrgStudents
: array або rangeszLastName
: zero-terminated stringu16Identifier
: unsigned 16-bit integer (сыстэмная)u32Identifier
: unsigned 32-bit integer (сыстэмная)stTime
: структура з часаўfnFunction
: назва функцыіМнэмонікі для паказальнікаў і масіваў, якія не зьяўляюцца сапраўднымі тыпамі зьвестак, звычайна бяруцца паводле тыпу зьвестак элемэнтаў:
pszOwner
: паказальнік на радок з нулявым байтам у канцыrgfpBalances
: масіў зь лікаў floataulColors
: масіў з unsigned long (сыстэмная)Хоць вугорская натацыя можа пасаваць для любой мовы ці асяродзьдзя праграмаваньня, пераважна выкарыстоўваецца кампаніяй Microsoft у праграмаваньні на C, у прыватнасьці для Microsoft Windows. Для праграмоўцаў, якія вывучалі праграмаваньне Windows на C, пэўна, найбольш запамінальнымі прыкладамі ёсьць wParam
(парамэтар тыпу word) і lParam
(парамэтар long-integer) для функцыі WindowProc().
hwndFoo
: дэскрыптар вакнаlpszBar
: паказальнік тыпу long на радок з нулявым байтам у канцыПрыхільнікі вугорскай натацыі зазначаюць такія перавагі:
btn
, можна знайсьці ўсе аб’екты Button.Большасьць аргумэнтаў супраць вугорскай натацыі тычацца сыстэмнай галіны, а не дастасоўнай:
This article uses material from the Wikipedia Беларуская (тарашкевіца) article Вугорская натацыя, which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). Зьмест даступны на ўмовах CC BY-SA 4.0, калі не пазначанае іншае. Images, videos and audio are available under their respective licenses.
®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki Беларуская (тарашкевіца) (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.