(Go: >> BACK << -|- >> HOME <<)

Змесціва выдалена Змесціва дададзена
Няма апісаньня зьменаў
Няма апісаньня зьменаў
Радок 1:
{{Мова праграмаваньня|назва=Lua|лёга=[[File:Lua-Logo.svg|128px]]|парадыгма=[[Шматпарадыгмавая мова праграмаваньня|Шматпарадыгмавая]]: [[скрыптовая мова|скрыптовая]], [[Імпэратыўнае праграмаваньне|імпэратыўная]] ([[Працэдурнае праграмаваньне|працэдурная]], [[Прататыпнае праграмаваньне|прататыпная]], [[Аб'ектна-арыентаванае праграмаваньне|аб'ектна-арыентаваная]]), [[Функцыянальнае праграмаваньне|функцыянаяльная]], [[Мэтапраграмаваньне|падтрымлівае мэтапраграмаваньне]], [[Рэфлектыўнае праграмаваньне|рэфлектыўная]]|дата=1993|аўтар=Рабэрту Ерусалімскі<br />Вальдэмар Салес<br />Луіс Энрыке дэ Фігуэйрэда<br />Вальдэмар Салес|вэрсія_стабрэліз=|дата_стабрэліз=|тыпізацыя=[[Дынамічная тыпізацыя|Дынамічная]], [[Моцная і слабая тыпізацыя|слабая]], [[Качыная тыпізацыя|качыная]]|рэалізацыі=[//www.lua.org/download.html Lua], [[LuaJIT]], [//eliasdaler.github.io/luavela/ LuaVela], [https://www.moonsharp.org/ MoonSharp], [//luvit.io Luvit], [//www.luart.org LuaRT], [https://luau-lang.org Lua''u'']|дыялекты=[http://metalua.luaforge.net/ Metalua<!--{{dead link |date=July 2018}}-->], [http://idle.thomaslauer.com Idle], [https://www.nongnu.org/gsl-shell/ GSL Shell]|уплыў_ад=[[C++]], [[CLU (programming language)|CLU]], [[Modula-2|Modula]], [[Scheme (programming language)|Scheme]], [[SNOBOL]]|уплыў_на=[[GameMonkey Script|GameMonkey]]<!--2003-->, [[Io (programming language)|Io]]<!--2002-->, [[Julia (programming language)|Julia]]<!--2012-->, MiniD<!--2006-->, [[Red (programming language)|Red]], [[Ring_(programming_language)|Ring]],<ref name="The Ring programming language and other languages">{{cite web |url=http://ring-lang.sourceforge.net/doc1.6/introduction.html#ring-and-other-languages |title=The Ring programming language and other languages |author=Ring Team |date=5 December 2017 |work=ring-lang.net |access-date=5 December 2017 |archive-date=25 December 2018 |archive-url=https://web.archive.org/web/20181225175312/http://ring-lang.sourceforge.net/doc1.6/introduction.html#ring-and-other-languages |url-status=dead }}</ref> [[Squirrel (programming language)|Squirrel]]<!--2003-->, MoonScript<!--2011-->, [[C--]]|АС=[[Кросплятформавае праграмнае забясьпячэньне|Кросплятформавая]]|ліцэнзія=[[MIT License]]|сайт=[//www.lua.org www.lua.org]}}
 
'''Lua''' (ад [[Партугальская мова|партугальскага]]: lua [ ˈlu(w)ɐ ] "луа", што значыць [[Месяц (спадарожнік)|Месяц]] ) — [[Высокаўзроўневая мова праграмаваньня|высокаўзроўневая]] [[Шматпарадыгмавая мова праграмаваньня|шматпарадыгмавая]] [[Скрыптовая мова|скрыптовая]] [[мова праграмаваньня]]<ref name="luaspe">{{cite journal|last1=Ierusalimschy|first1=Roberto|last2=de Figueiredo|first2=Luiz Henrique|last3=Filho|first3=Waldemar Celes|title=Lua—An Extensible Extension Language|journal=Software: Practice and Experience|date=June 1996|volume=26|issue=6|pages=635–652|doi=10.1002/(SICI)1097-024X(199606)26:6<635::AID-SPE26>3.0.CO;2-P|s2cid=61066194|access-date=24 October 2015|urlаўтар=Рабэрту Ерусалімскі, Луіс Энрыке дэ Фігуэйрэда, Вальдэмар Салес|том=26|старонкі=635–652|год=June 1996|выданьне=Software: Practice and Experience|арыгінал=Lua—An Extensible Extension Language|мова=en|загаловак=Пашыраемая мова пашырэньняў Lua|спасылка=https://www.lua.org/spe.html|access-date=24 October 2015}}</ref>. Lua з'яўляецца [[Кросплятформавае праграмнае забеспячэньне|кросплятформавай]], паколькі [[інтэрпрэтатар]] скампіляванага [[Байт-код|байт-кода]] напісаны на [[ANSI C]],<ref name="luaabout">{{cite web| url = https://www.lua.org/about.html#why| title = AboutПра Lua| publisher = Luawww.lua.org| access-date = 2011-08-11|мова=en}}</ref> і Lua мае адносна простае C [[API]] для ўбудаваньня яго ў дадаткі.<ref>{{cite magazine web|url=https://www.foreignaffairs.com/articles/139332/yuri-takhteyev/from-brazil-to-wikipedia?page=2 |title=FromЗ BrazilБразыліі to Wikipediaў Вікіпэдыю|magazine=[[Foreign Affairs]] |author=Yuri TakhteyevЮры Тахцееў|date=21 April 2013 |access-date=25 April 2013|мова=en|назва праекту=Foreign Affairs}}</ref>
 
== Гісторыя ==
Lua была створаная ў 1993 годзе Рабэрту Ерусалімскім, Луісам Энрыке дэ Фігуэйрэда і Вальдэмарам Салесам, удзельнікамі Tecgraf (Computer Graphics Technology Group - групы тэхналёгій кампутарнай графікі) у Папскім каталіцкім унівэрсытэце Рыа-ды-Жанейра ў Бразіліі.
 
З 1977 па 1992 год у Бразілія праводзіла палітыку жорсткіх [[Гандлёвы бар'ер|гандлёвых бар'ераў]] (так званых рынкавых рэзэрваў) у дачыненьні да кампутарнага абсталяваньня і праграмнага забеспячэньня, мяркуючы, што Бразілія можа і павінна вырабляць іх сама. З-за чаго кліенты Tecgraf не маглі дазволіць сабе, ні палітычна, ні фінансава, купляць індывідуальнае праграмнае забеспячэньне з-за мяжы; згодна з рынкавым рэзэрвам, кліенты павінны былі б прайсьці праз складаны бюракратычны працэс, каб даказаць, што іх патрэбы не могуць быць задаволеныя бразільскімі кампаніямі. Гэта вымусіла Tecgraf ствараць неабходныя інструмэнты з нуля.<ref name="hopl2007">{{cite book| last1 = Ierusalimschy | first1 = R.| author1-link = Roberto Ierusalimschy| last2 = Figueiredo| first2 = L. H. | last3 = Celes| first3 = W.| title = Proceedings of the third ACM SIGPLAN conference on History of programming languages| contribution = The evolution of Lua| contribution-url = https://www.lua.org/doc/hopl.pdf| doi = 10.1145/1238844.1238846| url = https://www.acm.org/sigs/sigplan/hopl| year = 2007| pages = 2–1–2–26| isbn = 978-1-59593-766-7| s2cid=475143|аўтар=Рабэрту Ерусалімскі, Луіс Энрыке дэ Фігуэйрэда, Вальдэмар Салес|арыгінал=The 475143}}{{deadevolution linkof Lua|dateназва=JulyЭвалюцыя 2018Lua|год=2007|старонкі=2–1–2–26}}</ref>
 
Папярэднікамі Lua былі мовы ''SOL'' (Simple Object Language - простая аб'ектная мова) і ''DEL'' (Data-Entry Language - мова ўводу даных).<ref name="luahist2001">{{cite web|url=https://www.lua.org/history.html|title=TheЭвалюцыя evolutionмовы of an extension languageпашырэньня: a history ofгісторыя Lua|year=2001|access-date=2008-12-18|мова=en|выдавец=www.lua.org}}
<!-- {{cite journal| last1 = Ierusalimschy | first1 = R. | author1-link = Roberto Ierusalimschy| last2 = Figueiredo | first2 = L. H.| last3 = Celes | first3 = W. | contribution = The evolution of an extension language: a history of Lua| contribution-url = https://www.lua.org/history.html| title = Proc. of V Brazilian Symposium on Prog. Lang.| year = 2001| pages = B–14–B–28}} --></ref> Яны былі незалежна распрацаваны ў Tecgraf у 1992–1993 гадах, каб дадаць некаторую гнуткасць у два розныя праекты (абодва былі інтэрактыўнымі графічнымі праграмамі для кампаніі Petrobras). У SOL і DEL не хапала структур кіравання патокам, і Petrobras адчувала ўсё большую патрэбу ў тым, каб дадаць да іх поўную магутнасць праграмаваньня.
 
Lua 1.0 была распрацаваны такім чынам, што яго канструктары аб'ектаў, якія ў той час крыху адрозьніваліся ад цяперашняга лёгкага і гнуткага стылю, уключалі сынтакс апісаньня даных SOL (адсюль назва Lua: ''Sol'' азначае «Сонца» на партугальскай мове, а ''Lua'' азначае «Месяц»). [[Сынтакс (мова праграмаваньня)|Сынтакс]] Lua для структур кіраваньня ў асноўным быў запазычаны з [[Modula]] ( <code>if</code>, <code>while</code>, <code>repeat</code> / <code>until</code> ), але таксама паспытаў уплыў [[CLU]] (множныя прызначэнні і множныя вяртанні з функцый, як больш простая альтэрнатыва [[Спасылачны параметар|спасылачным параметрам]] або яўным [[Указальнік (машыннае праграмаваньне)|указальнікам]]), [[C++]] ("выдатная ідэя дазволіць [[Лякальная зьменная|лякальнай зьменнай]] быць аб'яўленай толькі там, дзе яна патрэбна" ), [[SNOBOL]] і [[AWK]] ([[Асацыяцыйны масіў|асацыяцыйныя масівы]]). У артыкуле, апублікаваным у ''часопісе Dr. Dobb's Journal'', стваральнікі Lua таксама сцвярджаюць, што [[LISP]] і [[Scheme]] з іх адзінай універсальнай структурай даных ([[Сьпіс|сьпісам]]) паўплывалі на іх рашэньне выкарыстаць табліцу ў якасьці асноўнай структуры даных Lua.<ref name="ddj96">{{cite newsjournal| last1 = Figueiredo | first1 = L. H. | last2 = Ierusalimschy | first2 = R. | last3 = Celes| first3 = W. |magazine=|issue=12|date=|url=https://www.lua.org/ddj.html|мова=en|аўтар=Рабэрту Ерусалімскі, Луіс Энрыке titleдэ =Фігуэйрэда, Вальдэмар Салес|том=21|старонкі=26–33|арыгінал=Lua: an Extensible Embedded Language. A few metamechanisms replace a host of features|загаловак=Скрыптовая magazineмова = DrLua. Dobb'sЯк Journal|некалькі volumeмэтафункцый =вырашаюць 21шмат праблем| issue выданьне=Dr. 12|Dobb's pages = 26–33Journal| date год= December 1996| url = https://www.lua.org/ddj.html}}</ref>
 
Зь цягам часу сэмантыка Lua падвяргалася ўсё большаму ўплыву Scheme,<ref name=hopl2007 /> асабліва з увядзеньнем [[Ананімная функцыя|ананімных функцый]] і поўнага [[Абсяг прывязкі імя|лексычнага абсягу]]. У новых версіях Lua было дададзена некалькі функцый.