Lua (лю́а; з [ˈlu.(w)ɐ], што азначае месяц) — легкаважная, высокаўзроўневая, шматпарадыгменная мова праграмавання, распрацаваная галоўным чынам для ўбудаванага выкарыстання ў прыкладных праграмах. Lua з’яўляецца кросплатформавай мовай, паколькі інтэрпрэтатар скампіляванага байт-кода напісаны на ANSI C, і Lua мае адносна просты API для C, што спрашчае яе ўбудаванне ў прыкладных праграмах.
Lua паўстала ў 1993 годзе як мова для пашырэння прыкладнога ПЗ для задавальнення попыту на наладжванне, які ўзрастаў у той час. Яна забяспечвала асноўныя магчымасці большасці працэдурных моў праграмавання, але больш складаныя або прадметна-спецыфічныя магчымасці не былі ўключаны; хутчэй, яна ўключала механізмы для пашырэння мовы, што дазваляе праграмістам рэалізоўваць такія функцыі. Паколькі Lua задумвалася як агульная ўбудаваная мова пашырэнняў, праекціроўшчыкі Lua сканцэнтраваліся на паляпшэнні яе хуткасці, партатыўнасці, пашыральнасці і прастаты выкарыстання пры напісанні праграм.
Гісторыя Lua быў створаны ў 1993 годзе Раберта Ерусалімскім (Roberto Ierusalimschy), Луісам Энрыке дэ Фігейрэда (Luiz Henrique de Figueiredo) і Вальдэмарам Селесам (Waldemar Celes), членамі Групы тэхналогій камп’ютэрнай графікі (Tecgraf) у Папскім каталіцкім універсітэце Рыа-дэ-Жанэйра ў Бразіліі.
З 1977 па 1992 год у Бразіліі дзейнічала палітыка жорсткіх гандлёвых бар’ераў (так званых рынкавых рэзерваў) для камп’ютэрнага абсталявання і праграмнага забеспячэння. У такой атмасферы кліенты Tecgraf не маглі сабе дазволіць ні палітычна, ні фінансава купляць індывідуальнае праграмнае забеспячэнне з-за мяжы. Гэтыя прычыны падштурхнулі Tecgraf да распрацоўкі неабходных асноўных інструментаў з нуля.
Папярэднікамі Lua былі мовы апісання/канфігурацыі даных SOL (мова простых аб’ектаў, англ.: Simple Object Language) і DEL (мова ўводу даных, англ.: data-entry language). Яны былі незалежна адна ад адной распрацаваны ў Tecgraf у 1992—1993 гадах, каб дадаць некаторую гнуткасць у два розныя праекты (абодва былі інтэрактыўнымі графічнымі праграмамі для інжынерных прыкладных праграм у кампаніі Petrobras). У SOL і DEL не хапала якіх-небудзь структур кіравання патокам, і Petrobras адчувала ўсё большую патрэбу ў тым, каб дадаць да іх поўную магутнасць праграмавання.
У «Эвалюцыі Lua» (The Evolution of Lua) аўтары мовы пісалі:Lua 1.0 была распрацавана такім чынам, што яе канструктары аб’ектаў, у той час крыху адрозніваючыся ад цяперашняга лёгкага і гнуткага стылю, уключылі сінтаксіс апісання даных SOL (адсюль назва Lua: Sol азначае «Сонца» на партугальскай мове, а Lua азначае «Месяц»). Сінтаксіс Lua для структур кіравання ў асноўным быў запазычаны з Modula (if, while, repeat/until), але таксама быў пераняты ўплыў з CLU (шматлікія прызначэнні і шматлікія вяртанні з выклікаў функцый, як больш простая альтэрнатыва спасылачным параметрам або яўным паказальнікам), C++ («выдатная ідэя дазволіць аб’яўляць лакальную пераменную толькі там, дзе яна нам патрэбна»), SNOBOL і AWK (асацыятыўныя масівы). У артыкуле, апублікаваным у часопісе Dr. Dobb’s Journal, стваральнікі Lua таксама сцвярджаюць, што LISP і Scheme з іх адзіным усюдыісным механізмам структуры даных (спіс) аказалі вялікі ўплыў на іх рашэнне распрацаваць табліцу ў якасці асноўнай структуры даных Lua.
З цягам часу семантыка Lua падвяргалася ўсё большаму ўплыву Scheme, асабліва з увядзеннем ананімных функцый і поўнага лексічнай вобласці. У новых версіях Lua было дададзена некалькі функцый.
Версіі Lua да версіі 5.0 выпускаліся пад ліцэнзіяй, падобнай да ліцэнзіі BSD . Пачынаючы з версіі 5.0 і далей, Lua карыстаецца ліцэнзіяй MIT. Абедзве з’яўляюцца дазвольнымі ліцэнзіямі на бясплатнае праграмнае забеспячэнне і амаль аднолькавыя.
Сінтаксіс
Класічная праграма «Hello, World!» можа быць запісана наступным чынам:print("Hello, World!")або як:print 'Hello, World!'Каментарый у Lua пачынаецца з падвойнага злучка і працягваецца да канца радка, падобна да Ada, Eiffel, Haskell, SQL і VHDL. Шматрадковы тэкст і каментарыі ўпрыгожваюцца падвойнымі квадратнымі дужкамі.
Функцыя фактарыяла рэалізавана як функцыя ў наступным прыкладзе:function factorial(n) local x = 1 for i = 2, n do x = x * i end return x end
Крыніцы
Літаратура (Першае выданне даступна анлайн.)
Раздзелы 6 і 7 прысвечаны Lua, у той час як астатнія прысвечаны шырокаму агляду ПЗ у Бразіліі.
Інтэрв’ю з Раберта Ерусалімскі (Roberto Ierusalimschy). Як магчымасць убудавання паўплывала на дызайн Lua.
Lua papers and theses
Спасылкі
Lua Users , Community Lua Forum LuaDist Lua Rocks — Package manager Projects in Lua
Катэгорыя:Праграмнае забеспячэнне з ліцэнзіяй MIT Катэгорыя:Скрыптовыя мовы Катэгорыя:Мовы праграмавання Катэгорыя:Аб’ектна-арыентаваныя мовы праграмавання Катэгорыя:Свабоднае праграмнае забеспячэнне, напісанае на C Катэгорыя:Свабодныя бібліятэкі праграм Катэгорыя:Свабодныя кампілятары і інтэрпрэтатары Катэгорыя:Мовы з дынамічнай тыпізацыяй Катэгорыя:Кросплатформавае праграмнае забеспячэнне Катэгорыя:Свабоднае кросплатформавае праграмнае забеспячэнне Катэгорыя:Мовы праграмавання высокага ўзроўню