99 бутылок: Batsh, VIM script
Потихоньку возобновил наполнение раздела «99 бутылок пива на стене» — тут я пишу американскую считалочку про пиво на различных языках программирования. Добавились языки VIM script и Batsh. Первый используется в консольном редакторе vim для написания внутренних скриптов, второй — для кроссплатформенного написания
Batsh мне вообще понравился своей идеей — простой
50. Batsh — чрезвычайно лёгкий в освоении язык
// Песня о пиве на языке Batsh Степанищева Евгения
function bottles(bottle){
if (bottle == 0) {
return "no bottles";
}
if (bottle == 1) {
return "1 bottle";
}
return bottle ++ " bottles";
}
i = 99;
while (i > 0) {
b = bottles(i) ++ " of beer";
println(b, "on the wall,", b ++ ".");
i = i - 1;
println("Take one down and pass it around,", bottles(i), "of beer on the wall.\n");
};
println("No more bottles of beer on the wall, no more bottles of beer.");
println("Go to the store and buy some more, 99 bottles of beer on the wall.");49. VIM Script — встроенный скриптовый язык программирования консольного редактора VIM. Синтаксис довольно обычен, учится легко. Мощный для своего класса — обилие встроенных функций, довольно согласованный синтаксис, различные типы массивов. Есть интересные особенности, например, возможность явного переопределения функций, префиксы переменных для явного определения зоны видимости (например, префикс «a:» у меня в функции — это аргументы) или функции, которые могут принимать
" написал Евгений Степанищев bolknote.ru"
:function Bottles(bottle)
: return get(["no bottles", "1 bottle"], a:bottle, a:bottle . " bottles")
:endfunction
:for beer in range(99, 1, -1)
: let b = Bottles(beer) . " of beer"
: echo b "on the wall," b . "."
: echo "Take one down and pass it around, " . Bottles(beer-1) . " of beer on the wall.\n"
:endfor
:echo "No more bottles of beer on the wall, no more bottles of beer."
:echo "Go to the store and buy some more, 99 bottles of beer on the wall."
Комментарии 4
Опечаточка )
Думаю так правильнее для Batsh