99 бутылок: Эллочка
58. Эллочка. Мне написал автор языка программирования «Эллочка» с предложением написать на нём «99 бутылок…», как вы знаете, у меня есть хобби — писать такие программы на разных языках.
Для этого языка есть единственный, авторский интерпретатор под ДОС (и очень важно использовать в файле программы символы перевода ДОС/Виндоуз, иначе ничего не будет работать), а сам язык напоминает странноватый Бейсик, без поддержки функций и процедур. Их можно эмулировать, используя трюк со специальной переменной «@», которая содержит номер текущей строки.
В языке есть ряд интересных возможностей, но их затмевают недостатки разного калибра, что характерно для языков без сообщества. Даже в таком простом примере мне пришлось побороться за работоспособность программы. Например, перед числами
!99 beer song by Evgeny Stepanischev
!Used variables: B, R, $1
B=99
@cycl
R=@+2
goto @beer
list ' of beer on the wall, '
R=@+2
goto @beer
list '.'\
list 'Take one down and pass around'\
decr B
R=@+2
goto @beer
list ' of beer on the wall.'\
list ''\
wait
clsc
esli B >> 0; @cycl
list 'No more bottles of beer on the wall, no more bottles of beer.'\
list 'Go to the store and buy some more, 99 bottles of beer on the wall.'
exit
@beer
esli B >> 0; +3\
list 'No bottles'
goto R
esli B == 1; +5\
$1=B
$1=%MID($1,2,10)
list $1+' bottles'
goto R
list '1 bottle'
goto R
Комментарии 1
Я очень рад, что у Вас получилось решение данной задачи. Что касается описанных недостатков языка, то все не идеально! :)
Однако, замечу, что перед цифрами выводится не знак табуляции, а просто пробел вместо пропущенного знака «+», для отрицательных чисел пробелов нет.
Прокрутки экрана нет, потому что под ДОС все равно нельзя было вернуть на экран то, что ушло наверх, так какой смысл поднимать туда содержимое экрана?
Разумеется, язык давно надо переделать в подоконный вариант, но до этого у меня руки не дошли и уже вряд ли дойдут. Тем более, что актуальность языка, увы, давно пропала. Но я сам и сейчас использую некоторые свои утилиты на этом языке. А трансляторы языка brainfuck, написанные на Эллочке, и вовсе считаю большим успехом.
Но к сожалению, на Вин8 досовские программы не запускаются без специального эмулятора, так что, возможно, мне все же придется писать подоконную версию. Лично мне этот язык все же пока нужен.
Желаю успехов!