Π€Π°ΠΉΠ» lua Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° LUA

ОглавлСниС

ΠœΡ‹ надССмся, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° этой страницС ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΈ Ρ†Π΅Π½Π½Ρ‹ΠΉ рСсурс!

2 Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈ 0 псСвдонимы, Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

βœ… World of Warcraft Interface Configuration

βœ… LUA Source Code

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° .lua.

По Π΄Π°Π½Π½Ρ‹ΠΌ Поиск Π½Π° нашСм сайтС эти ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Π±Ρ‹Π»ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнными Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρƒ:

Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ?

ΠœΡ‹ нашли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² нашСй Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…:

Если Π΄Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ Ρ„Π°ΠΉΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ, Windows провСряСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°. Если Windows распознаСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, Ρ„Π°ΠΉΠ» открываСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, которая связана с этим Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°. Когда Windows Π½Π΅ распознаСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, появляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ сообщСниС:

Windows Π½Π΅ удаСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ»:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ», Windows Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π΅Π³ΠΎ открытия.

Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сопоставлСния Ρ„Π°ΠΉΠ»ΠΎΠ² .lua, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ FAQ.

πŸ”΄ МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²?

ИзмСнСниС ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π½Π΅ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ. Когда Π²Ρ‹ мСняСтС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ способ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ чтСния Ρ„Π°ΠΉΠ»Π°. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»Π° Π½Π΅ измСняСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π°.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ полСзная информация ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° .lua, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½Π°ΠΌ!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·ΠΆΡ‘Π²Π°Π½ΠΎ для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ² ΠΏΠΎ LUA Ρ‡Π°ΡΡ‚ΡŒ1!

Π€Π°ΠΉΠ» lua Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π€Π°ΠΉΠ» lua Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π€Π°ΠΉΠ» lua Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π€Π°ΠΉΠ» lua Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ. Π€ΠΎΡ‚ΠΎ Π€Π°ΠΉΠ» lua Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ Π½Π° языкС Lua

Написанный Π½Π° Lua скрипт Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΎΡΡŒ Π±Ρ‹ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ просто ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ (инструкций), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся, начиная с ΠΏΠ΅Ρ€Π²ΠΎΠΉ инструкции.

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Π½ΡŒ простым, состоящим всСго ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‚Π°ΠΊ ΠΈ вСсьма слоТным, содСрТащим дСсятки, сотни ΠΈ Π΄Π°ΠΆΠ΅ тысячи инструкций. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ инструкции ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой (;). Однако это Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, поэтому вСсь ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ являСтся ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния синтаксиса:

Π Π°Π±ΠΎΡ‚Π° с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² Lua

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² процСссС выполнСния скрипта.

ИмСна ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Lua

ИмСнами (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Lua ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ· Π±ΡƒΠΊΠ², Ρ†ΠΈΡ„Ρ€ ΠΈ символа подчСркивания, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π΅ с Ρ†ΠΈΡ„Ρ€Ρ‹.

Π―Π·Ρ‹ΠΊ Lua Ρ€Π°Π·Π»ΠΈΡ‡Π°Π΅Ρ‚ рСгистр символов, поэтому abc, Abc, ABC ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ слова, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ языком Lua ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

and break do else elseif

end false for function if

in local nil not or

repeat return then true until

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, всС ΠΈΠΌΠ΅Π½Π°, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с символа подчСркивания, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ΄ΡƒΡ‚ Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, _VERSION) Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ.

КакиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Π² Lua?

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Lua ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Если пСрСмСнная Π½Π΅ объявлСна явно ΠΊΠ°ΠΊ локальная, ΠΎΠ½Π° считаСтся глобальной.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Lua

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ пСрСмСнная появляСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ присваивания Π΅ΠΉ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ значСния. Π”ΠΎ присваивания ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ значСния ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π°Ρ‘Ρ‚ nil.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ пСрСмСнная сущСствуСт Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° сущСствуСт срСда исполнСния скрипта ΠΈ доступна Π»ΡŽΠ±ΠΎΠΌΡƒ Lua-ΠΊΠΎΠ΄Ρƒ, выполняСмому Π² этой срСдС.

ΠŸΡ€ΠΈ нСобходимости ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, просто присвоив Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ nil.

g = 1 β€” создаСм Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ g со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 1

g = nil β€” удаляСм Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ g

ВсС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ полями ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° доступна Ρ‡Π΅Ρ€Π΅Π· Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ _G. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ полями глобального окруТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ всС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ саму _G), Ρ‚ΠΎ _G._G == _G.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Lua

Π›ΡŽΠ±Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ явно с использованиСм ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова local. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π² любом мСстС скрипта. ОбъявлСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя присваиваниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ присвоСно, пСрСмСнная содСрТит nil.

local a β€” объявляСм Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ a

local b = 1 β€” объявляСм Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ b, присваиваСм Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1

local c, d = 2, 3 β€” объявляСм Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ c ΠΈ d, присваиваСм ΠΈΠΌ значСния 2 ΠΈ 3

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ начинаСтся послС объявлСния ΠΈ продолТаСтся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Π±Π»ΠΎΠΊΠ°.

ΠžΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ называСтся участок ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, хранящСмуся Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Под Π±Π»ΠΎΠΊΠΎΠΌ понимаСтся:

Ρ‚Π΅Π»ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ конструкции (if-then, else, for, while, repeat);

Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, Π·Π°ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΉ Π² ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова do. end.

Если локальная пСрСмСнная ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π²Π½Π΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π±Π»ΠΎΠΊΠ°, Π΅Ρ‘ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости распространяСтся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° скрипта.

a = 5 β€” глобальная пСрСмСнная a

local i = 1 β€” пСрСмСнная i локальна Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… скрипта

while i 1, 4, 9, 16, 25

local a β€” пСрСмСнная Π° локальна Π²Π½ΡƒΡ‚Ρ€ΠΈ then

local a = 20 β€” пСрСмСнная Π° локальна Π²Π½ΡƒΡ‚Ρ€ΠΈ do-end

Когда Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ вмСсто Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ «засорСния» глобального пространства ΠΈΠΌΡ‘Π½ ΠΈ обСспСчит Π»ΡƒΡ‡ΡˆΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ доступ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² Lua выполняСтся нСсколько быстрСС, Ρ‡Π΅ΠΌ ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ).

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Lua

КакиС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ язык Lua?

Lua ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…:

1. Nil (Π½ΠΈΡ‡Π΅Π³ΠΎ). БоотвСтствуСт ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΡŽ Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ значСния. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ прСдставлСн СдинствСнным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ β€” nil.

2. Boolean (логичСский). К Π΄Π°Π½Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ относятся значСния false (лоТь) ΠΈ true (истина).

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ nil рассматриваСтся ΠΊΠ°ΠΊ false. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ значСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ число 0 ΠΈ ΠΏΡƒΡΡ‚ΡƒΡŽ строку, Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ true.

3. Number (числовой). Π‘Π»ΡƒΠΆΠΈΡ‚ для прСдставлСния числовых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ числовых константах ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ дСсятичный порядок, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ символами Β«eΒ» ΠΈΠ»ΠΈ Β«EΒ». ЦСлочислСнныС числовыС константы ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ прСфикс 0x.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ допустимых числовых констант: 3, 3.0, 3.1415926, 314.16e-2, 0xff.

4. String (строковый). Π‘Π»ΡƒΠΆΠΈΡ‚ для прСдставлСния строк.

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ значСния Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов, Π·Π°ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠΉ Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ:

b = ‘это вторая строка’

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ, Π·Π°ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Π΅ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ C-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ), Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с символа Β«\Β» (ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш):

\t (Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ табуляция),

Π‘ΠΈΠΌΠ²ΠΎΠ» Π² строкС Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн своим ΠΊΠΎΠ΄ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Π³Π΄Π΅ ddd β€” ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Ρ‚Ρ€Ρ‘Ρ… Ρ†ΠΈΡ„Ρ€.

ΠšΡ€ΠΎΠΌΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ для опрСдСлСния строки ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки:

local a = [[Компания Β«ΠšΡ€ΠΎΠ½ΠΎΡΒ»]]

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок позволяСт ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚. Π΅. строка создаётся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ описана:

ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ символы табуляции ΠΈ пСрСноса.

Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ скобки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ‚ΡŒ, ΠΌΠ΅ΠΆΠ΄Ρƒ скобками вставляСтся символ«равно» (=):

local a = [=[ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ строки [[string]] Π² Lua]=]

β€” Π±ΡƒΠ΄Π΅Ρ‚ срока: Β«ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ строки [[string]] Π² LuaΒ»

5. Function (функция). Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Lua ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ записаны Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Ρ‹ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

6. Table (Ρ‚Π°Π±Π»ΠΈΡ†Π°). Π’Π°Π±Π»ΠΈΡ†Π° прСдставляСт собой Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€ Β«ΠΊΠ»ΡŽΡ‡Β» β€” Β«Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ полями илиэлСмСнтами Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Как ΠΊΠ»ΡŽΡ‡ΠΈ, Ρ‚Π°ΠΊ ΠΈ значСния ΠΏΠΎΠ»Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ nil. Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°: Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число элСмСнтов.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ β€” Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† Π² LuaΒ»

7. Userdata (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅). ЯвляСтся особым Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. ЗначСния этого Ρ‚ΠΈΠΏΠ° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ нСпосрСдствСнно Π² Lua-скриптС.

Userdata ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдставлСния Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², созданных Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скрипт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΠ»ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, написанных Π½Π° языкС Π‘. НапримСр, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Lua для Β«CronosPROΒ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ этот Ρ‚ΠΈΠΏ для прСдставлСния Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΊ:

Π±Π°Π½ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (класс Bank);

Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (класс Base);

записи (класс Record) ΠΈ Ρ‚. ΠΏ.

8. Thread (ΠΏΠΎΡ‚ΠΎΠΊ). БоотвСтствуСт ΠΏΠΎΡ‚ΠΎΠΊΡƒ выполнСния. Π­Ρ‚ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ связаны с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ срСдствами самого Lua.

Как Π² Lua Π·Π°Π΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ?

Lua Π½Π΅ прСдусматриваСт явного задания Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ устанавливаСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ присвоСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ значСния. Π›ΡŽΠ±ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого Ρ‚ΠΈΠΏΠ° (Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΎΠ½Π° содСрТала Ρ€Π°Π½Π΅Π΅).

a = 123 β€” пСрСмСнная a ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ number

a = Β«123Β» β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСнная a ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ string

a = true β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСнная a ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ boolean

a = <> β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСнная a ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ table

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° table, function, thread ΠΈ userdata Π½Π΅ содСрТат самих Π΄Π°Π½Π½Ρ‹Ρ…, Π° хранят ссылки Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠŸΡ€ΠΈ присваивании, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° копирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ происходит, ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылки Π½Π° Π½ΠΈΡ….

a = <> β€” создаСм Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Π’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ a помСщаСтся ссылка Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

b = a β€” пСрСмСнная b ссылаСтся Π½Π° Ρ‚Ρƒ ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈ a

a[1] = 10 β€” элСмСнту Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с индСксом 1 присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСпосрСдствСнными значСниями.

Как Π² Lua ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ?

Π’ΠΈΠΏ значСния, сохранённого Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ type. Π­Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° (Β«nilΒ», Β«numberΒ», Β«stringΒ», Β«booleanΒ», Β«tableΒ», Β«functionΒ», Β«threadΒ», Β«userdataΒ»).

t = type («это строка») β€” t Ρ€Π°Π²Π½ΠΎ Β«stringΒ»

t = type (123) β€” t Ρ€Π°Π²Π½ΠΎ Β«numberΒ»

t = type (type) β€” t Ρ€Π°Π²Π½ΠΎ Β«functionΒ»

t = type (true) β€” t Ρ€Π°Π²Π½ΠΎ Β«booleanΒ»

t = type (nil) β€” t Ρ€Π°Π²Π½ΠΎ Β«nilΒ»

t = type (CroApp.GetBank()) β€” t Ρ€Π°Π²Π½ΠΎ Β«userdataΒ»

Как Π² Lua ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ?

Lua ΠΏΡ€ΠΈ нСобходимости автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ числа Π² строки ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. НапримСр, Ссли строковоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ являСтся ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ Π² арифмСтичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΠ½ΠΎ прСобразуСтся Π² число. Аналогично числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ²ΡˆΠ΅Π΅ΡΡ Π² Ρ‚ΠΎΠΌ мСстС, Π³Π΄Π΅ оТидаСтся строковоС, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΎ Π² строку.

a = Β«10Β» + 2 β€” a Ρ€Π°Π²Π½ΠΎ 12

a = Β«10Β» + 2 β€” a Ρ€Π°Π²Π½ΠΎ Β«10 + 2Β»

a = «строка» + 2 β€” Ошибка! НСвозмоТно ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ «строка» Π² число

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² строку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ tostring.

a = tostring (10) β€” a Ρ€Π°Π²Π½ΠΎ Β«10Β»

a = tostring (true) β€” a Ρ€Π°Π²Π½ΠΎ Β«trueΒ»

a = tostring (nil) β€” a Ρ€Π°Π²Π½ΠΎ Β«nilΒ»

a = tostring (<[1] = «это ΠΏΠΎΠ»Π΅ 1Β»>) β€” a Ρ€Π°Π²Π½ΠΎ Β«table: 06DB1058Β»

Из ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ содСрТимоС Ρ‚Π°Π±Π»ΠΈΡ† Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ tostring Π½Π΅ прСобразуСтся. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ render.

a = render (10) β€” a Ρ€Π°Π²Π½ΠΎ Β«10Β»

a = render (true) β€” a Ρ€Π°Π²Π½ΠΎ Β«trueΒ»

a = render (nil) β€” a Ρ€Π°Π²Π½ΠΎ Β«nilΒ»

Для явного прСобразования значСния Π² число ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ tonumber. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ являСтся строкой, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² число (ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ являСтся числом), функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прСобразования, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ nil.

a = tonumber (Β«10Β») β€” a Ρ€Π°Π²Π½ΠΎ Β«10Β»

a = tonumber (Β«10Β»..».5″) β€” a Ρ€Π°Π²Π½ΠΎ 10.5

a = tonumber (true) β€” a Ρ€Π°Π²Π½ΠΎ Β«nilΒ»

a = tonumber (nil) β€” a Ρ€Π°Π²Π½ΠΎ Β«nilΒ»

Расстановка ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² Lua

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² Lua начинаСтся двумя Π·Π½Π°ΠΊΠ°ΠΌΠΈ «минус» (—) ΠΈ продолТаСтся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки.

local a = 1 β€” однострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Если нСпосрСдствСнно послС символов Β«—Β» ΠΈΠ΄ΡƒΡ‚ Π΄Π²Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ([[), ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ являСтсямногострочным ΠΈ продолТаСтся Π΄ΠΎ Π΄Π²ΡƒΡ… Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок (]]).

local a = 1 β€” [[ многострочный

Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ скобки Π² коммСнтариях ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ‚ΡŒ, ΠΌΠ΅ΠΆΠ΄Ρƒ скобками вставляСтся Π·Π½Π°ΠΊ равСнства (=):

local a = [[Компания Β«ΠšΡ€ΠΎΠ½ΠΎΡΒ»]] β€” [=[

local a = [[Компания Β«ΠšΡ€ΠΎΠ½ΠΎΡΒ»]]

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ символов Β«=Β» опрСдСляСт Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ:

local a = [=[ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ строки [[string]] Π² языкС Lua]=]

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, примСняСмыС Π² Lua

Π’ выраТСниях, написанных Π½Π° Lua, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

1. АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Lua ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

^ (Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ);

% (остаток ΠΎΡ‚ дСлСния).

АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊΠ°ΠΊ ΠΊ числам, Ρ‚Π°ΠΊ ΠΈ ΠΊ строкам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² этом случаС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² числа.

2. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния.

Π’ Lua допустимы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния Π²Π΅Π»ΠΈΡ‡ΠΈΠ½:

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true ΠΈΠ»ΠΈ false.

ΠŸΡ€Π°Π²ΠΈΠ»Π° прСобразования чисСл Π² строки (ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚) ΠΏΡ€ΠΈ сравнСниях Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Ρ‚. Π΅. Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Β«0Β» == 0 Π΄Π°Ρ‘Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ false.

3. ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

К логичСским опСрациям относятся:

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ and Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, Ссли ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false ΠΈΠ»ΠΈ nil. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, опСрация Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ (ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ этот ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°).

a = (nil and 5) β€” a Ρ€Π°Π²Π½ΠΎ nil

a == (false and 5) β€” a Ρ€Π°Π²Π½ΠΎ false

a == (4 and 5) β€” a Ρ€Π°Π²Π½ΠΎ 5

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ or Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, Ссли ΠΎΠ½ Π½Π΅ false ΠΈ Π½Π΅ nil, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄.

a == (4 or 5) β€” a Ρ€Π°Π²Π½ΠΎ 4

a == (false or 5) β€” a Ρ€Π°Π²Π½ΠΎ 5

ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ and ΠΈ or ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ значСния Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ and ΠΈ or Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ. Если этого Π½Π΅ трСбуСтся, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π½Π΅ вычисляСтся. НапримСр:

a == (4 or f()) β€” Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f() Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ not всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true ΠΈΠ»ΠΈ false.

4. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ.

Для ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ (объСдинСния) строк слуТит опСрация… (Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ).

a = Β«ΠšΡ€ΠΎΠ½ΠΎΡΒ»..»-«..Β«Π˜Π½Ρ„ΠΎΡ€ΠΌΒ» β€” пСрСмСнная a ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«ΠšΡ€ΠΎΠ½ΠΎΡ-Π˜Π½Ρ„ΠΎΡ€ΠΌΒ»

Если ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ числами, выполняСтся ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² строки.

a = 0..1 β€” пСрСмСнная a ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«01Β»

5. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ получСния Π΄Π»ΠΈΠ½Ρ‹.

Π’ Lua ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° опСрация Π΄Π»ΠΈΠ½Ρ‹ #, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для получСния Π΄Π»ΠΈΠ½Ρ‹ строки.

len = #a β€” len Ρ€Π°Π²Π½ΠΎ 6

len = #Β«Π΅Ρ‰Ρ‘ строка» β€” len Ρ€Π°Π²Π½ΠΎ 10

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Lua

Π’ языкС Lua Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ осущСствляСтся Π² соотвСтствии со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ (Π² порядкС убывания):

Π’Ρ‹Π·ΠΎΠ² скриптов ΠΈΠ· Ρ„ΠΎΡ€ΠΌ

Π‘ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹) связан ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ событий Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π΅Ρ‘ элСмСнтов.

Когда Ρ„ΠΎΡ€ΠΌΠ° запускаСтся, Π΅Ρ‘ скрипт загруТаСтся Π² глобальноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ события Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ Π΅Ρ‘ элСмСнта систСма Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ этому ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ.

НСобходимо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ скрипт Ρ„ΠΎΡ€ΠΌΡ‹, хотя ΠΈ Π½Π΅ содСрТит Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ module, фактичСски являСтся ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² скриптС Ρ„ΠΎΡ€ΠΌΡ‹ Π±Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова local, Π½Π΅ выносятся Π² глобальноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого скрипта. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ доступным для скриптов Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌ, Π΅Π³ΠΎ слСдуСт явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² глобальной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ _G:

Π”Ρ€ΡƒΠ³ΠΎΠΉ скрипт Ρ„ΠΎΡ€ΠΌ смоТСт ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘Π»ΠΎΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (инструкций)

К основным ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ Lua относятся:

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ².

Π“Ρ€ΡƒΠΏΠΏΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объСдинСна Π² Π±Π»ΠΎΠΊ (составной ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€) ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ конструкции do… end.

Π‘Π»ΠΎΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

a = 5 β€” глобальная пСрСмСнная a

local a = 20 β€” Π²Π½ΡƒΡ‚Ρ€ΠΈ do-end опрСдСляСтся локальная пСрСмСнная Π°

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания Π² Lua

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ измСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ поля Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ Π²ΠΈΠ΄Π΅ присваиваниС ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

a = 1 β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1

a = b + c β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a присвоСна сумма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… b ΠΈ с

a = f(x) β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½Π½ΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ f(x)

Π’ Lua допускаСтся Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ мноТСствСнноС присваиваниС, ΠΊΠΎΠ³Π΄Π° нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, находящихся слСва ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ значСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, записанных справа ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания:

a, b = 1, 5*c β€” a Ρ€Π°Π²Π½ΠΎ 1; b Ρ€Π°Π²Π½ΠΎ 5*c

Если ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… большС Ρ‡Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, «лишним» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ присваиваСтся nil.

a, b, c = 1, 2 β€” a Ρ€Π°Π²Π½ΠΎ 1; b Ρ€Π°Π²Π½ΠΎ 2; c Ρ€Π°Π²Π½ΠΎ nil

Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ большС Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, «лишниС» значСния ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

a, b = 1, 2, 3 β€” a Ρ€Π°Π²Π½ΠΎ 1; b Ρ€Π°Π²Π½ΠΎ 2; Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3 Π½Π΅ использовано

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ присваиваниС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΠ±ΠΌΠ΅Π½Π° значСниями ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ:

a = 10; b = 20 β€” a Ρ€Π°Π²Π½ΠΎ 10, b Ρ€Π°Π²Π½ΠΎ 20

a, b = b, a β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ a Ρ€Π°Π²Π½ΠΎ 20, b Ρ€Π°Π²Π½ΠΎ 10

Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (if) Π² Lua

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if провСряСт ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ условия. Если условиС являСтся истинным, выполняСтся Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π·Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом then (сСкция then). Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, выполняСтся ΠΊΠΎΠ΄, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом else (сСкция else).

return a β€” Ссли a большС b, Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ a

return b β€” Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€” Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ b

БСкция else являСтся Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.

ΠŸΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Ρ†ΠΈΠΊΠ»Π° провСряСтся условиС :

Ссли условиС Π»ΠΎΠΆΠ½ΠΎ, Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаётся ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ while;

Ссли условиС истинно, выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°, послС Ρ‡Π΅Π³ΠΎ всС дСйствия ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ.

while i > 0 do β€” Ρ†ΠΈΠΊΠ» ΠΎΡ‚ 10 Π΄ΠΎ 1

Для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎ Π΅Π³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break.

while i > 0 do β€” ΠΈΡ‰Π΅ΠΌ Π² массивС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

MsgBox («ИндСкс ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния: Β»..i)

MsgBox («Массив Π½Π΅ содСрТит ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉΒ»)

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± особСнностях использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° break β€” Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Β«ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ break ΠΈ returnΒ»

Π¦ΠΈΠΊΠ» с постусловиСм (repeat) Π² Lua

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ repeat ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² с постусловиСм ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° условиС Π½Π΅ станСт истинным. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условия осущСствляСтся послС выполнСния Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, поэтому Π² любом случаС Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° выполнится хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

β€” суммируСм значСния массива a, ΠΏΠΎΠΊΠ° сумма Π½Π΅ прСвысит 10

MsgBox (Β«Π‘Π»ΠΎΠΆΠ΅Π½ΠΎ Β»..i..» элСмСнтов. Π‘ΡƒΠΌΠΌΠ° Ρ€Π°Π²Π½Π° «..sum)

Для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎ Π΅Π³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± особСнностях использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° break β€” Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Β«ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ break ΠΈ returnΒ»

Π¦ΠΈΠΊΠ»Ρ‹ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ for Π² Lua

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ допускаСт Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ записи:

ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ (числовой for);

Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ (ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ for).

ΠŸΡ€ΠΎΡΡ‚Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° for

ΠŸΡ€ΠΎΡΡ‚Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° for ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

for var = exp1, exp2, exp3 do

Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° выполняСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° (счётчика) var Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ ΠΎΡ‚ exp1 Π΄ΠΎ exp2, с шагом exp3.

Π¨Π°Π³ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ. Π’ этом случаС ΠΎΠ½ принимаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ 1.

for i = 1, 10 do β€” Ρ†ΠΈΠΊΠ» ΠΎΡ‚ 1 Π΄ΠΎ 10 с шагом 1

ВыраТСния exp1, exp2 ΠΈ exp3 Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ всСго ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π°. Π’Π°ΠΊ, Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅, функция f(x) Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° для вычислСния Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·:

for i = 1, f(x) do β€” Ρ†ΠΈΠΊΠ» ΠΎΡ‚ 1 Π΄ΠΎ значСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ f()

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ†ΠΈΠΊΠ»Π° являСтся локальной для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΠΎ Π΅Π³ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°.

for i = 1, 10 do β€” Ρ†ΠΈΠΊΠ» ΠΎΡ‚ 1 Π΄ΠΎ значСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ f()

MsgBox («ПослС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° i Ρ€Π°Π²Π½ΠΎ Β»..i) β€” НСвСрно! i Ρ€Π°Π²Π½ΠΎ nil

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° нСльзя ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°: послСдствия Ρ‚Π°ΠΊΠΎΠ³ΠΎ измСнСния нСпрСдсказуСмы.

Для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎ Π΅Π³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break.

for i = 1,#a do β€” ΠΈΡ‰Π΅ΠΌ Π² массивС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ языка Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ: история Lua

ΠΎΡ‚ ΠΏΠ΅Ρ€. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» датируСтся 2001 Π³ΠΎΠ΄ΠΎΠΌ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π·Π°Π±Π°Π²Π½Ρ‹ΠΌΠΈ. Π’Π°ΠΊ ΠΆΠ΅ всС отсылки Π½Π° «сСгодня», Β«Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚Β» ΠΈ Ρ‚.ΠΏ. относятся ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Ρƒ.
ИзлоТСниС вСдСтся ΠΎΡ‚ Π»ΠΈΡ†Π° Π°Π²Ρ‚ΠΎΡ€Π°, ΠΊΠ°ΠΊ ΠΈ Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π΅.
ВсС ссылки Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ мною.

ИзлоТСниС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² хронологичСском порядкС. ΠœΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с Π½Π°ΡˆΠΈΡ… экспСримСнтов, Π»Π΅Π³ΡˆΠΈΡ… Π² основу создания Lua Π² 1993, ΠΈ пройдСмся Ρ‡Π΅Ρ€Π΅Π· восСмь Π»Π΅Ρ‚ обсуТдСний, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Ρ€Π°Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΉ.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π•ΡΡ‚ΡŒ старая ΡˆΡƒΡ‚ΠΊΠ°: Β«Π²Π΅Ρ€Π±Π»ΡŽΠ΄ β€” это лошадь, разработанная ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ΠΎΠΌΒ». Π‘Ρ€Π΅Π΄ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² языков программирования эта ΡˆΡƒΡ‚ΠΊΠ° практичСски ΡΡ‚ΠΎΠ»ΡŒ ΠΆΠ΅ популярна, ΠΊΠ°ΠΊ ΠΈ Π»Π΅Π³Π΅Π½Π΄Π° ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ языках. Π›Π΅Π³Π΅Π½Π΄Π° поддСрТиваСтся Ρ‚Π°ΠΊΠΈΠΌΠΈ языками, ΠΊΠ°ΠΊ Algol 68, PL/I ΠΈ Ada, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ ΠΈ Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΠ²ΡˆΠΈΠΌΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ.
Однако, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ΠΎΠ², сущСствуСт Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ объяснСниС частичного ΠΏΡ€ΠΎΠ²Π°Π»Π° этих языков: всС ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Ρ€ΠΎΠΆΠ΄Π΅Π½Ρ‹ большими. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… слСдовал нисходящСму процСссу проСктирования, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ язык ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ описываСтся Π΅Ρ‰Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π΄Π΅Π»Π΅, Π΄Π° ΠΈ Π΄Π°ΠΆΠ΅ Π΄ΠΎ появлСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ компилятора.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, мноТСство ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… языков проявили сСбя Π΅Ρ‰Π΅ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ своСй ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Они слСдовали восходящСму процСссу проСктирования, появившись ΠΊΠ°ΠΊ нСбольшиС языки со скромными цСлями. Когда люди Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ нСдостаточно ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ язык, Ρ‚ΠΎ Π² Π½Π΅Π³ΠΎ добавлялись Π½ΠΎΠ²Ρ‹Π΅ возмоТности (ΠΈΠ»ΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π°, ΡƒΠ΄Π°Π»ΡΠ»ΠΈΡΡŒ), вносилась ΡΡΠ½ΠΎΡΡ‚ΡŒ Π² Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹Π΅ мСста (ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, всС Π΄Π΅Π»Π°Π»ΠΈ Π΅Ρ‰Π΅ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Π΅Π΅). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΡƒΡ‚ΡŒ развития являСтся Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ языка программирования. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, SIGPLAN ΡƒΠΆΠ΅ проспонсировала Π΄Π²Π΅ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ΠΏΠΎ истории языков программирования.

Π’ этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ описываСтся история языка программирования Lua. Π‘ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° своСго появлСния Π² качСствС языка для ΠΏΠ°Ρ€Ρ‹ собствСнных спСцифичных Β«Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ…Β» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Lua ΡƒΡˆΠ΅Π» дальшС Π½Π°ΡˆΠΈΡ… самых оптимистичных ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ. По Π½Π°ΡˆΠ΅ΠΌΡƒ мнСнию Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ успСха Π»Π΅ΠΆΠ°Ρ‚ Π² нашСм ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ языка: ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ сам язык простым ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌ, Π° Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ простой, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ, быстрой, пСрСносимой ΠΈ свободной.

Lua Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ (ΠΈΠ»ΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π²Ρ‹Π΄Π²ΠΈΠ½ΡƒΡ‚) ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ΠΎΠΌ; ΠΏΡƒΡΡ‚ΡŒ ΠΈ малСньким β€” всСго с трСмя Ρ‡Π»Π΅Π½Π°ΠΌΠΈ, β€” Π½ΠΎ ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ΠΎΠΌ. Π—Π°Π΄Π½ΠΈΠΌ числом ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° языка нСбольшим ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сказалась Π½Π° языкС. ΠœΡ‹ добавляли Π½ΠΎΠ²ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π΅Π΄ΠΈΠ½ΠΎΠ΄ΡƒΡˆΠ½ΠΎΠΌΡƒ согласию, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΆΠ΅ случаС ΠΎΠ½Π° ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π»Π°ΡΡŒ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅. Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ возмоТности впослСдствии, Ρ‡Π΅ΠΌ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΡ…. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ позволял ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ язык простым; ΠΈ простота языка β€” это наш самый Ρ†Π΅Π½Π½Ρ‹ΠΉ Π²ΠΊΠ»Π°Π΄. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ качСства Lua β€” ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΠΎΡ‚ Π΅Π³ΠΎ простоты.

Π‘ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… вСрсий Ρƒ Lua Π±Ρ‹Π»ΠΈ «настоящиС» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡ‹ ΠΎΠ΄Π½ΠΈ. Они вносили Π²Π°ΠΆΠ½Ρ‹ΠΉ Π²ΠΊΠ»Π°Π΄ Π² язык обсуТдСниями, ΠΆΠ°Π»ΠΎΠ±Π°ΠΌΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°ΠΌΠΈ ΠΈ вопросами. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, наш малСнький ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ ΠΈΠ³Ρ€Π°Π» Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ: Π΅Π³ΠΎ структура Π΄Π°Π²Π°Π»Π° Π½Π°ΠΌ достаточно инСртности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π±Π΅Π· слСдования всСм ΠΈΡ… прСдлоТСниям.

Начало

Наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ Π² TeCGraf (ΠΎΡ‚ ΠΏΠ΅Ρ€. Β«Π³Ρ€ΡƒΠΏΠΏΠ° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠšΠ°Ρ‚ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΠΎΠ³ΠΎ унивСрситСта Π ΠΈΠΎ-Π΄Π΅-Π–Π°Π½Π΅ΠΉΡ€ΠΎ Π² Π‘Ρ€Π°Π·ΠΈΠ»ΠΈΠΈΒ»), связанный с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ своСго ЯП, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌ PETROBRAS (Π±Ρ€Π°Π·ΠΈΠ»ΡŒΡΠΊΠ°Ρ нСфтяная компания) ΠΏΠΎ нСсколько Ρ€Π°Π· Π² дСнь Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² с исходными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для симуляторов. Π­Ρ‚ΠΎ Π±Ρ‹Π» скучный ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½Ρ‹ΠΉ ошибкам процСсс, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ симуляции Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈ строго Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ исходныС Ρ„Π°ΠΉΠ»Ρ‹, ΡΠΎΡΡ‚ΠΎΡΠ²ΡˆΠΈΡ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ· простых ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ чисСл Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ… Π»ΠΈΠ±ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΉ ΠΊΠ°ΠΊΠΎΠ΅ число Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ число ΠΈΠΌΠ΅Π»ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ смысл, понятный ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ симуляции. PETROBRAS ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ ΠΊ TeCGraf Π·Π° созданиСм графичСского Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ исходным Π΄Π°Π½Π½Ρ‹ΠΌ. Числа ΠΌΠΎΠ³Π»ΠΈ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ послС простого ΠΊΠ»ΠΈΠΊΠ° Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ β€” ΠΈ это Π±Ρ‹Π»ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ простой ΠΈ наглядной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Π½Π΅ΠΆΠ΅Π»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ числовых ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΈ расчСт зависимых Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ ΠΏΠΎ исходным Π΄Π°Π½Π½Ρ‹ΠΌ, сниТая Ρ‚Π΅ΠΌ самым объСм Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° Π·Π°ΠΎΠ΄Π½ΠΎ увСличивая Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ всСго процСсса Π² Ρ†Π΅Π»ΠΎΠΌ.
Для упрощСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этого прилоТСния Π² TeCGraf ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π² простой Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ язык для описания всСх Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сСкции Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ языкС, Π½Π°Π·Π²Π°Π½Π½ΠΎΠΌ Π½Π°ΠΌΠΈ DEL (data entry language):

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ :e ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ (Π½Π°Π·Π²Π°Π½Π½ΡƒΡŽ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Β«gasketΒ»), Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ нСсколько ΠΏΠΎΠ»Π΅ΠΉ со значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ :p Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния Π½Π° значСния Π² gasket, рСализуя Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ DEL Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ выраТСния для описания Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π² DEL это, Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, структура ΠΈΠ»ΠΈ запись Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ЯП. Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π΅ имя появляСтся Ρ‚Π°ΠΊΠΆΠ΅ Π² графичСском ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»Π΅, содСрТащСм Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ вводят Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ описано Ρ€Π°Π½Π΅Π΅.

Π­Ρ‚ΠΎΡ‚ простой язык Π΄ΠΎΠΊΠ°Π·Π°Π» свою ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ Π² TeCGraf, упрощая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Ρ‚Π°ΠΊ ΠΈ срСди ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ простотой Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ Π²Π²ΠΎΠ΄Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. ВскорС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ понадобилось большС возмоТностСй ΠΎΡ‚ DEL, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π±ΡƒΠ»Π΅Π²Ρ‹ выраТСния для контроля готовности сущности ΠΊ Π²Π²ΠΎΠ΄Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ DEL становился тяТСлСС. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ условныС Π±Π»ΠΎΠΊΠΈ ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹, стало ясно, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ язык программирования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Ρ‚ΠΎΠΆΠ΅ врСмя ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ для PETROBRAS, Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΌ PGM: настраиваСмый Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² для литологичСских ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ. Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· названия, ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹, создаваСмыС этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅ΠΊΠΈ, Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚Π°, ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΈ тСксты; Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΠΊΠ° ΠΌΠΎΠ³Π»Π° Π±Ρ‹Ρ‚ΡŒ сСтка, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ свои настройки (логарифмичСская/линСйная, с Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ отсСчками, ΠΈ Ρ‚.Π΄.); каТдая кривая ΠΈΠΌΠ΅Π»Π° собствСнный автоматичСский ΠΌΠ°ΡΡˆΡ‚Π°Π±; ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ВсС эти настройки задавались ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π³Π΅ΠΎΠ»ΠΎΠ³Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌΠΈ, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ слСдовало Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PC с MS-DOS. ΠœΡ‹ посчитали, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ настройки прилоТСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‡Π΅Ρ€Π΅Π· спСциализированный язык описаний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π½Π°Π·Π²Π°Π»ΠΈ Sol: Π°ΠΊΡ€ΠΎΠ½ΠΈΠΌ ΠΎΡ‚ ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Π―Π·Ρ‹ΠΊ (Simple Object Language), Π° Π·Π°ΠΎΠ΄Π½ΠΎ это ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ с ΠΏΠΎΡ€Ρ‚ΡƒΠ³Π°Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ «солнцС».

Π’Π° ΠΊΠ°ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² использовал мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² со мноТСством Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ, ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π² язык. ВмСсто этого, язык позволял ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹. Основной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ описаниС, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ описания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ послСдний Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, слинкованная с основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, основная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π»Π° ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊΠΎ всСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· API Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠ³Π»Π° Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ callback-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ описываСмый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹Π·Ρ‹Π²Π°Π²ΡˆΡƒΡŽΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Π’ΠΎΡ‚ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π½Π° Sol:

На синтаксис Sol ΠΎΠΊΠ°Π·Π°Π»ΠΈ сильноС влияниС BiBTeX ΠΈ UIL (User Interface Language), язык описания интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Motif.
Π’ ΠΌΠ°Ρ€Ρ‚Π΅ 1993 ΠΌΡ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ языка Sol, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ прСдставляли Π΅Π΅. Π’ сСрСдинС 1993 ΠΌΡ‹ поняли, Ρ‡Ρ‚ΠΎ DEL ΠΈ Sol ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ литологичСских ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ вскорС ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ программирования для создания Π±ΠΎΠ»Π΅Π΅ слоТных слоСв. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ ΠΏΠΎ Π²Π²ΠΎΠ΄Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСдства для программирования ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ язык программирования с присваиваниями, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ структурами, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ, ΠΈ всяким Ρ‚Π°ΠΊΠΈΠΌ. Π’Π°ΠΊ ΠΆΠ΅ Π² языкС Π½ΡƒΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ срСдства описания Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Sol. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ мноТСство ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ языка Π½Π΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ программистами, Ρ‚ΠΎ Π² языкС слСдовало ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ слоТного синтаксиса (ΠΈ сСмантики). НаконСц, рСализация Π½ΠΎΠ²ΠΎΠ³ΠΎ языка Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ.

Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ портируСмости ΠΎΠ±Π΅Ρ€Π½ΡƒΠ»ΠΎΡΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· основных достоинств: Ρ‚Π΅ΠΌ Π΄Π²ΡƒΠΌ прилоТСниям (ΠΎΡ‚ ΠΏΠ΅Ρ€. судя ΠΏΠΎ всСму ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π²Π²ΠΈΠ΄Ρƒ DEL ΠΈ Sol) слСдовало Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ, ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» Π±Ρ‹Ρ‚ΡŒ язык. PETROBRAS, ΠΊΠ°ΠΊ госконтора, Π½Π΅ ΠΌΠΎΠ³ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ обСспСчСниС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π·Π°ΠΊΡƒΠΏΠ°Π»ΠΎΡΡŒ с ΠΎΡ‡Π΅Π½ΡŒ ТСсткими ограничСниями Π½Π° Ρ‚Ρ€Π°Ρ‚Ρƒ государствСнных Π΄Π΅Π½Π΅Π³. Из-Π·Π° этого Π² PETROBRAS Π±Ρ‹Π»ΠΎ вСсьма Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ΅ собраниС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, создаваСмоС Π² TeCGraf для PETROBRAS: сюда Π²Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ PC DOS, Windows (3.1 Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚), Macintosh ΠΈ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Unix.

Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Π·ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ язык, Π° Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π½ΠΎΠ²Ρ‹ΠΉ. Π“Π»Π°Π²Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°ΠΌΠΈ Π±Ρ‹Π»ΠΈ Tcl ΠΈ, с большим отставаниСм, Forth ΠΈ Perl. Perl β€” это Π½Π΅ язык Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. Плюс, Π² 1993 Tcl ΠΈ Perl Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Unix ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Π’Π°ΠΊ ΠΆΠ΅ Ρƒ всСх Ρ‚Ρ€Π΅Ρ… языков слоТный синтаксис. И Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ ΠΈΠΌΠ΅Π» Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ описания Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ Π½ΠΎΠ²Ρ‹ΠΌ языком.

ВскорС ΠΌΡ‹ поняли, Ρ‡Ρ‚ΠΎ для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ Π² языкС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ВмСсто этого ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сам язык для написания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ², основанных Π½Π° Π±Π°Π·ΠΎΠ²Ρ‹Ρ… языковых возмоТностях рСфлСксии (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ информация ΠΎ Ρ‚ΠΈΠΏΠ΅ Π²ΠΎ врСмя выполнСния (ΠΎΡ‚ ΠΏΠ΅Ρ€. Ρ€Π΅Ρ‡ΡŒ ΠΏΡ€ΠΎ RTTI)). ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄Π°

допустимоС Π² Sol, Ρ‚Π°ΠΊ ΠΆΠ΅ допустимо Π² Π½ΠΎΠ²ΠΎΠΌ языкС, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ смыслом: ΠΎΠ½ΠΎ создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ) с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ полями, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ track для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π°, для простановки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).
Π’Π°ΠΊ ΠΊΠ°ΠΊ язык Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ вСрсиСй Sol («солнцС»), Π΄Ρ€ΡƒΠ³ Π² TeCGraf ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» имя Lua (Β«Π»ΡƒΠ½Π°Β» ΠΏΠΎ ΠΏΠΎΡ€Ρ‚ΡƒΠ³Π°Π»ΡŒΡΠΊΠΈ), ΠΈ Ρ‚Π°ΠΊ родился язык Lua.

Lua наслСдовал ΠΎΡ‚ Sol синтаксис записСй ΠΈ конструирования списков, Π½ΠΎ объСдинил ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с использованиСм ассоциативных Ρ‚Π°Π±Π»ΠΈΡ†: записи использовали строки (ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ) Π² качСствС индСксов; списки ΠΆΠ΅ использовали цСлочислСнныС индСксы. ΠšΡ€ΠΎΠΌΠ΅ этих возмоТностСй описания Π΄Π°Π½Π½Ρ‹Ρ… Π² Lua Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ Π±Ρ‹Π» Π½ΡƒΠΆΠ΅Π½ Π»Π΅Π³ΠΊΠΈΠΉ язык ΠΎΠ±Ρ‰Π΅Π³ΠΎ примСнСния. Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ с нСбольшого Π½Π°Π±ΠΎΡ€Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… структур, синтаксис ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π» заимствован ΠΈΠ· Modula (while, if, repeat until). Из CLU ΠΌΡ‹ взяли мноТСствСнноС присваиваниС ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ понятный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‡Π΅ΠΌ in-out ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠΎ ссылкС). Из C++ ΠΌΡ‹ взяли идСю Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ области видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² мСстС ΠΈΡ… объявлСния.

Одной ΠΈΠ· Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… (Π΄Π°ΠΆΠ΅ ΠΌΠ΅Π»ΠΊΠΈΡ…) ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΉ Π±Ρ‹Π» синтаксис ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ строк. Π’Π°ΠΊ ΠΊΠ°ΠΊ язык позволял нСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ строк ΠΊ числам, использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° «+» Π±Ρ‹Π»ΠΎ Π±Ρ‹ двусмыслСнным, Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ синтаксис «..» (Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ) для Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π‘ΠΏΠΎΡ€Ρ‹ Π²Ρ‹Π·Π²Π°Π»ΠΎ использованиС «;» (Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой). ΠœΡ‹ считали, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ использования Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой нСсколько Π·Π°ΠΏΡƒΡ‚Π°Π΅Ρ‚ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², Π·Π½Π°ΡŽΡ‰ΠΈΡ… FORTRAN, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΆΠ΅ стороны Π½Π΅ использованиС Π΅Π΅ Π·Π°ΠΏΡƒΡ‚Π°Π΅Ρ‚ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚ C ΠΈΠ»ΠΈ Pascal. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ использования Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой (Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π°).

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ язык Lua ΠΈΠΌΠ΅Π» сСмь Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…: числа (хранящиСся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ), строки, (ассоциативныС) Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, nil (Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΌ nil), userdata (простой C’ΡˆΠ½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для прСдставлСния структур Π΄Π°Π½Π½Ρ‹Ρ… C Π²Π½ΡƒΡ‚Ρ€ΠΈ Lua), Lua Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ C Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. (Бпустя восСмь Π»Π΅Ρ‚ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ языка СдинствСнным ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π² этом спискС стала лишь унификация Lua ΠΈ Π‘ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ). Для сохранСния компактности языка ΠΌΡ‹ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Lisp, nil приводится ΠΊ false, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ значСния приводятся ΠΊ true. Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… экономий ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΆΠ°Π»Π΅Π΅ΠΌ.

Lua Ρ‚Π°ΠΊΠΆΠ΅ пСрСнял ΠΈΠ· Sol ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² качСствС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. РСализация слСдовала ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌΡƒ сСйчас Π­ΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ: «самая простая рСализация, которая ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΒ». ΠœΡ‹ использовали lex для лСксичСского сканСра ΠΈ yacc для синтаксичСского парсСра. ΠŸΠ°Ρ€ΡΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ выполнялся простым стСковым ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π£ языка Π±Ρ‹Π»Π° ΠΎΡ‡Π΅Π½ΡŒ малСнькая стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈ Π±Ρ‹Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² C.

НСсмотря Π½Π° ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ – ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ·-Π·Π° Π½Π΅Π΅ – Lua ΠΏΡ€Π΅Π²Π·ΠΎΡˆΠ΅Π» наши оТидания. Оба ΠΏΡ€ΠΎΠΊΡ‚Π° (PGM ΠΈ ED) ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ использовали Lua (Π° PGM всС Π΅Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ). Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π² TeCGraf Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Lua.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π³ΠΎΠ΄Ρ‹ (1994–1996)

НовыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ запросы. НС ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… запросов Π±Ρ‹Π»ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Lua. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Lua для описания Π΄Π°Π½Π½Ρ‹Ρ… поставили Π½Π΅Ρ‚ΠΈΠΏΠΈΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ скриптового языка.
ВскорС послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Lua, ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» для использования Π² качСствС языка для графичСских ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»ΠΎΠ². ВозмоТности описания Π΄Π°Π½Π½Ρ‹Ρ… Π² Lua ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ графичСский Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Π’ сравнСнии Π² Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ использованиС Lua Π΄Π°Π²Π°Π»ΠΎ всС прСимущСства ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ языка. Π€ΠΎΡ€ΠΌΠ°Ρ‚ VRML, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Javascript для модСлирования ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСоднородности (ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, нСясности) ΠΊΠΎΠ΄Π°. Π‘ Lua объСдинСниС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² описании сцСны происходит СстСствСнно. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ с Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ выраТСниями для модСлирования слоТных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ сохранСнии ΠΎΠ±Ρ‰Π΅ΠΉ ясности.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎ Π²Π²ΠΎΠ΄Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… (ED) Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ, использовавшСй Lua для своих графичСских ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»ΠΎΠ². Π‘Ρ‹Π»ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ с тысячами частСй, описываСмых тысячами элСмСнтов Π² Lua Π² Ρ„Π°ΠΉΠ»Π΅ Π½Π° сотни ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΠ»ΠΎ, Ρ‡Ρ‚ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния языков программирования Lua справляСтся с ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΈ выраТСниями. А Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Lua ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π» Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«Π½Π° Π»Π΅Ρ‚ΡƒΒ» (ΠΊΠ°ΠΊ Β«just-in-timeΒ» компилятор), ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ Ρ‚Π°ΠΊ вСсьма Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ самого Lua компилятора. ΠŸΠ΅Ρ€Π²ΠΎΠΉ ΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠΉ ΠΏΠΎΠ³ΠΎΠ½ΠΈ Π·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠ½ΠΎΡ‚ΡŒΡŽ стал lex. Π—Π°ΠΌΠ΅Π½Π° сканСра, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ lex, Π½Π° самописный ΠΊΠΎΠ΄ практичСски ΡƒΠ΄Π²ΠΎΠΈΠ»ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Lua компилятора.
ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ создали Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠΊΠΎΠ΄Ρ‹ для конструкторов. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для конструктора списков выглядСл Ρ‚Π°ΠΊ:

Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π»ΠΎΡΡŒ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄:

Π‘ Π½ΠΎΠ²ΠΎΠΉ схСмой ΠΊΠΎΠ΄ стал Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Для Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… конструкторов Π½Π΅ Π±Ρ‹Π»ΠΎ возмоТности ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ всС ΠΈΡ… элСмСнты Π² стСк ΠΏΠ΅Ρ€Π΅Π΄ сохранСниСм. Из-Π·Π° этого Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Ρ‹Π΄Π°Π²Π°Π» ΠΎΠΏΠΊΠΎΠ΄ SETTABLE для сброса стСка.
(Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΌΡ‹ всСгда ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ врСмя компиляции. БСйчас Lua ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с 30000 присваиваний Π² ΡˆΠ΅ΡΡ‚ΡŒ Ρ€Π°Π· быстрСС Perl, ΠΈ Π² восСмь Ρ€Π°Π· быстрСС Python).

ΠœΡ‹ выпустили Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Lua с этими оптимизациями Π² июлС 1994 ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Lua 1.1. ВСрсия Π±Ρ‹Π»Π° доступна для скачивания ΠΏΠΎ ftp. ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π°Ρ вСрсия Lua 1.0 Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»Π° доступна ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ. Бпустя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ выпустили ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ с описаниСм Lua.

Π£ Lua 1.1 Π±Ρ‹Π»Π° ограничСнная ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ лицСнзия. Π―Π·Ρ‹ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ свободно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² акадСмичСских цСлях, Π½ΠΎ Π½Π΅ для коммСрчСского использования. (НСсмотря Π½Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ, сам язык всСгда Π±Ρ‹Π» с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ). Но такая лицСнзия Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Perl ΠΈ Tcl, Π±Ρ‹Π»ΠΈ свободны. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ограничСния коммСрчСского использования мСшали Π΄Π°ΠΆΠ΅ акадСмичСскому использованию, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ акадСмичСскиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π² послСдствии Π²Ρ‹ΠΉΡ‚ΠΈ Π½Π° Ρ€Ρ‹Π½ΠΎΠΊ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ выпуск ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ вСрсии языка, Lua 2.1, Π±Ρ‹Π» свободным.

Lua вСрсии 2

Lua 2.1 (Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π² 1995), принСс ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Одно ΠΈΠ· Π½ΠΈΡ… Π±Ρ‹Π»ΠΎ Π½Π΅ Π² самом языкС, Π° Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: ΠΌΡ‹ считали, Ρ‡Ρ‚ΠΎ стоит всСгда ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ язык, ΠΏΡƒΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Ρ†Π΅Π½ΠΎΠΉ нСбольшой ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ нСсовмСстимости.
Π’ вСрсии 2.1 ΠΌΡ‹ внСсли ΠΌΠ½ΠΎΠ³ΠΎ нСсовмСстимостСй с вСрсиСй 1.1 (Π½ΠΎ прСдоставили инструмСнты для ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π² пСрСносС ΠΊΠΎΠ΄Π°). ΠœΡ‹ Π²Ρ‹ΠΊΠΈΠ½ΡƒΠ»ΠΈ синтаксис @ ΠΈΠ· конструкторов Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ использованиС Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок ΠΈ для записСй ΠΈ для списков. ВыбрасываниС @ Π±Ρ‹Π»ΠΎ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎ восприятиС языка, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ Π²Π½Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ.

Π‘ самого Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈ Lua ΠΊΠ°ΠΊ язык Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Π² связи с Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C ΠΌΠΎΠ³Π»ΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΈΠ· Lua. Π‘ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Lua ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ позволяло ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ язык ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π’ вСрсии 2.1 ΠΌΡ‹ Π²Π²Π΅Π»ΠΈ понятиС fallback’ΠΎΠ²: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Lua Π² случаС Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ситуаций. (ΠΎΡ‚ ΠΏΠ΅Ρ€. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ являСтся своСобразным надмноТСством ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ, Π½ΠΎ возмоТностСй большС). Lua становится языком, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ двумя путями: Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Π° Β«ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ…Β» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ… сСмантики Ρ‡Π΅Ρ€Π΅Π· fallback’ΠΈ. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ сСйчас ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Lua Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΌ языком Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.

ΠœΡ‹ объявили fallback’ΠΈ для Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ, сравнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ строк, доступа ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ ΠΈ Ρ‚.Π΄. (ΠΎΡ‚ ΠΏΠ΅Ρ€. ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ‚ΡƒΡ‚ ΠΈ нСсколько Π½Π°ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΡƒΡ‚). ПослС задания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, подобная функция вызываСтся всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ подходят ΠΏΠΎ своим Ρ‚ΠΈΠΏΠ°ΠΌ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€ΠΈ слоТСнии Π΄Π²ΡƒΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ являСтся числом, вызываСтся fallback, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΉ суммы.

ΠžΡΠΎΠ±Ρ‹ΠΉ интСрСс прСдставляСт собой (ΠΈ являСтся Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ появлСния fallback’ΠΎΠ²) опСрация доступа ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅: Ссли ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ x=a[i] Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ a[i] являСтся nil (ΠΎΡ‚ ΠΏΠ΅Ρ€. Ρ‚.Π΅. Ρ‚Π°Π±Π»ΠΈΡ†Π° a Π½Π΅ содСрТит поля i), Ρ‚ΠΎ вызываСтся (Ссли Π·Π°Π΄Π°Π½Π°) fallback функция, Ρ‡Π΅ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для a[i]. Π­Ρ‚ΠΎΡ‚ простой Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» программистам Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сСмантики доступа ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ. Π’ частности, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΈΠ΄ наслСдования Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅:

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ поднимаСтся ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ Β«Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉΒ», ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ поля ΠΈΠ»ΠΈ Π½Π΅ достигнСт ΠΊΠΎΠ½Ρ†Π°. Π‘ этим ΠΊΠΎΠ΄ΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Β«redΒ» Π΄Π°ΠΆΠ΅ Ссли Ρƒ b Π½Π΅Ρ‚ поля с Ρ†Π²Π΅Ρ‚ΠΎΠΌ.

НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ ΠΈΠ»ΠΈ ТСстко прописанного повСдСния Π² Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ»Π΅ Β«parentΒ». Π­Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ имя для поля, ΠΈΠ»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТноС мноТСствСнноС наслСдованиС, позволяя полю Β«parentΒ» самому Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π΅Ρ‰Π΅.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ fallback Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ для выраТСния a[i] Π² случаС, Ссли a Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ являСтся Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. Π­Ρ‚ΠΎ fallback Β«gettableΒ», ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ для получСния значСния a[i] Π² ситуации Π²ΠΈΠ΄Π° x=a[i], ΠΈ fallback Β«settableΒ», ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈ записи Π² a[i] Π² ситуации Π²ΠΈΠ΄Π° a[i]=x.

Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ возмоТностСй использования этих Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… fallback’ΠΎΠ². ΠœΠ΅ΠΆΡΠ·Ρ‹ΠΊΠΎΠ²ΠΎΠ΅ взаимодСйствиС это ΠΎΡ‡Π΅Π½ΡŒ мощная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ: ΠΊΠΎΠ³Π΄Π° a Ρ…Ρ€Π°Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° userdata (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π² C ΠΊΠΎΠ΄Π΅), fallback Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ доступ ΠΊ значСниям Π²Π½ΡƒΡ‚Ρ€ΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ… основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НашС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ТСстко ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ повСдСния Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· основных ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΠ² Lua: ΠΌΠ΅Ρ‚Π°-ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ. ВмСсто замусоривания языка мноТСством возмоТностСй, ΠΌΡ‹ прСдоставили ΠΏΡƒΡ‚ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этих возмоТностСй Ρ‚Π΅ΠΌ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ, ΠΊΠΎΠΌΡƒ это Π½ΡƒΠΆΠ½ΠΎ.

ΠœΠ΅Ρ‚Π°-ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ fallback’ΠΎΠ² позволяСт Lua ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ООП Π² контСкстС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² наслСдования ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ΠœΡ‹ Π΄Π°ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ синтаксичСского сахара для описания ΠΈ использования Β«ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²Β»: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ a:f(x,y,z), ΠΈ Π² этом случаС ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ добавляСтся скрытый ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ self, Π΄Π΅Π»Π°ΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π·ΠΎΠ² a:f(10,20,30) эквивалСнтным a.f(a,10,20,30).

Π’ ΠΌΠ°Π΅ 1996 ΠΌΡ‹ выпустили Lua 2.4. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ этой Π½ΠΎΠ²ΠΎΠΉ вСрсии Π±Ρ‹Π» внСшний компилятор, Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ luac. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π»Π° Lua ΠΊΠΎΠ΄ ΠΈ сохраняла Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ строк Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ для простой Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ пСрСносимости ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ. Π‘ luac ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ парсинга ΠΈ ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΠΎ врСмя запуска, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΊΠ»Π°Π΄Π½ΠΎ, особСнно для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… статичных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ графичСскиС ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»Ρ‹.

Наша пСрвая публикация ΠΏΠΎ Lua ΡƒΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π° рассматривала Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ внСшнСго компилятора, Π½ΠΎ Π½Π°ΠΌ это ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ распространСния Lua Π² TeCGraf ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… графичСских ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»ΠΎΠ² с Lua ΠΊΠΎΠ΄ΠΎΠΌ, создаваСмых графичСскими Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ.

ΠšΡ€ΠΎΠΌΠ΅ ускорСния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ luac позволяСт Ρ‚Π°ΠΊ ΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ синтаксиса ΠΏΡ€ΠΈ компиляции ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ исходного ΠΊΠΎΠ΄Π° ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Однако ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ компиляция Π½Π΅ ускоряСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Lua ΠΈ Ρ‚Π°ΠΊ всСгда ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.

luac Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Β«Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Β», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Lua ΠΊΠ°ΠΊ с простого ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π΄Π°ΠΆΠ΅ Π½Π΅ смотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для доступа ΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ структурам Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… сохранСния. Одним прСимущСством Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ являСтся Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ядра Lua Π½Π° Ρ‡Π΅Ρ‚ΠΊΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Благодаря этому, сСйчас Π»Π΅Π³ΠΊΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ парсинга (лСксСр, парсСр ΠΈ ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€), Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ 40% ΠΊΠΎΠ΄Π° ядра Lua 4.0, оставив лишь ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скомпилированных Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… рСализация Lua для встраивания Π² нСбольшиС устройства Π²Ρ€ΠΎΠ΄Π΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΈΠ»ΠΈ Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ² (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Crazy Ivan, Ρ€ΠΎΠ±ΠΎΡ‚ побСТдавший Π² RoboCup Π² 2000 ΠΈ 2001 Π² Π“Π΅Ρ€ΠΌΠ°Π½ΠΈΠΈ, ΠΈΠΌΠ΅Π» Β«ΠΌΠΎΠ·Π³ΠΈΒ» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° Lua).

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΈΡ€Ρƒ (1996–2000)

Π’ июнС 1996 ΠΌΡ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΡ€ΠΎ Lua Π² Software: Practice & Experience (ΠΎΡ‚ ΠΏΠ΅Ρ€. ΠΏΠΎ ссылкС скачиваниС Π·Π° Π΄Π΅Π½Π΅ΠΆΠΊΡƒ. нашСл Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС судя ΠΏΠΎ всСму Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π½ΡƒΠ» Π² pdf, Ссли ΠΊΠΎΠΌΡƒ интСрСсно). Π’ Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 1996 ΠΆΡƒΡ€Π½Π°Π» Dr. Dobb’s ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΡ€ΠΎ Lua. Π”Π°Π½Π½Ρ‹Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π½Π°Ρ†Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ сообщСства, ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΉ извСстности Lua.

ВскорС послС ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² Dr. Dobb’s ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ мноТСство писСм ΠΏΡ€ΠΎ Lua. Одно ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… писСм Π±Ρ‹Π»ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

Оказалось, Ρ‡Ρ‚ΠΎ Bret Mogilefsky Π±Ρ‹Π» Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ программистом Grim Fandango, основной Π°Π΄Π²Π΅Π½Ρ‡ΡƒΡ€Ρ‹ LucasArts Π² 1997 Π³ΠΎΠ΄Ρƒ. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ письмС ΠΎΠ½ ΠΏΠΈΡˆΠ΅Ρ‚ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ Β«ΠžΠ“Π ΠžΠœΠΠΠ― Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ написана Π½Π° LuaΒ» (Π°ΠΊΡ†Π΅Π½Ρ‚ авторский). Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ использованиС Lua Π² ΠΈΠ³Ρ€Π΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ»ΠΎ ΠΊ языку Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ мноТСства ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π²ΠΎ всСм ΠΌΠΈΡ€Π΅. Бпустя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Lua всС Ρ‡Π°Ρ‰Π΅ стал ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… новостСй Π²Ρ€ΠΎΠ΄Π΅ rec.games.programmer ΠΈ comp.ai.games.
ВслСдствиС нСбольшого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, пСрСносимости ΠΈ простоты ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Lua ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° ΠΈΠ³Ρ€. Π’ нашС врСмя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Lua (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ LucasArts, BioWare, Slingshot Game Technology ΠΈ Loewen Entertainment) ΠΈ Π·Π½Π°Π½ΠΈΠ΅ Lua являСтся ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹ΠΌ прСимущСством ΠΏΡ€ΠΈ поискС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ индустрии. По нашСй ΠΎΡ†Π΅Π½ΠΊΠ΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Lua Π²ΠΎΠ²Π»Π΅Ρ‡Π΅Π½Ρ‹ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΠ³Ρ€, Π½ΠΎ слоТно ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Π΅Π΅ ΠΈΠ·-Π·Π° большой сСкрСтности Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ индустрии. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ…ΠΎΡ‚ΡŒ Bret Mogilefsky ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π» Lua для Grim Fandango, Π½ΠΎ подробности Π½Π΅ доступны ΠΏΡƒΠ±Π»ΠΈΠΊΠ΅.

ВстраиваниС скриптового языка Π² ΠΈΠ³Ρ€Ρƒ Π΄Π°Π΅Ρ‚ нСсколько прСимущСств. Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Ρ‹ΠΉ язык ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для описания спрайтов ΠΈ Ρ„ΠΈΠ·ΠΈΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², управлСния AI ΠΈ пСрсонаТСм, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ для взаимодСйствия с устройствами Π²Π²ΠΎΠ΄Π°. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π΄Π²ΠΈΠΆΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π°Ρ…, ΠΊΠ°ΠΊ Β«ΡƒΡ€ΠΎΠ½Β», Β«ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΒ», Β«ΠΎΡ€ΡƒΠΆΠΈΠ΅Β», ΠΈ Ρ‚.ΠΏ. Π’Ρ‹Π±ΠΎΡ€ простого языка позволяСт ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ инструмСнты. Π­Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ позволяСт Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°ΠΌ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΈΡ… творСниями. Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Ρ‹Π΅ языки Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΡƒΡŽΡ‚ быстрому ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠ².

НС Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ, Π² 2000, LucasArts выпустили Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ Lua, Escape from Monkey Island, которая Π±Ρ‹Π»Π° Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ Π² сСрии Π°Π΄Π²Π΅Π½Ρ‡ΡƒΡ€ Monkey Island. Π’ этой ΠΈΠ³Ρ€Π΅ Π² дань уваТСния Lua Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π±Π°Ρ€ ΠΈΠ· SCUMM (Ρ€Π°Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ язык программирования) Π² Π‘Π°Ρ€ Lua.

Помимо ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ использования Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€Π°Ρ… (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Grim Fandango, Baldur’s Gate, MDK2, Escape from Monkey Island) Lua ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… сфСрах ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ.

Одним ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… мСст ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Lua Π²Π½Π΅ PUC-Rio (ΠΎΡ‚ ΠΏΠ΅Ρ€. Ρ‚ΠΎΡ‚ самый католичСский унивСрситСт Π ΠΈΠΎ-Π΄Π΅-Π–Π°Π½Π΅ΠΉΡ€ΠΎ, ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся TeCGraf) Π±Ρ‹Π»Π° Бмитсоновская астрофизичСская обсСрватория. Они Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π°ΠΏΠ΅Ρ€Ρ‚ΡƒΡ€Ρ‹ для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ воздСйствия ΠΏΠΎΡ‚ΠΎΠΊΠ° Ρ„ΠΎΡ‚ΠΎΠ½ΠΎΠ² Π½Π° физичСскиС прСпятствия. Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° Ρ‡Π°ΡΡ‚ΡŒΡŽ усилий ΠΏΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ AXAF (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠΉ рСнтгСновской астрофизики) β€” Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π’Π΅Π»ΠΈΠΊΠΈΠΉ ΠšΠΎΡΠΌΠΈΡ‡Π΅ΡΠΊΠΈΡ… ΠžΠ±ΡΠ΅Ρ€Π²Π°Ρ‚ΠΎΡ€ΠΈΠΉ NASA.

Performance Technologies использовали Lua для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для CPC4400 β€” ethernet свич с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ горячСй Π·Π°ΠΌΠ΅Π½Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Lua Π² качСствС скриптового языка для CPC4400, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ происходящиС события (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ статус соСдинСния, измСнСния Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ, Ρ‚Ρ€Π΅Π²ΠΎΠ³ΠΈ RMON) со скриптами Π½Π° Lua.

Tollgrade Communications использовали Lua Π² ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ поколСния для тСстирования Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠΉ сСти DigiTest. Lua использовался для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… тСстовых скриптов ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π°.

Lua Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² InCor Heart Institute (Instituto do CoraΓ§Γ£o, SΓ£o Paulo) Π² Π‘Ρ€Π°Π·ΠΈΠ»ΠΈΠΈ, Π² CEPEL (ΠΈΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ†Π΅Π½Ρ‚Ρ€ государствСнной элСктроэнСргСтичСской ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ELETROBRAS) Ρ‚Π°ΠΊ ΠΆΠ΅ Π² Π‘Ρ€Π°Π·ΠΈΠ»ΠΈΠΈ, Π² Weierstrass Institute Π² Π‘Π΅Ρ€Π»ΠΈΠ½Π΅, Π² бСрлинском тСхничСском унивСрситСтС, ΠΈ Π²ΠΎ мноТСствС Π΄Ρ€ΡƒΠ³ΠΈΡ… мСст.

Π’ 1998 Cameron Laird ΠΈ Kathryn Soraiz Π² ΠΈΡ… ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ ΠΏΡ€ΠΎ скриптовыС языки Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ SunWorld подсчитали, Ρ‡Ρ‚ΠΎ Β«Π² ΠΌΠΈΡ€Π΅ Π³Π΄Π΅-Ρ‚ΠΎ ΠΎΠΊΠΎΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сотСн тысяч Lua программистов». По ΠΈΡ… мнСнию это «нСбольшоС число ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉΒ», Π½ΠΎ для нас это явный Π·Π½Π°ΠΊ ΠΊ росту популярности языка.

Lua вСрсии 3

Lua 3.0 (июль 1997) Π·Π°ΠΌΠ΅Π½ΠΈΠ»Π° fallback’ΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Ρ‚Π΅Π³ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Fallback’ΠΈ Π±Ρ‹Π»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ всякий Ρ€Π°Π· ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ события, ΠΏΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ лишь ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ событиС. Π­Ρ‚ΠΎ услоТняло ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Lua ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, использовали Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ наслСдования. Π₯ΠΎΡ‚ΡŒ ΠΈ Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²Π° fallback Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π±Ρ‹Π» ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈ склонным ΠΊ ошибкам, ΠΈ вряд Π»ΠΈ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ стал Π±Ρ‹ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
Π‘ вСрсии Lua 3.0 программист ΠΌΠΎΠ³ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π΅Π³ΠΈ ΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ userdata. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Π΅Π³ΠΎΠ² β€” это, ΠΏΠΎ сущСству, всС Ρ‚Π΅ΠΆΠ΅ fallback’ΠΈ, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Π΅ согласно Ρ‚Π΅Π³Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π‘ Ρ‚Π΅Π³Π°ΠΌΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Ρ‚Π΅Π³ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (ΠΈ userdata) ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ fallback Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для своих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ Ρ‚Π΅Π³ΠΎΠ² прСдлагаСтся Lua для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ‚Π΅Π³ это просто число, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ. Когда Π²Ρ‹ ассоциируСтС Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Ρ‚Π΅Π³ΠΎΠΌ, Π½Π° самом Π΄Π΅Π»Π΅ Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ для этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: Ρ‚ΠΈΠΏ (ΠΈΠ»ΠΈ Ρ‚Π΅Π³) ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ эти ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ fallback’ΠΎΠ², Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… описывало ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Lua Π² ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… ситуациях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ индСксу Π½Π΅ Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹Π·ΠΎΠ²Π° Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ считали, Ρ‡Ρ‚ΠΎ fallback’ΠΈ β€” это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций. Π‘ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚Π΅Π³ΠΎΠ², fallback’ΠΈ (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Ρ‚Π΅Π³ΠΎΠ²) стали основным ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ для описания повСдСния Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π΄Π°ΠΆΠ΅ Π½Π΅ смотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ всС Π΅Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈΡ… для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ повСдСния Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

НСсмотря Π½Π° Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅Π», ΠΌΡ‹ Π΅Ρ‰Π΅ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя воспринимали ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Π΅Π³ΠΎΠ² ΠΊΠ°ΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок ΠΈ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Ρ‚Π΅Π³ΠΈ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. Π›ΠΈΡˆΡŒ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΌΡ‹ поняли всю Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚Π΅Π³ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ‚Π΅Π³ΠΎΠ² ΠΊΠ°ΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². Lua 4.1 Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ это ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ позволяя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° для Ρ‚Π°ΠΊΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (сСйчас ΠΈΠΌΠ΅Π½Π° Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²).

Π’ Lua 3.0 Ρ‚Π°ΠΊ ΠΆΠ΅ появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° условной компиляции Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ Π½Π° C прСпроцСссора. Как ΠΈ любая языковая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эту Π±Ρ‹Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ (Ρ…ΠΎΡ‚ΡŒ это ΠΈ услоТнило лСксСр), ΠΈ вскорС программисты Π½Π°Ρ‡Π°Π»ΠΈ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ (программисты ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π»ΡŽΠ±Ρ‹Π΅ возмоТности языка). ΠŸΡ€ΠΈ появлСнии Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°, сразу растСт спрос Π½Π° Π΅Π³ΠΎ дальнСйшСС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅. Одним ΠΈΠ· самых частых запросов Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ макросов, Π½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ обсуТдСниС Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π²Ρ‹Π»ΠΈΠ»ΠΎΡΡŒ Π² Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈ Π² спискС рассылок, Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°ΠΌΠΈ. КаТдоС ΠΈΠ· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² лСксСрС ΠΈ парсСрС, Π½Π΅ показывая ΠΏΡ€ΠΈ этом явной Π²Ρ‹Π³ΠΎΠ΄Ρ‹. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ прСпроцСссор оставался статичным с Lua 3.0 ΠΈ Π΄ΠΎ вСрсии 3.2 (Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… Π»Π΅Ρ‚).

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ прСпроцСссор причинял большС Π²Ρ€Π΅Π΄Π°, Ρ‡Π΅ΠΌ приносил ΠΏΠΎΠ»ΡŒΠ·Ρ‹, дСлая ΠΊΠΎΠ΄ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ ΠΈ заманивая ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² бСсконСчныС обсуТдСния, ΠΈ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π² Lua 4.0. И Π±Π΅Π· прСпроцСссора Lua стал Ρ‡ΠΈΡ‰Π΅. На протяТСнии Π»Π΅Ρ‚ ΠΌΡ‹ ΡΡ‚Ρ€Π΅ΠΌΠΈΠ»ΠΈΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Lua ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌΠ½Ρ‹Π΅ ΡƒΠ³Π»Ρ‹ языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ считали Π½ΠΎΠ²Ρ‹ΠΌΠΈ возмоТностями, Π½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовались лишь Ρ€Π΅Π΄ΠΊΠΈΠΌΠΈ программистами, Π° Π² послСдствии ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ стали ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ошибками.

Lua вСрсии 4

Π”ΠΎ вСрсии 3.2 Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ «состояниС» Lua-ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Π£ нас Π±Ρ‹Π»ΠΎ API для смСны состояния, Π½ΠΎ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ нСсколько Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ для использования. Для упрощСния ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ API ΠΌΡ‹ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ явный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ состояния Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” Π±Ρ‹Π»ΠΎ лишь ΠΎΠ΄Π½ΠΎ СдинствСнноС глобальноС состояниС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ понятно, Ρ‡Ρ‚ΠΎ это Π±Ρ‹Π»ΠΎ ошибкой. К ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° Lua 3.2 стало ясно, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ прилоТСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΡ‰Π΅, Ссли ΠΎΠ½ΠΈ смогут ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с нСсколькими Lua состояниями. НапримСр, ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Lua 3.2, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ Π² CGILua β€” Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² для ΠΎΡ‚Π΄Π°Ρ‡ΠΈ динамичСских страниц (ΠΎΡ‚ ΠΏΠ΅Ρ€. всС-Ρ‚Π°ΠΊΠΈ имССтся Π²Π²ΠΈΠ΄Ρƒ сСрвСрная сторона) ΠΈ CGI программирования Π½Π° Lua. Π Π°Π½Π΅Π΅, LucasArts Π΄Π΅Π»Π°Π»Π° Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ для Lua 3.1.
ΠŸΡ€ΠΈ обсуТдСнии Π½Π°ΡˆΠΈΡ… ΠΏΠ»Π°Π½ΠΎΠ² ΠΏΠΎ Lua 3.3 Π²Ρ‹ΡΠΎΡ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π±Ρ‹Π» Ρƒ API с явными состояниями. Однако, это ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π»ΠΎ вопрос ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΈΠ·-Π·Π° нСсовмСстимостСй ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ API для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ вСрсии, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стала Lua 4.0. Π’Π΅ΠΏΠ΅Ρ€ΡŒ API Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ содСрТит явныС состояния, Π½ΠΎ ΠΎΠ½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ стало ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ эффСктивнСй. ΠœΡ‹ боялись, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½ΠΎΠ²ΠΎΠ΅ API Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ самым Π³Π»Π°Π΄ΠΊΠΈΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ случай ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² API со Π²Ρ€Π΅ΠΌΠ΅Π½ Lua 1.1. ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ нСсколько ΠΆΠ°Π»ΠΎΠ± Π² спискС рассылок, Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ оказалось Ρ‚Ρ€Π°Π²ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ. МногиС Lua программисты Π½Π΅ взаимодСйствовали нСпосрСдствСнно с API, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ использовали Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· автоматичСскиС инструмСнты, Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ считали, Ρ‡Ρ‚ΠΎ прСимущСства ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‚ Ρ†Π΅Π½Ρƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°.

ΠœΡ‹ выпустили Lua 4.0 Π² ноябрС 2000. ΠšΡ€ΠΎΠΌΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ API, эта вСрсия принСсла ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†ΠΈΠΊΠ».

Всякий Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΉ с языками программирования Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ Β«Ρ€Π°Π·ΠΆΠΈΠ³Π°ΡŽΡ‚ΡΡ Ρ…ΠΎΠ»ΠΈΠ²Π°Ρ€Ρ‹Β» ΠΏΠΎ этому вопросу. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ этих Π²ΠΎΠΉΠ½ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Π΄Π΅Π½Π½Π΅Π΅ Ρ‚Π΅ΠΌΠ°, Ρ‚Π΅ΠΌ ΠΆΠ°Ρ€Ρ‡Π΅ обсуТдСниС. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, люди с большим ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ использованиС Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой, Π½Π΅ΠΆΠ΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка. Одной ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ этого, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС людСй ΠΈΠΌΠ΅ΡŽΡ‚ прСдставлСниС ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅, Π½Π΅ΠΆΠ΅Π»ΠΈ Ρ‡Π΅ΠΌ ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ. Но другая Π±ΠΎΠ»Π΅Π΅ ваТная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² сильной зависимости обыдСнности Ρ‚Π΅ΠΌΡ‹ ΠΎΡ‚ уровня знания языка. Если язык Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для создания ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½Ρ‹Ρ… инструмСнтов, Ссли Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Ρ…Π²Π°Ρ‚ΠΊΠΈ β€” ΠΈΠΌ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π‘ вСрсии 1.1 конструкция for Π±Ρ‹Π»Π° Π² поТСланиях Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Lua. Основной ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²Π° Π±Ρ‹Π»Π° Π·Π°Π±Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ людСй Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° while, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡŽ.

ΠœΡ‹ довольно скоро согласились с этим. Но, Ρ…ΠΎΡ‚ΡŒ ΠΌΡ‹ всС ΠΈ Π±Ρ‹Π»ΠΈ согласны с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΠ³Π»Π°ΡΠΈΡ‚ΡŒΡΡ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ синтаксичСскими конструкциями для Π½Π΅Π³ΠΎ. ΠœΡ‹ считали ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π² стилС Pascal (ΠΈΠ»ΠΈ Modula) слишком ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ элСмСнтам Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ ΠΏΠΎ строкам Ρ„Π°ΠΉΠ»Π°. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° to Π² список Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… слов ΠΏΡ€ΠΈΠ²Π΅Π» Π±Ρ‹ ΠΊ нСдопустимой ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ нСсовмСстимости. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρ†ΠΈΠΊΠ» for Π² стилС C Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΠ» ΠΊ Lua.

Π‘ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΌΡ‹ΠΊΠ°Ρ†ΠΈΠΉ ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² вСрсии 3.1 (июль 1998) ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка. (На самом Π΄Π΅Π»Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² for Π±Ρ‹Π»Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· основных ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ввСдСния Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Lua). Lua 3.1 Π²Ρ‹ΡˆΠ»Π° с двумя ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ функциями для итСрирования:

Ѐункция foreach примСняСт f для всСх ΠΏΠ°Ρ€ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ порядкС ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Ѐункция foreachi ΠΏΠΎΡ…ΠΎΠΆΠ°, Π½ΠΎ рассматриваСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΊΠ°ΠΊ список (ΠΈΠ»ΠΈ массив): ΠΎΠ½Π° ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнты с числовыми ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ Π² порядкС возрастания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π₯ΠΎΡ‚ΡŒ ΠΌΡ‹ ΠΈ прСдоставили Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эти Π΄Π²Π° способа ΠΎΠ±Ρ…ΠΎΠ΄Π°, Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.
Но Ρ…ΠΎΡ‚ΡŒ ΠΈ просто Π±Ρ‹Π»ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅, Π½ΠΎ Π·Π° Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π΄Π²Π° Π³ΠΎΠ΄Π° практичСски Π½ΠΈΠΊΡ‚ΠΎ ΠΈΡ… Π½Π΅ Π΄Π΅Π»Π°Π». ΠŸΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π±Ρ‹Π» дискомфорт для ΠΌΠ½ΠΎΠ³ΠΈΡ… программистов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΌ языкС. А Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ, Π½Π° наш взгляд, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π±Ρ‹Π»ΠΎ отсутствиС нСобходимости для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π³ΠΎΠ΄Ρ‹ ΠΌΡ‹ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π‘ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ этого, ΠΌΡ‹ быстро Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π΄Π²Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ†ΠΈΠΊΠ»Π° for: для числовой ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ для ΠΎΠ±Ρ…ΠΎΠ΄Π° Ρ‚Π°Π±Π»ΠΈΡ†.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for Π±Ρ‹Π» ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² языкС с ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии. Π’ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π» Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ примСнСния Ρ†ΠΈΠΊΠ»ΠΎΠ², Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ для самых ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Π±Ρ‹Π» доступСн while. Π’ΠΎ Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΈΠ·-Π·Π° Π΅Π³ΠΎ строгого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠΊΠΎΠ΄Ρ‹, сдСлавшиС Ρ‡ΠΈΡΠ»ΠΎΠ²ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ с пустым Ρ‚Π΅Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² Π΄Π²Π° Ρ€Π°Π·Π° быстрСС Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Ρ‡Π΅Ρ€Π΅Π· while.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

БСйчас Ρƒ Lua ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠ°ΡΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Π±Π°Π·Π°. АктивСн список рассылки ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° 500 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 30 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… стран ΠΌΠΈΡ€Π°. На сайтС (www.lua.org) ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 500 посСтитСлСй Π² дСнь ΠΈΠ· 50 стран. Π―Π·Ρ‹ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² спСктрС ΠΎΡ‚ Π°Π΄Π²Π΅Π½Ρ‡ΡƒΡ€ Π΄ΠΎ Π²Π΅Π±-свСрвСров ΠΈ Π΄ΠΎ тСстирования Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠΉ сСти для Ethernet свичСй.
НСсколько ftp сСрвСров ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ исходныС ΠΊΠΎΠ΄Ρ‹ Lua, Π° Ρ‚Π°ΠΊΠΆΠ΅ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… сайтов Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ вСрсии для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ DLL для Windows, SIS для EPOC, RPM для Linux, Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ для RISC OS, ΠΈ Ρ‚.Π΄. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΆΡƒΡ€Π½Π°Π»Ρ‹ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ Lua Π½Π° Π΄ΠΎΠ±Π°Π²ΠΎΡ‡Π½Ρ‹Ρ… CD дисках (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Dr. Dobb’s, Linux Magazine France ΠΈ японский C Magazine).

Π’Π°ΠΊΠΆΠ΅ Lua внСс Π²ΠΊΠ»Π°Π΄ Π² Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ благодаря нСскольким тСзисам ΠΈ публикациям ΠΊΠ°ΠΊ ΠΎ самом языкС, Ρ‚Π°ΠΊ ΠΈ ΠΎ Π΅Π³ΠΎ тСхнологичСском использовании.

УспСх ΠΈΠΌΠ΅Π΅Ρ‚ свою Ρ†Π΅Π½Ρƒ. Π’ процСссС ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ языка обратная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ всС сильнСС сдСрТивала ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ‹ Π½Π΅ позволяли совмСстимости ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ прогрСсс β€” это лишь ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² (ΠΏΡƒΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΈ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ) Π² Π°Π»Ρ…ΠΈΠΌΠΈΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π° языков.

НаконСц, ΡƒΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ язык β€” это Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Π΅ΠΌ просто Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ. ВсСцСлоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊ дСталям Π²Π°ΠΆΠ½ΠΎ Π²ΠΎ всСх аспСктах: Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ языка, создании сообщСства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΠΏΡ€ΠΈΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ ΠΊ ΠΈΡ… словам, ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡΡΡŒ Π² Ρ‚ΠΎΠΆΠ΅ врСмя исходных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

Благодарности

Lua Π±Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Π΅Π· ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… людСй. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π² TeCGraf ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π» ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ участиС: использованиС языка, Π΅Π³ΠΎ обсуТдСниС, распространСниС Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ TeCGraf. Особая Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ Marcelo Gattass, Π³Π»Π°Π²Π΅ TeCGraf, ΠΊΡ‚ΠΎ всСгда ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» нас ΠΈ Π΄Π°Π²Π°Π» Π½Π°ΠΌ ΠΏΠΎΠ»Π½ΡƒΡŽ свободу ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ языка ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Lua Π±Ρ‹Π» Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ TeCGraf, ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ доступным Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ Π΅Ρ‰Π΅ Π΄Π°ΠΆΠ΅ Π΄ΠΎ подъСма популярности.
Π‘Π΅Π· ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Lua Π±Ρ‹Π» Π±Ρ‹ просто Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ языком. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΈΡ… Ρ†Π΅Π»ΠΈ β€” это максимальная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° для языка. ΠžΡ‚ Π½ΠΈΡ… ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎ Π±Π°Π³Π°Ρ…, нСдостатках Π΄ΠΈΠ·Π°ΠΉΠ½Π°, Π½ΠΎΠ²Ρ‹Ρ… путях восприятия Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Особая Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ Ρ‡Π»Π΅Π½Π°ΠΌ списка рассылки Π·Π° ΠΈΡ… обсуТдСния, прСдлоТСния ΠΈ, Π² основном, Π·Π° Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π°Ρ€Π½ΠΎΠΌΡƒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ.

ΠΎΡ‚ ΠΏΠ΅Ρ€. Если Ρ‚Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ интСрСсна, Ρ‚ΠΎ ΠΌΠΎΠ³Ρƒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹ΠΌ вСрсиям Lua, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ luajit.
Бпасибо, Ρ‡Ρ‚ΠΎ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ πŸ™‚

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *