Lua даже не знает, что индексы массива — числа в диапазоне 1..n, а значения — целые числа, поэтому ему приходится рассчитывать на худший вариант когда однажды в массив запишут вот так:
a['qqq'] = {red = 1, green = 0.5, blue = 0.8}
Это, мягко говоря, неверно. В реализации таблиц в Луа есть оптимизация для поддержки массивов с целочисленными ключами. С этим там хорошо и быстро.
> При записи на языке программирования, вам приходится думать по одному символу за раз:
> «i-n-t e-f-f-e-c-t-i-v-e-n-e-s-s = p-o-w-e-r * (s-u-r-p-r-i-s-e? 3: 2);».
Думать по одному символу за раз? Это как?
У меня набором кода обычно руки занимаются, голова о наборе символов не думает.
ИМХО, изучение слепой печати эффективнее любого «мышиного» интерфейса.
Да, кривая обучения гораздо круче. Но это как с карандашом — десять лет учишься им пользоваться, потом всю жизнь используешь не замечая.
Ненадёжный код нужно помещать в песочницу. (По-хорошему ещё нужно ограничивать память через lua_setallocf и время выполнения через debug.sethook, этого по ссылке нет.)
Если нужно только перехватывать «нелегальные» глобальные переменные (а это полезно делать всегда, не только в песочнице), то нужно повесить на глобальное окружение (это же табличка на самом деле) хитрую метатаблицу, которая будет в __index и __newindex перехватывать обращения и проверять их.
См. etc/script.lua в луашном дистрибутиве. (Здесь — версия, которой я пользуюсь)
a['qqq'] = {red = 1, green = 0.5, blue = 0.8}
Это, мягко говоря, неверно. В реализации таблиц в Луа есть оптимизация для поддержки массивов с целочисленными ключами. С этим там хорошо и быстро.
Майк сожалеет, но у него сейчас недостаточно времени, чтобы отвечать на Хабре.
Он читает письма и отвечает на вопросы в официальной рассылке Луа (на английском): www.lua.org/lua-l.html
По-русски вопросы Майку можно задавать, например, через меня.
thread.gmane.org/gmane.comp.lang.lua.general/75252
Мнение Майка Палла, автора LuaJIT:
article.gmane.org/gmane.comp.lang.lua.general/75265
www.lua.org/work/
en.wikipedia.org/wiki/Kill_A_Watt
roem.ru/2010/04/19/addednews14427/
rsdn.ru/forum/life/3777931.flat.aspx
(Свой пока вроде цел)
en.wiktionary.org/wiki/ditto
Вот отличное издание на английском, если вдруг кто-то хочет прочесть в оригинале.
www.amazon.com/Classic-Feynman-Adventures-Curious-Character/dp/0393061329/
> «i-n-t e-f-f-e-c-t-i-v-e-n-e-s-s = p-o-w-e-r * (s-u-r-p-r-i-s-e? 3: 2);».
Думать по одному символу за раз? Это как?
У меня набором кода обычно руки занимаются, голова о наборе символов не думает.
ИМХО, изучение слепой печати эффективнее любого «мышиного» интерфейса.
Да, кривая обучения гораздо круче. Но это как с карандашом — десять лет учишься им пользоваться, потом всю жизнь используешь не замечая.
Будут проблемы — добро пожаловать в Луашную рассылку, поможем.
www.lua.org/lua-l.html
Если нужно только перехватывать «нелегальные» глобальные переменные (а это полезно делать всегда, не только в песочнице), то нужно повесить на глобальное окружение (это же табличка на самом деле) хитрую метатаблицу, которая будет в __index и __newindex перехватывать обращения и проверять их.
См. etc/script.lua в луашном дистрибутиве. (Здесь — версия, которой я пользуюсь)
Подробнее про проблему можно почитать здесь.