Подтвердить что ты не робот

Lua как язык сценариев общего назначения?

Когда я вижу Lua, единственное, что я когда-либо читал, "отлично подходит для встраивания", "быстрого", "легкого" и чаще всего: "World of Warcraft" или, вкратце, "WoW".

Почему это ограничивается вложением всего этого в другое приложение? Почему бы не написать сценарии общего назначения, например, с Python или Perl?

Lua, по-видимому, отлично справляется с такими аспектами, как скорость и использование памяти (самый быстрый язык скриптинга afaik), так почему же я никогда не вижу, чтобы Lua использовался как "настольный скриптовый язык" для автоматизации задач? Например:

  • Переименование пучки файлов
  • Загрузка некоторых файлов из Интернета
  • Webscraping

Это недостаток стандартной библиотеки?

4b9b3361

Ответ 1

Просто потому, что он "продается" (в некотором общем смысле) как язык специального назначения для встроенных движков script, не означает, что он ограничен этим. Фактически, WoW, вероятно, мог бы также выбрать Python в качестве встроенного языка сценариев.

Ответ 2

Lua - классный язык, легкий и очень быстрый!

Но дело в следующем: Является ли производительность настолько важной для тех задачи, о которых вы говорили?

  • Переименование пучки файлов
  • Загрузка некоторых файлов из Интернета
  • Webscraping

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

Например:

  • Стоимость 3 часа для написания программы C/С++, для обработки данных один раз, для выполнения программы потребуется 1 час.
  • Стоимость 30 минут, чтобы написать программу Python для обработки данных один раз, программа займет 10 часов.

Если вы выберете первый вариант, вы сохраните время для запуска программы, но вы тратите свое время на разработку программы.

С другой стороны, если вы выберете вторую, вы потратите время на запуск программы, но вы можете делать другие вещи, когда программа Бег. Как играть в World of Warcraft, убить монстров с твоим колдуном? Ешьте мой D.O.T!: P

Что это! Хотя Lua не так сложно писать, все, что касается Lua, предназначено для повышения эффективности. И что еще, для Lua мало модулей, но для Python существует так много модулей. Вы не хотите переносить библиотеку C для Lua только для запуска программы, не так ли? Вместо этого вы можете выбрать Python и использовать этот модуль для достижения своей задачи. Это может быть лучше.

FYI: Вообще-то, я пытался использовать Lua для создания веб-видео, но, наконец, я понял, что мне не нужно так много заботиться о языковой производительности. Узким местом веб-сканирования является а не на производительности языка. Узкое место включено сетевой ввод-вывод, разбор HTML и многозадачность. Все, что я должен сделать убедитесь, что программа работает, и найдите узкое место. Наконец, я выбрал Python, а не Lua. Существует так много превосходных модулей Python; У меня нет причин строить мои самостоятельно.

Согласно моему опыту в области webscraping, я выбрал Twisted для сетевых операций ввода-вывода и lxml для синтаксического анализа html в качестве бэкэнд моей программы webscraping. Я написал статью для ознакомления с этой технологией.

Лучший выбор для захвата данных с сайтов: Python + Twisted + lxml

Надеюсь, что это будет полезно.

Ответ 3

У Lua меньше библиотек, чем у Python. Но обязательно посмотрите LuaForge. В нем много интересных библиотек, таких как LuaCURL, wxLua или getopt.

Затем посетите LuaRocks, систему управления пакетами для Lua. С его помощью вы можете искать и устанавливать наиболее зрелые модули Lua с зависимостями. Это похоже на RubyGems или aptitude.

На сайте lua-users.org есть много интересных ресурсов, например, учебники или Lua Wiki.

Что мне нравится в Lua, это не его скорость, это ее минимальный основной язык, гибкость и расширяемость.

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

Ответ 4

Вероятно, потому, что Lua был разработан как язык сценариев и расширений. На официальном сайте

Ответ 5

Это социологический вопрос, а не вопрос программирования.

Я использую Lua для сценариев общего назначения почти исключительно. Но мне пришлось написать несколько сотен строк кода, чтобы Lua играл лучше с оболочкой. Это включало такие трюки, как

  • Цитирование строки, поэтому она рассматривается как одно слово оболочки
  • Написание функции для захвата вывода команды в командной строке
  • Написание функции для обхода файловой системы с использованием библиотеки Lua posix и расширения шаблонов оболочки globing

(Для тех, кто может быть заинтересован, я оставил код в своем Lua drop box, который также содержит некоторые другие вещи. вероятно, в osutil в os.quote, os.runf, os.capture и, возможно, os.execve./a > Они оба используют Luiz Henrique de Figuereido Lua Posix library.)

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

Ответ 6

Определенно недостаток стандартных библиотек. Он также менее известен, чем Python, Perl или Ruby.

Ответ 7

Отсутствие стандартной библиотеки. Период. Даже перечисление всех файлов в каталоге требует нестандартного модуля.

Есть веские причины для этого (сохраняя строгую совместимость ANSI, не требуя POSIX), но в результате для общего программирования я предпочитаю Python.

Ответ 8

Недавно был сделан запуск для установки батарей для Lua на Windows. Результат можно найти в проекте Lua для Windows в LuaForge. Он включает в себя интерпретатор и большую коллекцию дополнительных модулей, позволяющих писать и использовать полезные сценарии и приложения из коробки.

Я знаю, что разные дистрибутивы Linux включают в себя Lua и некоторые модули сейчас, и еще больше.

В списке рассылки также обсуждается несколько предлагаемых библиотек модулей, но сообщество пока не остановилось на одном из "официальных" механизмов.

Я использую Lua как язык сценариев и как "основной" цикл моего типичного приложения, поддерживаемый одной или несколькими DLL, содержащими код, который лучше реализован на C, или обертывание существующих библиотек или функций API, которые необходимы конкретный проект. Используется с инструментарием GUI, например IUP или wxLua (привязка Lua для wxWindows), Lua делает запись приложений с небольшим или средним графическим интерфейсом довольно приятным.

Ответ 9

Я думаю, что ответ о том, что это "маркетинговая" вещь, вероятно, правильный, наряду с отсутствием большого набора библиотек на выбор. Я хотел бы указать на другой случай: Рубин. Ruby должен быть языком сценариев общего назначения. Проблема в том, что, поскольку Ruby on Rails поднялась настолько, что становится трудно найти что-то, что не связано с Rails. Я боюсь, что Луа тоже пострадает от этого, будучи популярным из-за нескольких важных вещей, которые он использует, но никогда не сможет избавиться от этой стигмы.

Ответ 10

Чтобы Lua легко вставлять, он должен иметь несколько зависимостей и быть небольшим. Это делает его плохо подходящим как язык сценариев общего назначения. Поскольку использование этого языка как общего назначения script потребует большого количества стандартных библиотек. Но если у Lua было много стандартных библиотек, было бы сложнее внедрить (из-за зависимостей и объема памяти).

Ответ 11

Lua используется в LuaTeX, расширение TeX, как внедренный язык, и быстро завоевало популярность среди разработчиков TeX из-за что. Он используется в качестве языка сценариев для некоторых утилит в дистрибутиве TeX Live, будь то только потому, что теперь существует двоичный файл luatex, доступный на всех платформах, который также может использоваться как интерпретатор Lua (с добавлением некоторых жизненно важных модулей - slnunicode, luafilesystem и т.д.). Это очень важно для установок Windows, которые раньше использовались в дополнительных инструментах для сценариев Unix (ActivePerl и т.д.). Язык макросов ConTeXt широко использует Lua-скрипты в настоящее время.

Это, по общему признанию, очень специальное поле:-) Но совершенно не связано с играми!