99 бутылок: Lua
Пока ещё помню язык Луа, который я использовал для написания «Морского боя» в азбуке Морзе, надо бы продолжить им сериал о «99 бутылках пива на стене».
73. Lua — скриптовый язык, который чаще всего применяют для встраивания, например — нередко используют для описания сценариев в играх. Объектная модель прототипная, напоминает ДжаваСкрипт, но в Луа она мощнее.
Язык очень простой, учится элементарно, но при этом довольно мощный.
А вот стандартная библиотека подкачала, простой пример — в ней нет функции задержки, когда она мне понадобилась, пришлось её импортировать из Си. Или есть модуль, который хоть
function beer(b)
if b == 1 then
return '1 bottle'
else
return (b == 0 and 'no' or b) .. ' bottles'
end
end
b = beer(99)
for i = 99, 1, -1 do
print(b .. ' of beer on the wall, ' .. b .. ' of beer.')
b = beer(i - 1)
print('Take one down and pass it around, ' .. b .. ' of beer on the wall.\n')
end
print([[No more bottles of beer on the wall, no more bottles of beer.
Go to the store and buy some more, 99 bottles of beer on the wall.]])
Комментарии 12
Её предоставляет окружение (браузер, nodejs, и т.п.)
Очень даже логично, что набор фич такого языка минимален. Это задача автора приложения предоставить соответствующий объект, если он посчитает нужным давать скриптописателям
Втом-то и дело, что задачи «притащить всё» не стоит, это вообще анти-паттерн. Задача — дать возможность подёргать за строго определённые в ТЗ ручки.
какой-то свой птичий язык для конфигурирования настроек при запуске инстанса.)
(Это я со своей колокольни как энтерпрайзного разработчика рассуждаю. Обычно, если надо, мы даём конечным пользователям сильно урезанный JS с конкретным корневым объектом, или вообще пишем
Ответ: да никакая.
Тут не о чем спорить, тут надо понимать, что стоит дозволять менять в поведении приложения юзеру, а что нет. Язык не сам по себе голый, язык служит для экспорта этого поведения в юзерспейс без лишнего груза.
В каком стартовом скрипте? Не понял о чём речь. Причём тут юзеры?
полным-полно логики, для которой скорость не важна, а важна возможность быстро её наляпать без компиляции. Во всяких пошаговых играх такого раньше было полно. Вот эту часть писали на Луа, встраивая его в движок игры.
Возможно я плохо объяснил чем обычно занимается Луа. Предположим, мы 15 лет назад пишем игру на быстром Си++, при этом у нас
Опять же я говорю только про юникодные строки, в обычных менять регистр можно:
���
ryu
UTF-8 подходящих функций нет вовсе.
В модуле
А что касается конкретно Луа, её можно найти даже в прошивке для фотоаппаратов https://chdk.fandom.com/wiki/CHDK — и уж там точно сравнение строк в стандартной либе нафиг не сдалось, там каждый байт памяти на счету.
Сдалось оно там или нет, об этом я не говорю. Там уже //есть// функции приведения регистра (без которых, как я писал, не сравнить строку без учёта регистра, ну может неудачный пример их использования выбрал), просто дляUTF-8 её нет, потому что библиотека — куцая. Вот о чём я.
То есть нужны эти функции или нет — обсуждать бессмысленно, они там есть. Просто недоделанные.
Ой, всё.
Кстати, откуда в вашей голове уверенность, что вы лучше меня понимаете какими должны быть встраиваемые языки — вообще не понятно.
Я поинтересовался историей развития стандартной библиотеки, пока на нём программировал. Ваши слова о том что языку надо и не надо в неё не укладываются.
Поэтому с вашей точкой зрения я не согласен и потому пытался развеять ваше заблуждение. Если не вышло, ну что ж, я изо всех сил пытался.