Pull to refresh

Comments 15

Лет 5-6 назад писал на LUA скрипты для PtokaX (сервер для пиринговых сетей) — было довольно-таки занимательно. Даже прибыльно, ввиду тогдашнего бума на хабы и отсутствие разнообразия скриптов, которыми и заманивали к себе пользователей их держатели. Особенно популярны были игрушки, вроде викторины и виселицы.

Спасибо, вспомнил былые времена, а заодно и ознакомился с изменениями, которые претерпел язык за последние несколько лет.
>> Помогает размять мозг.
Скорее, не размять, а разжижить :) А в целом, интересно написали.

А вы не подскажете, какие редакторы распространены и удобны для lua?
Lua довольно компактный язык, так что, мне кажется, подойдёт любой удобный вам редактор, благо подсветка синтаксиса есть почти везде, а сам он очень прост (лично я использовал лёгкий Geany).
Если честно, я не знаю специализированных IDE под Lua, но, учитывая его основное применение, полагаю это готовые SDK и редакторы игр.
Для Windows можно скачать заточеную версию SciTE с дебагером и прочими вкусностями.
Я пишу на Lua в основном для Awesome, поэтому использую Emacs — обычный дебагер мне не нужен, там немного другой подход.
Уже 2 года работаю в QDE(http://www.quotixsoftware.com/programs.htm), ещё чуть более удобный редактор Decoda (http://www.unknownworlds.com/decoda).Decoda умеет аттачиться к любому процессу из диспетчера задач и открывать существующие там lua скрипты. Куча функций, ловит брейкпоинты.
Мне кажется, статья была бы уместнее в блоге «Языки программирования» — тема ненормальности не раскрыта :-)
Да, наверное вы правы. Хотя, наличие Brainfuck всё же позволяет, пусть и с некоторой натяжкой, отнести статью к ненормальному программированию) Спасибо за совет, последующие публикации о Lua буду размещать в блоге «Языки программирования»
К теме о ненормальности подходило бы ближе, если код был написан на С/С++. К сишному коду подключался интерпретатор lua (у lua есть такой интерфейс), в lua скрипте была функция, которая на вход принимает путь к брейнфак файлу и выполняла его :)
Да, пожалуй так было бы ненормальнее) Правда я планировал в следующей статье написать о взаимодействии C и Lua и рассмотреть механизм передачи объектов между C и средой Lua. Вот там будет код на C который будет загружать Lua который сможет исполнить Brainfuck =)
Как насчёт обмена объектами между C++ и Lua? ;) Недавно я занимался встраиванием Lua в C++ проект и очень понадобилась следующая фича: объект C++ должен быть представлен в Lua тоже как объект, т.е. иметь методы. Это как бы проецирование C++ объекта на Lua. Хорошего решения я не придумал, а сделал неудобный костыль: к классу нужно было дописать статические методы и хитрым образом вызывать методы.

Например у нас есть класс (у этого класса может быть сотня методов):
class GF
{
public:
  byte mul(byte, byte);
};


Хочется сделать некое простое движение, чтобы в Lua можно было написать так:
local gf = ...
local xy = gf.mul(0x12, 0x76)


Я не знаю как это сделать, чтобы было удобно. Может быть вы придумаете.
А есть преимущество перед реализацией того же на более распространенных языках?
В сущности преимуществ нет. Brainfuck довольно прост и реализовать его можно, пожалуй, на любом языке (исключая особенно редкие и странные). Хотя, такую реализацию довольно легко можно встроить в некоторую игру-головоломку. Наверное это единственное стоящее преимущество.
Большое вам спасибо =)
Пока я писал свой интерпретатор с помощью вашего кода, я выучил Brainfuck!
Only those users with full accounts are able to leave comments. Log in, please.