LINUX.ORG.RU

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

 


2

0

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

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

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

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

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

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

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

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

★★★

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

Туомо однажды решил, что на нем конфиги и расширения писать удобно - вот и мучаемся

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

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

Вывод - надо писать простой софт.

ога, как только придумают волшебную кнопку «сделать всё как я хочу», то все именно так и будут писать :)

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

Туомо однажды решил, что на нем конфиги и расширения писать удобно - вот и мучаемся

а чего мучаетесь то? цэ ж не кактус

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

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

Ну звиняйте, случайно напечатал «/Tk» - это как Карл Маркс и Фридрих Энгельс, Роксана и Бабаян :)

Конечно же, Lua это Tcl наших дней, а на роль Tk наших дней возьмем Gtk, то есть, тоже tk, но только G :)

V_P
()

К сожалению у lua очень маленькое комьюнити и мало сторонних модулей. А когда luaforge целую неделю лежал даже их достать было невозможно.

Помимо встраивания куда-нибудь для реализации несложной логики его использовать очень неудобно.

Ну и стоит выразить отдельную ненависть за отсутствие целых типов (использовать double всюду на встраиваемых системах? - нет пути) и ООП более неудобное даже чем в джаваскрипте (хотел написать «убогое», но это все таки не так).

ntp
()

2vga: хотел попросить ответить на вопросы в старой теме про серверный жабаскрипт, а ты оказывается уже ответил. спасибо)

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

Не совсем так...

> проще Tcl API?

Скорее всего, да. На самом деле, вопрос достаточно сложен чтобы на него отвечать в две-три строки.

Если Tcl больше относится к shell-подобным интерпретаторам, то Lua не предоставляет такой «роскоши». Это, скорее «просто язык» для «просто скриптов». Это язык именно для run-time. Интерактивность минимальна. Отсюда более скромные возможности и характеристики. И, кстати, отсюда же, направленность Lua на «встраиваемость» в приложения.

Хотя... Хотя просто сравнивая LuaForge и Tcl Extension Archive вкупе с Great Unified Tcl/Tk Extension Repository, я бы сказал что да, Lua и проще и скромнее. Если брать Lua в чистом виде.

anonymous
()

Lua не нужен!!

... простите, не удержался

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

>Удобство АПИ и написания кода на встраиваемом языке - пайтон.

для фанатов питона и для тех кто согласен мириться с тем что в системе ворочается этот монстр. но любителей мало.

tommy ★★★★★
()
Ответ на: Не совсем так... от anonymous

И, кстати, отсюда же, направленность Lua на «встраиваемость» в приложения.

кстати, интересный вопрос - как Lua выглядит в сравнении с REBOL? последний успешно обходит Tcl в вопросах встраиваемости, а с выходом REBOL3 переходит в категорию языков с открытой реализацией

скорей бы релиз, эх

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

> Ну и стоит выразить отдельную ненависть за отсутствие целых типов (использовать double всюду на встраиваемых системах? - нет пути)

Решается редактированием luaconf.h (там есть соответствующие комментарии).

ООП более неудобное даже чем в джаваскрипте (хотел написать «убогое», но это все таки не так).

ООП вообще не существует, это баззворд, - а что в Lua не так с таблицами и табличными методами?

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

> кстати, интересный вопрос - как Lua выглядит в сравнении с REBOL?

Скажу сразу — не в курсе. Даже не прмиходило в голову интересоваться этим вопросом. «Полянки» (области применения), IMHO, уж слишком разные. Кстати, тут уважаемые писали про применение Lua в качестве альтернативы javascript... Так я то же в сомнении, знаете ли... Ну слишком уж разные это вещи по своим возможностям.

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

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

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

число тех кто всё ещё считает что tcl приемлемый язык даже встраиваемых систем - стремительно уменьшается. до Lua его существование оправдывало хотя бы не очень большая требовательность к ресурсам.

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

Опередили... =)))

> Решается редактированием luaconf.h (там есть соответствующие комментарии).

Согласен на все 100.

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

число тех кто всё ещё считает что tcl приемлемый язык даже встраиваемых систем - стремительно уменьшается

4.2 :)

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

>> число тех кто всё ещё считает что tcl приемлемый язык даже встраиваемых систем - стремительно уменьшается

4.2 :)

Ты клонируешь себя? O_o

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

Ты клонируешь себя? O_o

как минимум - коллег подсаживаю

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

> Луна нужна, но с метатаблицами и наследованием там можно моск сломать...

http://www.wowace.com/addons/liboop/pages/getting-started/

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

rainy
()

Стиль изложения статей хорош. Примеры понятны, для старта - это самое лучшее описание LUA, которое я видел.

Однако, в статьях не раскрыта тема передачи данных в LUA из C, и передача результатов вычислений в C из LUA. А без знания этих механизмов смысла запускать LUA-скрипты из C-программ просто нет.

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

luajit может и быстрее,

не может, а быстрее

на х86, а мне арм нужен.

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

> 35К (если не ошибаюсь) размер полного интерпретатора в скомпилированном виде.

Ошибаетесь. 150-190К. Но все равно это хорошо, я считаю.

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

>Кстати, тут уважаемые писали про применение Lua в качестве альтернативы javascript... Так я то же в сомнении, знаете ли... Ну слишком уж разные это вещи по своим возможностям.

А где разница? Они же один в один друг на друга похожи. Я чтото пропустил?

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

>Почитай как-нибудь http://www.lua.org/manual/5.1/manual.html - редкий пример того, насколько все хорошо продумано.

А как насчет вот этого? http://lua-users.org/wiki/LuaModuleFunctionCritiqued Без костылей или побочных эффектов подключать модули в Луа нельзя.

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

Это я к «взрыву мозга» от метатаблиц. Они правда, не то что бы не логичны, просто очень не удобные.

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

Однако, в статьях не раскрыта тема передачи данных в LUA из C, и передача результатов вычислений в C из LUA. А без знания этих механизмов смысла запускать LUA-скрипты из C-программ просто нет.

бггг :) не, ну надо же... первая тема в 3-й статье «Программный интерфейс Lua C API»

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

и вообще гугл «штоле» «зобанили» уже?

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

QNX4 нынче уже не очень актуален; Tcl ещё пять лет назад работал в QNX 6.2.1 :)

Таки 6.2.1 не очень актуален, т.к. уже давно есть 6.4.1, в котором есть pkgsrc. Да и без pkgsrc подавляющее большинство опенсорса собирается без проблем. В QNX6 даже Qt собирается. ;-}

QNX4 всё ещё актуален, т.к. время жизни проектов разработанных для него достаточно большое. Тем более, что недавно выходило обновление.

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

В QNX6 даже Qt собирается. ;-}

собирали, знаем :)

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

>А где разница? Они же один в один друг на друга похожи. Я чтото пропустил?

Похожи. Отличаются тем, что жабаскрипт - самый популярный ЯП в мире ( по используемости ). Возможности ведь это не только сам язык, но и коммьюнити, и библиотеки. Да и направления же совсем разные, жс как создавался для веба, так для веба и останется по большому счету. Может быть через несколько лет все приятности луа вольются в какой-нибудь ecma10 и останется только один уберязык )

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

>> Однако, в статьях не раскрыта тема передачи данных в LUA из C, и передача результатов вычислений в C из LUA. А без знания этих механизмов смысла запускать LUA-скрипты из C-программ просто нет.

бггг :) не, ну надо же... первая тема в 3-й статье «Программный интерфейс Lua C API»


Сразу видно человека, который эту самую статью не читал. В данной статье рассказывается только о том, как запустить скрипт LUA из-под C. О передаче данных там ни слова.

xintrea
()

Lua не нужен.

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

> Без костылей или побочных эффектов подключать модули в Луа нельзя.

Можно, просто не надо подключать кривые модули с сайд-эффектами.

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

Паскалист это ущербное существо которое ищет где бы не поставить begin end для уменьшения громоздкости кода. А ещё паскаль обладает жутко неоднородным синтаксисом. Почему while do, но if then?

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

> И у Tcl - объектности нормальной нет.

Ну во-первых уже есть встроенное OO с 2008 года в Tcl 8.6.
Хотя есть аналогичные потуги и для Lua, но сомнительна их надобность.
Вначале создаются простые вещи, потом говоря что вот то < подставить нужное> уже rip клепают аналогичную гору разного барахла - ничего нового в этом. У каждого поколения программеров свои игрушки.

Есть несколько реализаций, но они все жутко тормозные.


смотря для чего.

А Lua, работает с объектами существенно быстрее да


возможно

и объектный API для него писать существенно проще.


Сомнительно и особенно глядя на биндинги lua к gnome (и как долго их рожали) и сравнивая их с gnocl для tcl.

1. Tcl рангом выше и создавался прежде всего ДЛЯ людей, Lua таки больше под задачи заточен.

2. Стабильность api и синтаксиса tcl это уже исторический факт
- в Lua это еще надо будет посмотреть.

3. Диагностика ошибок в Lua - ну это нечто, собачий нюх нужен ))

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

>Паскалист это ущербное существо которое ищет где бы не поставить begin end для уменьшения громоздкости кода

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

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

Тебе обидно что паскаль (язык для школьников) назвали языком с громоздким синтаксисом? Ведь это же правда!

Я видел варианты лиспа где уровни вложенности обозначались не скобками, но они были ущербнее в плане читаемости чем вариант со скобками.

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

> число тех кто всё ещё считает что tcl приемлемый язык даже встраиваемых систем - стремительно уменьшается.

tclkit без tk весит аж 500 кB - и это больше возможностей чем в Lua.

до Lua его существование оправдывало хотя бы не очень большая требовательность к ресурсам.


Ну глупость же. Ресурсы дешевеют и вряд ли сегодня появился Lua.

И кстати, есть и eTCL.

elipse ★★★
()

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

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

> а на роль Tk наших дней возьмем Gtk, то есть, тоже tk, но только G :)

Привсе моей любви к Gnome и gtk, сравнивать tk и gtk минимум не корректно.

elipse ★★★
()

Кстати, для тех кому не нравится синтаксис lua. Существует язык программирования, который пытается решать те же задачи, что и lua но имеет C/C++ подобный синтаксис: http://squirrel-lang.org/

ssvb
()

в закладки, за обедом буду листать

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

> содержит черезжопную медленную реализацию половины лисп машины

fixed

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

> бггг :) не, ну надо же... первая тема в 3-й статье «Программный интерфейс Lua C API»

Сразу видно человека, который эту самую статью не читал. В данной статье рассказывается только о том, как запустить скрипт LUA из-под C. О передаче данных там ни слова.

ну, там написано главное :) остальное легко гуглится, о чём я в следующем посте и дописал :)

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