Вопрос

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

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

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

  • Переименование кучи файлов
  • Загрузите некоторые файлы из Интернета
  • Вебскрэппинг

Это из-за отсутствия стандартной библиотеки?

Это было полезно?

Решение

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

Другие советы

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

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

  • Переименование кучи файлов
  • Загрузите некоторые файлы из Интернета
  • Вебскрэппинг

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

Например:

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

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

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

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

К ТВОЕМУ СВЕДЕНИЮ:На самом деле, я пытался использовать Lua для создания веб-страниц, но, в конце концов, я понял, что мне не нужно так сильно заботиться о производительности языка. Узким местом вебскрейпинга является не производительность языка.Узким местом является сетевой ввод-вывод, синтаксический анализ HTML и многозадачность.Все, что мне нужно сделать это убедиться, что программа работает, и найти узкое место.Наконец, я выбрал Python, а не Lua.Есть так много отличных модулей Python;У меня нет причин создавать свой собственный.

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

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

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

Lua имеет меньше библиотек, чем Python.Но обязательно взгляните на Луафорж.В нем есть много интересных библиотек, таких как ЛуаКУРЛ, wxLua или getopt ( получить ).

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

Сайт lua-users.org также содержит много интересных ресурсов, таких как учебные пособия или Lua - Вики.

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

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

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

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

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

  • Заключает строку в кавычки, чтобы оболочка воспринимала ее как одно слово
  • Написание функции для захвата выходных данных команды, как в shell $(command)
  • Написание функции для обхода файловой системы с использованием библиотеки Lua posix и развертывания шаблонов масштабирования оболочки

(Для тех, кому может быть интересно, я оставил код в своем Выпадающий ящик Lua, который также содержит некоторые другие материалы.Интересный материал, вероятно, находится в osutil в os.quote, os.runf, os.capture, и , возможно , os.execve.Глобулизация находится в posixutil.lua.Они оба пользуются услугами Луиса Энрике де Фигерайдо. Библиотека Lua Posix.)

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top