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

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

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

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

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

35
задан Robert Harvey 23 August 2011 в 21:07
поделиться

11 ответов

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

12
ответ дан JesperE 27 November 2019 в 06:28
поделиться

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

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

  • Переименование набора файлов
  • Загрузка некоторые файлы от сети
  • Webscraping

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

, Например:

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

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

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

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

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

Согласно моему опыту о webscraping, я выбрал Twisted для сети I/O и lxml для HTML, анализирующего как бэкенд моей webscraping программы. Я имею, написал статью для введения в эту технологию.

лучший выбор захватить данные из веб-сайтов: Python + Скрученный + lxml

Hope это полезно.

37
ответ дан Earlz 27 November 2019 в 06:28
поделиться

Lua имеет меньше библиотек, чем Python. Но обязательно взгляните на LuaForge. Это имеет много интересных, освобождает, как LuaCURL, wxLua или getopt.

Затем посетите LuaRocks, система управления пакета для Lua. С ним можно искать и установить большинство зрелых модулей Lua с зависимостями. Похоже RubyGems или способность .

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

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

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

23
ответ дан Peter Mortensen 27 November 2019 в 06:28
поделиться

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

10
ответ дан Firas Assaad 27 November 2019 в 06:28
поделиться

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

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

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

(Для тех, кому может быть интересно, я оставил код в моем поле отбрасывания Lua, которое также содержит некоторый другой материал. Интересный материал находится, вероятно, в osutil в os.quote, os.runf, os.capture, и возможно os.execve. globbing находится в posixutil.lua . Они оба использование Luiz Henrique de Figuereido библиотека Lua Posix .)

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

9
ответ дан 2 revs 27 November 2019 в 06:28
поделиться

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

6
ответ дан Peter Mortensen 27 November 2019 в 06:28
поделиться

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

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

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

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

5
ответ дан RBerteig 27 November 2019 в 06:28
поделиться

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

4
ответ дан MattG 27 November 2019 в 06:28
поделиться

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

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

4
ответ дан bortzmeyer 27 November 2019 в 06:28
поделиться

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

3
ответ дан 27 November 2019 в 06:28
поделиться

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

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

4
ответ дан 27 November 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: