99 бутылок пива. Исполняют Miva и Ruby

22. Miva. Доступ к этому языку я получил чисто случайно. Будем считать, что я нашел распечатки парочки программ на этом языке на улице. Это недалеко от истины, ибо документацию по Miva я в глаза не видел.

Итак Miva - это скриптовый полнофункциональный язык, применяемый исключительно в Веб-программировании. Синтаксис, на мой взгляд, несколько неуклюж, что, впрочем, легко объяснимо способом его внедрения, и неоправданно многословен. Из интересных особенностей - разделение локальных, глобальных и системных (?) переменных через объекты "l", "g" и "s".

Скрипт, выводящий песню о пиве (beer.mv)


<HTML><MIVA STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">

<MvCOMMENT>
| Beer song. Written by Evgeny Stepanischev
</MvCOMMENT>

<MvFUNCTION NAME="Beer" PARAMETERS="n">
<MvIF EXPR = "{ l.n NE 0 }">&[ l.n ]<MvELSE>No</MvIF>
bottle<MvIF EXPR = "{ l.n NE 1 }">s</MvIF>
of beer</MvFUNCTION>

<MvASSIGN NAME = "g.i" VALUE = 99>

<MvWHILE EXPR = "{ g.i GE 1 }">
<MvEVAL EXPR="{ Beer(g.i) }"> on the wall, <MvEVAL EXPR="{ Beer(g.i) }">.<BR>
Take one and pass around,<BR>
<MvASSIGN NAME = "g.i" VALUE = "{ g.i - 1 }">
<MvEVAL EXPR="{ Beer(g.i) }">
on the wall.<BR><BR>

</MvWHILE>

No more bottles of beer...<BR>
Go to the store and buy some more...<BR>
99 bottles of beer.


</HTML>



23. Ruby. Скриптовый язык, очень похожий на Перл. Отличия есть и даже очень много, но тем не менее. Как и предыдущем языке, есть префиксные различия между глобальными (начинаются на "$" или "@") и локальными переменными. Из странностей - конструкцию "1?2:3" не удалось заставить работать с локальными переменными. Возможно это фича языка, но, имхо, чисто идеологически обосновать ее трудно.

Скрипт, выводящий песню о пиве.


# Beer song. Written by Evgeny Stepanischev

def Beer (n)
  if n!=0 then
    print n
  else
    print 'No'
  end

  print " bottle"
  print "s" unless n==1
end

$i = 99

while $i>0 do
  Beer ($i)
  print " on the wall, "
  Beer ($i)
  print "\nTake one and pass around,\n"
  $i-=1;
  Beer ($i)
  print " on the wall.\n\n"
end

print <<EOF
No more bottles of beer...
Go to the store and buy some more...
99 bottles of beer.
EOF


30 апреля 2001 15:33

Андрей (инкогнито)
18 августа 2012, 23:09

Хм... Решил эту задачку совсем по-детски :) Но главное для программиста-результат:)
n=99
while n!=0
puts n.to_s+' бутылок пива на борту '
puts n.to_s+' на борту
берешь одну, пускаешь ко дну'
n=n-1
puts n.to_s+' осталось на борту'
end
puts 'Нет бутылок пива на борту!
Нет бутылок пива!
Пойди в магазин и стяни ещё,
99 бутылок пива на борту!'

bolk (bolknote.ru)
19 августа 2012, 10:35, ответ предназначен Андрей

Что заставило вас комментировать заметку, которой 11 лет?

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)