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

шматпарадыгменная мова праграмавання From Wikipedia, the free encyclopedia

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

Lua (лю́а; з парт.: lua [ˈlu.(w)ɐ], што азначае месяц) — легкаважная, высокаўзроўневая, шматпарадыгменная мова праграмавання, распрацаваная галоўным чынам для ўбудаванага выкарыстання ў прыкладных праграмах[2]. Lua з’яўляецца кросплатформавай мовай, паколькі інтэрпрэтатар скампіляванага байт-кода напісаны на ANSI C[3], і Lua мае адносна просты API для C, што спрашчае яе ўбудаванне ў прыкладных праграмах[4].

Хуткія факты Клас мовы, З’явілася ў ...

Lua паўстала ў 1993 годзе як мова для пашырэння прыкладнога ПЗ для задавальнення попыту на наладжванне, які ўзрастаў у той час. Яна забяспечвала асноўныя магчымасці большасці працэдурных моў праграмавання, але больш складаныя або прадметна-спецыфічныя магчымасці не былі ўключаны; хутчэй, яна ўключала механізмы для пашырэння мовы, што дазваляе праграмістам рэалізоўваць такія функцыі. Паколькі Lua задумвалася як агульная ўбудаваная мова пашырэнняў, праекціроўшчыкі Lua сканцэнтраваліся на паляпшэнні яе хуткасці, партатыўнасці, пашыральнасці і прастаты выкарыстання пры напісанні праграм.

Remove ads

Гісторыя

Lua быў створаны ў 1993 годзе Раберта Ерусалімскім (Roberto Ierusalimschy), Луісам Энрыке дэ Фігейрэда (Luiz Henrique de Figueiredo) і Вальдэмарам Селесам (Waldemar Celes), членамі Групы тэхналогій камп’ютэрнай графікі (Tecgraf) у Папскім каталіцкім універсітэце Рыа-дэ-Жанэйра ў Бразіліі.

З 1977 па 1992 год у Бразіліі дзейнічала палітыка жорсткіх гандлёвых бар’ераў (так званых рынкавых рэзерваў) для камп’ютэрнага абсталявання і праграмнага забеспячэння. У такой атмасферы кліенты Tecgraf не маглі сабе дазволіць ні палітычна, ні фінансава купляць індывідуальнае праграмнае забеспячэнне з-за мяжы. Гэтыя прычыны падштурхнулі Tecgraf да распрацоўкі неабходных асноўных інструментаў з нуля.[5]

Папярэднікамі Lua былі мовы апісання/канфігурацыі даных SOL (мова простых аб’ектаў, англ.: Simple Object Language) і DEL (мова ўводу даных, англ.: data-entry language)[6]. Яны былі незалежна адна ад адной распрацаваны ў Tecgraf у 1992—1993 гадах, каб дадаць некаторую гнуткасць у два розныя праекты (абодва былі інтэрактыўнымі графічнымі праграмамі для інжынерных прыкладных праграм у кампаніі Petrobras). У SOL і DEL не хапала якіх-небудзь структур кіравання патокам, і Petrobras адчувала ўсё большую патрэбу ў тым, каб дадаць да іх поўную магутнасць праграмавання.

У «Эвалюцыі Lua» (The Evolution of Lua) аўтары мовы пісалі:[5]

« «У 1993, адзіным сапраўдным сапернікам быў Tcl, які быў выразна зпраектаваны каб быць убудаваным у прыкладное ПЗ. Тым не меней, Tcl меў незвычны сінтаксіс, не мог прапанаваць добрай падтрымкі апісання даных і мог запускацца толькі на Unix-платформах. Мы не разглядалі LISP або Scheme з прычыны іх недружалюбнага сінтаксіса. Python быў яшчэ ў зачатку. У свабоднай зрабі-сам атмасферы, якая пазней запанавала ў Tecgraf, было даволі натуральным паспрабаваць распрацаваць нашу асабістую сцэнарную мову ... З-за таго, што большая частка патэнцыйных карыстальнікаў не былі бы прафесійнымі праграмістамі, мова павінна была пазбягаць таямнічага сінтаксіса і семантыкі. Пры прыўнясенні новай мовы ў жыццё мы павінны былі зыходзіць з яе партатыўнасці, бо кліенты Tecgraf мелі вельмі разнастайны набор камп’ютарных платформ. І, нарэшце, паколькі мы чакалі, што іншым прадуктам Tecgraf спатрэбіцца ўбудаванне сцэнарнай мовы, новая мова павінна была прытрымлівацца прыкладу SOL і пастаўляцца як бібліятэка з API для C».
»

Lua 1.0 была распрацавана такім чынам, што яе канструктары аб’ектаў, у той час крыху адрозніваючыся ад цяперашняга лёгкага і гнуткага стылю, уключылі сінтаксіс апісання даных SOL (адсюль назва Lua: Sol азначае «Сонца» на партугальскай мове, а Lua азначае «Месяц»). Сінтаксіс Lua для структур кіравання ў асноўным быў запазычаны з Modula (if, while, repeat/until), але таксама быў пераняты ўплыў з CLU (шматлікія прызначэнні і шматлікія вяртанні з выклікаў функцый, як больш простая альтэрнатыва спасылачным параметрам або яўным паказальнікам), C++ («выдатная ідэя дазволіць аб’яўляць лакальную пераменную толькі там, дзе яна нам патрэбна»[5]), SNOBOL і AWK (асацыятыўныя масівы). У артыкуле, апублікаваным у часопісе Dr. Dobb’s Journal, стваральнікі Lua таксама сцвярджаюць, што LISP і Scheme з іх адзіным усюдыісным механізмам структуры даных (спіс) аказалі вялікі ўплыў на іх рашэнне распрацаваць табліцу ў якасці асноўнай структуры даных Lua.[7]

З цягам часу семантыка Lua падвяргалася ўсё большаму ўплыву Scheme[5], асабліва з увядзеннем ананімных функцый і поўнага лексічнай вобласці. У новых версіях Lua было дададзена некалькі функцый.

Версіі Lua да версіі 5.0 выпускаліся пад ліцэнзіяй, падобнай да ліцэнзіі BSD . Пачынаючы з версіі 5.0 і далей, Lua карыстаецца ліцэнзіяй MIT. Абедзве з’яўляюцца дазвольнымі ліцэнзіямі на бясплатнае праграмнае забеспячэнне і амаль аднолькавыя.

Сінтаксіс

Класічная праграма «Hello, World!» можа быць запісана наступным чынам:[8]

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
Remove ads

Крыніцы

Літаратура

Спасылкі

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads