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

24. KiXtart. Язык пакетных файлов. Достаточно простой, наглядный и функциональный. Интересны конструкции вывода на экран и принципы построения функций. Функции (точнее подпрограммы) можно строить при помощи блока Function или, как в BASIC'е, через GOSUB и метки. Что мне понравилось - KiXtart предоставляет большую свободу в форме записи. Так, например, операторы можно разделять переводом строки, табуляциями, пробелами.

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


; Beer song. Written by Evgeny Stepanischev

Function Beer($n)
  If $n
    $n
  Else
    "No"
  Endif

  " bottle"
  If $n<>1 "s" Endif
EndFunction


FOR $beer = 99 TO 1 STEP -1
  Beer ($beer) " on the wall, "
  Beer ($beer) " of beer."

  ? "Take one and pass around,"

  ? Beer ($beer-1)
  
  " on the wall."??

NEXT

"No more bottles of beer..." ?
"Go to the store and buy some more..." ?
"99 bottles of beer."



25. Omens (Object manageMENt System). Язык, сочетающий в себе черты C, C++ и Java. Например, конструции он унаследовал от C, принципы работы с указателями и ссылками - из C++, а описания классов - из Java.

В данный момент язык и система разработки (компилятор в платформо-независимый байт-код и интерпретатор) находятся в стадии бета-тестирования. Наверное, поэтому циклы for и while интерпретатор (даже в файлах примеров) выполнять отказался из-за чего мне пришлось использовать рекурсию.

Сам Omens разрабатывался, как платформонезависимая среда со встроенным облегченным механизмом описания и манипулирования сложными данными, в том числе и с базами данных (DB2, Oracle, MS SQL, dBASE, MS Access, ...). Из интересных особенностей - у программы может быть несколько точек входа.

Программа, выводящая песню о пиве (beer.oms)


//  Beer song. Written by Evgeny Stepanischev

class beer {
        private void PrintBeer(byte n) {
                if (n>0)
                system.out.print(lang.ltoa(n)); else
                system.out.print("No");
                system.out.print(" bottle");

                if (n!=1) system.out.print("s");
        }


        private void For(byte i) {
                PrintBeer(i);
                system.out.print(" on the wall, ");
                PrintBeer(i);
                system.out.print(" of beer.");

                system.out.println("Take one and pass around,\n");
                PrintBeer(i-1);
                system.out.print(" on the wall.\n\n");
                if (i>1) For(i-1);
        }


        public void main() {
                For(99);

                system.out.print("No more bottles of beer...");
                system.out.println("Go to the store and buy some more...");
                system.out.println("99 bottles of beer.");
        }
};


17 мая 2001 22:24

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

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