LINUX.ORG.RU

Для чего нужен Lua

 


2

0

Если Linux является вашей постоянной средой «обитания», то наверняка вам приходилось иметь дело с интерпретируемыми языками программирования (которые чаще называют языками для написания скриптов), такими как shell, Perl, Python, Ruby. Все они справляются с поставленными задачами, одни лучше, другие хуже, в зависимости от конкретной ситуации. Так зачем же нужен ещё один интерпретируемый язык? Не спешите выносить приговор – давайте сначала рассмотрим все преимущества и недостатки Lua.

Часть 1. Первый взгляд.

В данной статье рассматриваются общие характеристики и базовые элементы языка программирования Lua.

Часть 2. Практическое применение.

В этой части речь пойдет об особенностях Lua, отличающие его от прочих интерпретируемых языков.

Часть 3. Сила в единстве.

В заключительной части мы рассмотрим взаимодействие Lua с другими языками программирования (в частности, с API) и конкретные примеры применения Lua как в свободно распространяемых, так и в коммерческих программах.

>>> Подробности

★★★

Проверено: maxcom ()

есть luajit
lua работает быстрее питона

dimon555 ★★★★★
()

Все скриптовое убожество заруливает Embeddable Common Lisp. Ибо! каждый хоть сколь-нибудь сложный программый проект содержит черезжопную реализацию лисп машины.

Sun-ch
()
Ответ на: комментарий от dimon555

> lua работает во много раз быстрее тормозного жабоскрипта

пруфлинк!

anonymous
()
Ответ на: комментарий от elipse

Возможно, быстродействие lua и lua-gnomе поменяют кредо языка.

Поздно, gjs уже в стандартной поставке гнома3, потому что гном-шелл на нем написан и работает он через gir, то есть все уже забиндили. А быстродействие мозилла уже хорошо допилила и будет продолжать, кроме того есть альтернативный gjs на движке squirellfish, а там глядишь и v8 допилят.

vga ★★
()
Ответ на: комментарий от a3

Нууу... Батенька, право, чтож Вы так... =)))

> Это лишь говорит о обширности функционала :)

Нет. Всего-лишь о том, что для решения простых задач (для примера возьмём упоминавшийся здесь WoW), его хватает. Т.е., есть некий WoW-engine (назовём его так). Там есть «действия» типа MoveTo, ... (собственно, здесь полнее и интереснее -> http://www.wowwiki.com/World_of_Warcraft_API).

Теперь перед нами встаёт задача либо описать некие свои действия (если мы пишем что-то типа «боевой системы для WoW», aka add-on). Некогда, когда я ещё немного поигрывал, для rogue имел что-то подобное ибо запаривает изображать из себя обезьяну, кликая в очередной х.з. какой по счёту раз на кнопку абилки. Гораздо проще прийти на полянку, кликнуть на _одну_ кнопку и пойти спокойно пить кофе, пока перс старательно и с настойчивостью железного идиота вырезает там всё живое, предварительно выполнив PickPocket... =)))

Либо описать действия моба (например, пусть мы пишем некий свой вариант игры). Кстати, в клиентскую часть того же WoW ни кто не заглядывал? А зря...

Для решения этих задач Lua вполне годен. Он не пытается сожрать всю доступную память, свалить в своп и там сидеть хитро облизываясь... =)))

anonymous
()
Ответ на: комментарий от Deleted

Это мне?

> В школу, марш!

Батенька, какая школа?!? Уроки-то уже закончились! Или Вы хотите сказать, что я прогуливаю «продлёнку»? На ЛОРе? Буууугага... =)))

Боюсь, что Вам сюда -> http://lleo.aha.ru/na/

anonymous
()
Ответ на: комментарий от Sun-ch

Все скриптовое убожество заруливает Embeddable Common Lisp.

бггг, вот уж если говорить про убожество - так это ECL... ты хоть видел как он написан?

shty ★★★★★
()
Ответ на: Это мне? от anonymous

Батенька, какая школа?!? Уроки-то уже закончились!

да кто знает какой у Вас там часовой пояс, земля то она круглая или Вам ещё про это не рассказывали?

shty ★★★★★
()
Ответ на: комментарий от tia

Отчасти верно.

> ибо тогда легче написать апи на С и писать на С вместо луа.

На С действительно проще написать API некоторой системы. А потом из Lua-скриптов просто вызывать потребные функции. Если скриптовая часть относительно не велика, то это проще простого действительно описать на С. Но (опять-таки, я про WoW) если мобов много, скрипты для них более-менее похожи («подойти к игроку, ударить последнего по башке, если сопротивляется и жизни осталось мало, то сделать то-то), то почему бы не упростить себе жизнь?

anonymous
()
Ответ на: комментарий от Manhunt

Омг, 3д-сиськи на аватарке. Куда я попал?

anonymous
()
Ответ на: комментарий от shty

Ага...

> земля то она круглая или Вам ещё про это не рассказывали?

Круглая? В натуре? А я-то, дурак, в то время, когда нем по русскому это задавали, всё к Маньке приставал... Теперь вот в ГПТУ учусь... Какое полезное и годное место ЛОР! Подумать только! Как много нового здесь можно узнать при обсуждении мать ея, ТЕХНИЧЕСКОЙ с первого взгляда «проблемы»...

Не перестаю куеть... =)))

anonymous
()
Ответ на: комментарий от dimon555

есть luajit

и lua работает во много раз быстрее тормозного жабоскрипта

lua работает медленнее современных джитовых js-движков. luajit может и быстрее, но он только x86. А нужен хотя бы ARM, и в том же spidermonkey он есть, наверное есть и у эппла и гугла, я не проверял, но как-то ж их армовские поделия работают.

Кроме того, mozilla, google и apple продолжают пилить свои движки, и с каждой версией они все быстрее и добавляются платформы. Даже MS и Opera озадачились своим быстродействием. Команде luajit за этими монстрами банально не угнаться.

vga ★★
()
Ответ на: комментарий от Deleted

> Вот ты и спалился.

Вообщем-то и не прятался. «Люблю» когда меня посылают... Отвечаю как-правило тем же.

Да, по теме есть что или так и продолжим овном перекидываться?

anonymous
()
Ответ на: комментарий от gns

> А в интепретаторе никаких global-locks нет?

Нет.

Я могу позвать несколько интерпретаторов из нескольких потоков?

Да.

grusha
()

Хех, на досуге почитаю. Так как у меня конфиг последнего Осэма не вызывает ужаса, думаю мне это чтиво будет весьма пользительно :)

Ingwar ★★★★★
()
Ответ на: комментарий от anonymous

Анонимус, написавший, что «X не нужно» требует что-то по теме. Всё чудесатее и чудесатее.

Deleted
()
Ответ на: Отчасти верно. от anonymous

Вот я к тому что упрощения то не будет. Другое дело что если требуется использовать интерпретируемый язык, т.е .нет возможности компилировать код. Тогда да, луа имеет вес. А так... Не вижу профита.

tia
()
Ответ на: комментарий от vga

>Хорошее такое заглавие, лоровское, так и просится сказать - не нужен.

А всё началось с господина Уэфа, провозгласившего классическое: «скрипач не нужен».

anonymous
()
Ответ на: комментарий от grusha

Дык! Итить!

>> Я могу позвать несколько интерпретаторов из нескольких потоков?

Да.

Для этого он столь мелким и писался! Это вообще не проблема.

anonymous
()
Ответ на: комментарий от shty

А что с ним не так? Все отлично работает. Линакс тоже местами написан через жопу, но это никого не удивляет.

Sun-ch
()
Ответ на: комментарий от Deleted

Пардон, мессир...

> Анонимус, написавший, что «X не нужно» требует что-то по теме. Всё чудесатее и чудесатее.

Мои сообщения с http://www.linux.org.ru/view-message.jsp?msgid=4511951&lastmod=1265119846901#... как-раз таки говорят о нужности языка... Прощу прощения за открытие «предупредительного огня» в голову без веских на то оснований.

anonymous
()
Ответ на: комментарий от tia

А для Ъ? Я слышал что он удобнее встраивается, но если строить пайтон, то всё в разы красивее и удобнее. Переубедите меня.

Lua для QNX4 даже есть. А ты попробуй в QNX4 питон запихни — позеленеешь.

ob1
()
Ответ на: комментарий от tia

Exactly..

> т.е .нет возможности компилировать код. Тогда да, луа имеет вес. А так... Не вижу профита.

Именно так. И, добавлю, когда API есть, но очень хочется использовать его по-разному (видоизменяя конечный вариант той же игры, например). Тогда очень просто изваять сравнительно небольшое «ядро» системы и, позже, к нему наваять легко изменяемые части (тех же мобов). В таком случае затраты на расширение «игрового мира» меньше, нежели если бы мы использовали что-то имеющее намного больший функционал.

http://www.gamedev.net/reference/programming/features/lua/ (тут про lua в геймдеве, правда, из С++ и под офф-топом, но всё же).

anonymous
()
Ответ на: Пардон, мессир... от anonymous

Поднимаем вверх по этой ветке, и что же мы видим?

Lua надо запретить законадательно, как и прочие велосипеды -perl,rubi (от питона к сожаленью так просто не избавиться- слишком много значительных вещей на нём).А без этих говно-недо-язычков вполне можно прожить.Только неймется некоторым, обязательно -вроде годное приложенье, а зачем-то на каком-нибудь подобном поделии.В результате приходится это г-но держать в системе.Негодуэ!


Так что, ты только что застрелился выстрелом себе в голову.

Deleted
()
Ответ на: комментарий от V_P

Фактически, Lua - это Tcl/Tk наших дней.

Ну вот про наличие в Lua «замены Tk» есть серьезные сомнения. :) Впрочем, он и не для этого.

gns ★★★★★
()
Ответ на: комментарий от Deleted

> Так что, ты только что застрелился выстрелом себе в голову.

Ясно... У меня шизофрения... =)))

anonymous
()
Ответ на: комментарий от tia

> В каком смысле? Интерпритатор толстоват и slow-оват? Да, увы. Но писать код для приложения, в которое он встроен, очень легко, удобно и красиво. Я встраивал CPython в несколько своих приложений, как и lua. Луа же я откинул достаточно скоро из-за синтаксиса ибо тогда легче написать апи на С и писать на С вместо луа. Легче, удобнее, быстрее. А вот на пайтоне выйгрышь мне оказался очень по нраву.

Что за бред. Удобство скриптования зависит в первую очередь от качества API приложения, которое API ты сам должен разработать.

Луа многократно заруливает всякие питоны по простоте и гармоничности. Почитай как-нибудь http://www.lua.org/manual/5.1/manual.html - редкий пример того, насколько все хорошо продумано. Еще очень уважаю разрабов за то, что они всегда жертвовали обратной совместимостью ради чистоты языка и API - и в результате достигли практически идеала.

grusha
()
Ответ на: комментарий от k0valenk0_igor

Да много чего есть. Датчики учета воды и электричества у комунальщиков, системы «умного дома» и вообще любые «массовые» системы сбора данных с двусторонним обменом.

Ну, собственно, я как-то занимался разработкой/поддержкой контроллера банкоматов в одной международной компании, так вот там было именно такое решение. Только скриптовый язык был самодельным и ассемблероподобным.

gns ★★★★★
()
Ответ на: комментарий от gns

> Фактически, Lua - это Tcl/Tk наших дней.

Ну вот про наличие в Lua «замены Tk» есть серьезные сомнения. :) Впрочем, он и не для этого.

И у Tcl - объектности нормальной нет. Есть несколько реализаций, но они все жутко тормозные. А Lua, работает с объектами существенно быстрее да и объектный API для него писать существенно проще.

anonymous
()

Все бы хорошо, но не нужно давать эту херню для расширения пользователями. Зачем пользователю язык расширения, который можно использовать только когда напишешь себе стандартную библиотеку? Penlight отстой.

Ненавижу. Отдельная ненависть метатаблицам.

volh ★★
()
Ответ на: комментарий от volh

Извините, накипело за 5 лет пользования всякими ионами с осомами.

volh ★★
()
Ответ на: комментарий от tia

> Другое дело что если требуется использовать интерпретируемый язык, т.е .нет возможности компилировать код. Тогда да, луа имеет вес.

Это о чем вообще? Зачем вообще скриптование? Чтоб юзер в любой момент мог применить мощь тьюринг-полного языка для управления поведением приложения. А если ты просто повышаешь модульность своего проекта - тогда того, вообще не про то.

grusha
()
Ответ на: комментарий от vga

> Поздно, gjs уже в стандартной поставке гнома3, потому что гном-шелл на нем написан и работает он через gir, то есть все уже забиндили.

Кому нужен твой гном. Ты еще винду вспомни.

А быстродействие мозилла уже хорошо допилила и будет продолжать, кроме того есть альтернативный gjs на движке squirellfish, а там глядишь и v8 допилят.

Веб - зло, браузерный js в частности. Это часть враждебной среды.

grusha
()
Ответ на: комментарий от volh

>Все бы хорошо, но не нужно давать эту херню для расширения пользователями. Зачем пользователю язык расширения, который можно использовать только когда напишешь себе стандартную библиотеку?

вот тут guile рулит

anonymous
()
Ответ на: комментарий от grusha

Кому нужен твой гном. Ты еще винду вспомни.

Вообще-то я отвечал elipse на сообщение о lua-gnome, и оно там процитировано, а тебе похоже надо научиться читать.

vga ★★
()
Ответ на: комментарий от V_P

Фактически, Lua - это Tcl/Tk наших дней

не без этого. чем он лучше, правда, не совсем понятно

jtootf ★★★★★
()
Ответ на: комментарий от Sun-ch

А что с ним не так? Все отлично работает.

работает, но, к примеру, не позволяет запускать больше одного интерпретатора на поток... сейчас уже не помню точно ибо ковырялся с ним на заре 2009, но помню что удивлялся регулярно :)

и саппорт/камьюнити там просто «отличное» в виде полудохлого форума на котором только ветер дует и изредка появляется разработчик со словами «я никому ничего не должен - пилите сами если надо» :)

хотя тут надо уточнить что для встраивания ничего лучше ECL всё равно на текущий момент нет

Линакс тоже местами написан через жопу, но это никого не удивляет.

ну что Вы, даже сам Линус порой горюет, хотя вслух не высказывает конечно, ощущает значит что что-то не так :)

но если так говорить, то нет сколько нибудь сложного софта что называется «без греха»

shty ★★★★★
()
Ответ на: комментарий от gns

> Да много чего есть. Датчики учета воды и электричества у коомунальщиков, системы «умного дома» и вообще любые «массовые» системы сбора данных с двусторонним обменом.

Извините, но и «да» и «нет». Похоже, всё-таки у меня шизофрения? =)))

Но шутки в сторону. В отличие от сети банкоматов такого рода системы более подвержены «влиянию со стороны». Всегда есть риск получения доступа со стороны третьих лиц. В случае с Lua более вероятно перепрограммирование системы «умного дома», отвечающей за, к примеру, подачу газа, нежели в случае с вариантом на С (С++), базирующийся на той же ОС eCOS (как пример, т.к. иной раз работаю с последней). Что может получиться в итоге?

5% ЕМНИП смесь природного газа и воздуха, искра... «Ваккумная бомба» или «термобарический боеприпас». Согласитесь, это вполне возможная версия.

Лучше уж (не дай Бог, конечно), пусть колупают бинари, нежели скриптик подправят... ;) IMHO, конечно, но как-то не по себе иной раз становится...

anonymous
()
Ответ на: комментарий от anonymous

Ему к Tcl/Tk как раком до луны, особенно Tk.

а можно развёрнутей? интересно же, а руки до Lua никак не дойдут

jtootf ★★★★★
()
Ответ на: комментарий от grusha

Я иронизировал.

Эх, жаль, что смайл «сарказм» запантетовали, не распознал, сорри. :-) Вброс годный. Просто тут есть личности, которые такое и всерьез могут сказать.

vga ★★
()
Ответ на: комментарий от tia

> но если строить пайтон, то всё в разы красивее и удобнее

А что в питоне уже можно делать restricted environments или вообще хоть как-то ограничивать встроенные скрипты?

ntp
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.