Lua (мова праграмавання)

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
Катэгорыя:Свабодныя бібліятэкі праграм
Катэгорыя:Свабодныя кампілятары і інтэрпрэтатары
Катэгорыя:Мовы з дынамічнай тыпізацыяй
Катэгорыя:Кросплатформавае праграмнае забеспячэнне
Катэгорыя:Свабоднае кросплатформавае праграмнае забеспячэнне
Катэгорыя:Мовы праграмавання высокага ўзроўню